atg.commerce.payment.processor
Class ProcCreateInvoiceRequestInfo

java.lang.Object
  extended by atg.nucleus.logging.VariableArgumentApplicationLoggingImpl
      extended by atg.nucleus.GenericService
          extended by atg.commerce.payment.processor.ProcCreateInvoiceRequestInfo
All Implemented Interfaces:
atg.naming.AbsoluteNameable, NameContextBindingListener, NameContextElement, atg.naming.NameContextParentable, NameResolver, AdminableService, atg.nucleus.Configured, ApplicationLogging, atg.nucleus.logging.ApplicationLoggingSender, atg.nucleus.logging.TraceApplicationLogging, VariableArgumentApplicationLogging, ComponentNameResolver, Service, ServiceListener, PipelineProcessor, java.util.EventListener
Direct Known Subclasses:
ProcCreateInvoiceRequestInfo

public class ProcCreateInvoiceRequestInfo
extends GenericService
implements PipelineProcessor

This pipeline processor element is called to create generic InvoiceRequestInfo objects from instances of the InvoiceRequest payment group. It places them into the pipeline argument dictionary so that downstream pipeline processors can retrieve them by calling PaymentManagerPipelineArgs.getPaymentInfo().

This processor is designed so that the InvoiceRequestInfo class can easily be extended. See "setInvoiceRequestInfoClass" and "#addDataToInvoiceRequestInfo "addDataToInvoiceRequestInfo for more information.

See Also:
InvoiceRequestInfo, GenericInvoiceRequestInfo

Field Summary
static java.lang.String CLASS_VERSION
           
static int SUCCESS
          Return values for this processor.
 
Fields inherited from class atg.nucleus.GenericService
SERVICE_INFO_KEY
 
Fields inherited from interface atg.service.pipeline.PipelineProcessor
STOP_CHAIN_EXECUTION, STOP_CHAIN_EXECUTION_AND_COMMIT, STOP_CHAIN_EXECUTION_AND_ROLLBACK
 
Fields inherited from interface atg.nucleus.logging.TraceApplicationLogging
DEFAULT_LOG_TRACE_STATUS
 
Fields inherited from interface atg.nucleus.logging.ApplicationLogging
DEFAULT_LOG_DEBUG_STATUS, DEFAULT_LOG_ERROR_STATUS, DEFAULT_LOG_INFO_STATUS, DEFAULT_LOG_WARNING_STATUS
 
Constructor Summary
ProcCreateInvoiceRequestInfo()
           
 
Method Summary
protected  void addDataToInvoiceRequestInfo(Order pOrder, InvoiceRequest pPaymentGroup, double pAmount, PaymentManagerPipelineArgs pParams, GenericInvoiceRequestInfo pInvoiceRequestInfo)
          This method populates the InvoiceRequestInfo object with data.
protected  java.lang.Double computeBalanceDue(double pAmount, PaymentGroup pPmt)
          Compute the balance due on the invoice by looking at the payment group original amount, subtracting anything that's already been debited, and adding back in any credits applied to the payment group.
protected  GenericInvoiceRequestInfo getInvoiceRequestInfo()
          Factory method to create a new InvoiceRequestInfo object.
 java.lang.String getInvoiceRequestInfoClass()
          Return the class to instantiate when creating a new InvoiceRequestInfo object.
 int[] getRetCodes()
          Return the possible return values for this processor.
 int runProcess(java.lang.Object pParam, PipelineResult pResult)
          Generate an InvoiceRequestInfo object of the class specified by invoiceRequestInfoClass, populate it with data from an InvoiceRequest payment group by calling addDataToInvoiceRequestInfo, and add it to the pipeline argument dictionary so that downstream pipeline processors can access it.
 void setInvoiceRequestInfoClass(java.lang.String pInvoiceRequestInfoClass)
          Specify the class to instantiate when creating a new InvoiceRequestInfo object.
 
Methods inherited from class atg.nucleus.GenericService
addLogListener, createAdminServlet, doStartService, doStopService, getAbsoluteName, getAdminServlet, getAdminServletOutputStreamEncoding, getLoggingForVlogging, getLogListenerCount, getLogListeners, getName, getNameContext, getNucleus, getRoot, getServiceConfiguration, getServiceInfo, isAdminServletUseServletOutputStream, isLoggingDebug, isLoggingError, isLoggingInfo, isLoggingTrace, isLoggingWarning, isRunning, logDebug, logDebug, logDebug, logError, logError, logError, logInfo, logInfo, logInfo, logTrace, logTrace, logTrace, logWarning, logWarning, logWarning, nameContextElementBound, nameContextElementUnbound, removeLogListener, reResolveThis, resolveName, resolveName, resolveName, resolveName, sendLogEvent, setAdminServletOutputStreamEncoding, setAdminServletUseServletOutputStream, setLoggingDebug, setLoggingError, setLoggingInfo, setLoggingTrace, setLoggingWarning, setNucleus, setServiceInfo, startService, stopService
 
Methods inherited from class atg.nucleus.logging.VariableArgumentApplicationLoggingImpl
vlogDebug, vlogDebug, vlogDebug, vlogDebug, vlogDebugTrace, vlogError, vlogError, vlogError, vlogError, vlogInfo, vlogInfo, vlogInfo, vlogInfo, vlogTrace, vlogTrace, vlogTrace, vlogTrace, vlogWarning, vlogWarning, vlogWarning, vlogWarning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CLASS_VERSION

public static java.lang.String CLASS_VERSION

SUCCESS

public static final int SUCCESS
Return values for this processor.

See Also:
Constant Field Values
Constructor Detail

ProcCreateInvoiceRequestInfo

public ProcCreateInvoiceRequestInfo()
Method Detail

setInvoiceRequestInfoClass

public void setInvoiceRequestInfoClass(java.lang.String pInvoiceRequestInfoClass)
Specify the class to instantiate when creating a new InvoiceRequestInfo object. If the GenericInvoiceRequestInfo class is extended to include more information, this property can be changed to reflect the new class.


getInvoiceRequestInfoClass

public java.lang.String getInvoiceRequestInfoClass()
Return the class to instantiate when creating a new InvoiceRequestInfo object.


addDataToInvoiceRequestInfo

protected void addDataToInvoiceRequestInfo(Order pOrder,
                                           InvoiceRequest pPaymentGroup,
                                           double pAmount,
                                           PaymentManagerPipelineArgs pParams,
                                           GenericInvoiceRequestInfo pInvoiceRequestInfo)
This method populates the InvoiceRequestInfo object with data. If the additional data is required, a subclass of GenericInvoiceRequestInfo can be created with additional properties, the invoiceRequestInfoClass property can be changed to specify the new class, and this method can be overridden to add data for the new properties (or another pipeline processor could be added after this processor to populate the additional properties).

Parameters:
pOrder - The order being paid for.
pPaymentGroup - The payment group being processed.
pAmount - The amount being authorized, debited, or credited
pParams - The parameter dictionary passed to this pipeline processor
pInvoiceRequestInfo - An object that holds information understood by the invoice request payment processor.

computeBalanceDue

protected java.lang.Double computeBalanceDue(double pAmount,
                                             PaymentGroup pPmt)
Compute the balance due on the invoice by looking at the payment group original amount, subtracting anything that's already been debited, and adding back in any credits applied to the payment group.

The assumption here is that credits don't reduce the total amount billed to the payment group, they only affect the outstanding balance. If one wants to reduce the total amount billed, one would presumably change the amount field in the payment group. If this assumption is incorrect and a different balance due behavior is desired, applications can subclass this class and replace the computeBalanceDue method to return a different value.

Parameters:
pAmount - The amount value passed by the payment manager as the amount to authorize, debit, or credit. This value is not used by the default implementation of computeBalanceDue but is included in the method signature in case subclassed versions of the method require it.
pPmt - The payment group for which an InvoiceRequestInfo object is being created.
Returns:
The amount to list as "balance due" in the invoice request info.

getInvoiceRequestInfo

protected GenericInvoiceRequestInfo getInvoiceRequestInfo()
                                                   throws java.lang.Exception
Factory method to create a new InvoiceRequestInfo object. The class that is created is that specified by the invoiceRequestInfoClass property, and must be a subclass of atg.payment.invoice.GenericInvoiceRequestInfo.

Returns:
An object of the class specified by invoiceRequestInfoClass
Throws:
java.lang.Exception - if any instantiation error occurs when creating the info object

runProcess

public int runProcess(java.lang.Object pParam,
                      PipelineResult pResult)
               throws java.lang.Exception
Generate an InvoiceRequestInfo object of the class specified by invoiceRequestInfoClass, populate it with data from an InvoiceRequest payment group by calling addDataToInvoiceRequestInfo, and add it to the pipeline argument dictionary so that downstream pipeline processors can access it.

Specified by:
runProcess in interface PipelineProcessor
Parameters:
pParam - Parameter dictionary of type PaymentManagerPipelineArgs.
pResult - Pipeline result object, not used by this method.
Returns:
An integer value used to determine which pipeline processor is called next.
Throws:
java.lang.Exception - If any error occurs creating or populating the invoice request info object.

getRetCodes

public int[] getRetCodes()
Return the possible return values for this processor. This processor always returns a success code.

Specified by:
getRetCodes in interface PipelineProcessor
Returns:
an array of all the return codes that could be returned by this PipelineProcessor.