/*
* The contents of this file are subject to the OpenMRS Public License
* Version 2.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://license.openmrs.org
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and
* limitations under the License.
*
* Copyright (C) OpenHMIS. All Rights Reserved.
*/
package org.openmrs.module.openhmis.cashier.web.controller;
import java.math.BigDecimal;
import org.apache.commons.lang.StringUtils;
import org.openmrs.api.APIException;
import org.openmrs.api.AdministrationService;
import org.openmrs.module.openhmis.cashier.ModuleSettings;
import org.openmrs.module.openhmis.cashier.api.ICashierOptionsService;
import org.openmrs.module.openhmis.cashier.api.model.CashierOptions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* Controller to manage the Cashier Options page.
*/
@Controller
@RequestMapping("/module/openhmis/cashier/options")
public class CashierOptionsController {
private AdministrationService adminService;
private ICashierOptionsService cashierOptionsService;
@Autowired
public CashierOptionsController(AdministrationService adminService, ICashierOptionsService cashierOptionsService) {
this.adminService = adminService;
this.cashierOptionsService = cashierOptionsService;
}
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public CashierOptions options() {
CashierOptions options = cashierOptionsService.getOptions();
String roundingModeProperty = adminService.getGlobalProperty(ModuleSettings.ROUNDING_MODE_PROPERTY);
String roundingItemId = adminService.getGlobalProperty(ModuleSettings.ROUNDING_ITEM_ID);
if (StringUtils.isNotEmpty(roundingModeProperty)) {
if (StringUtils.isEmpty(options.getRoundingItemUuid()) && StringUtils.isNotEmpty(roundingItemId)) {
throw new APIException("Rounding item ID set in options but item not found. Make sure your user has the "
+ "required rights and the item has the set ID in the database");
}
// Check to see if rounding has been enabled and throw exception if it has as a rounding item must be set
if (StringUtils.isEmpty(roundingItemId) && options.getRoundToNearest() != null
&& !options.getRoundToNearest().equals(BigDecimal.ZERO)) {
throw new APIException("Rounding enabled (nearest " + options.getRoundToNearest().toString()
+ ") but no rounding item ID specified in options.");
}
}
return options;
}
}