Ejemplo n.º 1
0
  /**
   * This is the web service method that creates a new account 1. Creates an account object using
   * the parameters from KC and the default Account table 2. Creates an account automatic
   * maintenance document and puts the account object into it 3. Returns the status object
   *
   * @param AccountAutoCreateDefaults
   * @return AccountCreationStatusDTO
   */
  @Override
  public AccountCreationStatusDTO createAccount(AccountParametersDTO accountParameters) {

    AccountCreationStatusDTO accountCreationStatus = new AccountCreationStatusDTO();
    accountCreationStatus.setErrorMessages(new ArrayList<String>());
    accountCreationStatus.setStatus(KcConstants.KcWebService.STATUS_KC_SUCCESS);

    // check to see if the user has the permission to create account
    String principalId = accountParameters.getPrincipalId();
    LOG.debug("principalId  ::::" + principalId);
    if (!isValidUser(principalId)) {
      this.setFailStatus(
          accountCreationStatus,
          KcUtils.getErrorMessage(
              KcConstants.AccountCreationService.ERROR_KC_DOCUMENT_INVALID_USER,
              new String[] {principalId}));
      return accountCreationStatus;
    }

    // get the defaults table
    String unitNumber = accountParameters.getUnit();
    AccountAutoCreateDefaults defaults = getAccountDefaultsService().getAccountDefaults(unitNumber);

    if (defaults == null) {
      this.setFailStatus(
          accountCreationStatus,
          KcConstants.AccountCreationService.ERROR_KC_ACCOUNT_PARAMS_UNIT_NOT_DEFINED);
      return accountCreationStatus;
    }

    try {
      // create an account object
      Account account = createAccountObject(accountParameters, defaults);

      // if invalid chart/account number, failure status and return to KC
      if (!isValidAccount(account, accountCreationStatus)) {
        return accountCreationStatus;
      }
      // create an account automatic maintenance document
      createAutomaticCGAccountMaintenanceDocument(account, accountCreationStatus);

    } catch (Exception ex) {
      this.setFailStatus(
          accountCreationStatus,
          KcConstants.AccountCreationService.ERROR_KC_DOCUMENT_ACCOUNT_GENERATION_PROBLEM);
      return accountCreationStatus;
    }

    // set required values to AccountCreationStatus
    if (accountCreationStatus.getStatus().equals(KcConstants.KcWebService.STATUS_KC_SUCCESS)) {
      accountCreationStatus.setAccountNumber(accountParameters.getAccountNumber());
      accountCreationStatus.setChartOfAccountsCode(defaults.getChartOfAccountsCode());
    }

    return accountCreationStatus;
  }