/*
* 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.api;
import org.openmrs.module.openhmis.cashier.api.model.Bill;
/**
* Represents classes that can generate receipt numbers.
*/
public interface IReceiptNumberGenerator {
/**
* The name of the receipt number generator.
* @return The generator name.
*/
String getName();
/**
* A description of the receipt number generator.
* @return The generator description.
*/
String getDescription();
/**
* Gets the optional configuration page URL to configure this generator.
* @return The configuration page or a {@code null} or empty string if there is no configuration page.
*/
String getConfigurationPage();
/**
* Gets whether this generator has been loaded.
* @return {@code true} if this generator has been loaded; otherwise, {@code false}.
*/
boolean isLoaded();
/**
* Performs any loading needed by the generator.
*/
void load();
/**
* Generates a new receipt number for the specified {@link Bill}. Note that the receipt number field for the specified
* bill is NOT set.
* @param bill The bill to generate a new receipt number for.
* @return The generated receipt number.
*/
String generateNumber(Bill bill);
}