com.ibm.commerce.edp.commands

Class PIEditWithMergingProtocolDataCmdImpl

  • All Implemented Interfaces:
    AccCommand, ControllerCommand, ECCommand, ECTargetableCommand, AEDPCtrlCmd, PIEditCmd, Protectable, com.ibm.websphere.cache.Sizeable, com.ibm.websphere.command.CacheableCommand, com.ibm.websphere.command.Command, com.ibm.websphere.command.CommandCaller, com.ibm.websphere.command.TargetableCommand, java.io.Serializable


    public class PIEditWithMergingProtocolDataCmdImpl
    extends AEDPPIEditCtrlCmdImpl
    implements PIEditCmd

    This is another implementation of the PIEditCmdcontroller command. It merges the payment protocol data passed in with those original data stored in database. if some useful protocol data were not passed in, this command will use the corresponding original data instead to update the payment instruction.

    Input parameters:

    Name XPath Description
    orderId /XML/orderId The identifier of the order for which the payment method is to be changed. Optional. If it is not passed in, then it will be retrieved via current payment instruction.
    piId /XML/piId The numeric identifier of the payment instruction to modify. The piId can be obtained from the EDPPaymentInstructionsDataBean data bean and represents the combination of the payment method, payment amount, and any protocol data. Mandatory.
    URL /XML/URL The URL to be called when the command completes successfully. Mandatory
    piAmount /XML/piAmount The new amount in the order currency to be used for this payment instruction. The format of this number must fit the rules for a java.math.BigDecimal object. The number must use a period for a decimal place. Optional. If it is not passed in, then it will be retrieved via current payment instruction.
    policyId /XML/policyId The payment policy identifier. It is the primary key of the payment business policy table. (Table POLICY with column policytype_id= 'Payment'). Optional. If it is not passed in, then it will be retrieved via current payment instruction.
    protocolData /XML/protocolData Additional name-value pairs that will be passed to the payment plug-in or payment processor as additional data required by that payment protocol. At calling this command, you just need to pass the changed protocol data.
    forceFlag /XML/forceFlag The flag to indicate whether the payment method should be edited. Even though the target amount is less than the authorized amount or there is some deposited amount for the payment method. For these scenarios, tickler will be created to make sure the CSR is notified. The default value is "false"
    /XML/cvcResetFlag The flag to indicate whether the cvc number of the credit card should be forced to reset to an empty value.
    paymentDataEditable /XML/paymentDataEditable The flag to indicate whether the payment protocol data should be edited by this request. "true" means the payment protocol data should be edited by this request. The default value is "true"
    amountEditable /XML/amountEditable The flag to indicate whether the payment method amount should be edited by this request. If piAmount parameter is provided and this flag is true, the amount will be edited by this request. The default value is "true"
    purchaseorder_id /XML/purchaseorder_id The purchase order number specified to the order. This parameter is optional. If it is set, the value of the purchase order number will send back to the response properties to be displayed in the page. Optional.
    errorViewName /XML/errorViewName The view name which is redirected to when the execution fails. If this parameter is provided, the default error view name is PaymentInstructionErrorView.
    billing_address_id /XML/billing_address_id The billing address identifier in WebSphere Commerce instance.
    paymentTCId /XML/paymentTCId The payment Term & Condition identifier for this payment instruction. This parameter is used by the business customer. Optional.
    valueFromPaymentTC /XML/valueFromPaymentTC The flag to indicate: Whether the payment protocol data should be extracted from the payment Term & Condition identified by paymentTCId parameter. And whether ignore any protocol data passed in the request properties. The value includes "true" and "false", the default value is "false".

    Output parameters:

    None.

    Behaviour:

    • If orderId is not passed in, then it is retrieved via current payment instruction; If piAmount is not passed in, then it is retrieved via current payment instruction; If neither payMethodId and policyId is passed in, then they are retrieved via current payment instruction.
    • Validate necessary parameters: orderId, piId, payMethodId, policyId and URL.
    • Merge the changed protocol data with those original ones stored in database.
    • Call the EditCmdtask command to edit this payment instruction. If only amount is to be changed, then the change will be directly based on existing payment instruction. If payment protocol data is to be changed, then the existing payment instruction will be canceled and a new one is created.
    • Examine the results of the task command for an error and redirect to an error page. Otherwise, it redirects to the URL that was passed as a parameter.
    • Examine the results of the task command for an error and redirect to an error page. Otherwise, it redirects to the URL that was passed as a parameter.

    Task commands called:

    See Also:
    EditCmd, Serialized Form
    • Field Detail

      • COPYRIGHT

        public static final java.lang.String COPYRIGHT
        The IBM Copyright notice field.
        See Also:
        Constant Field Values
    • Constructor Detail

      • PIEditWithMergingProtocolDataCmdImpl

        public PIEditWithMergingProtocolDataCmdImpl()
        The default constructor.
    • Method Detail

      • setForcedPaymentInstructionChangeFlag

        public void setForcedPaymentInstructionChangeFlag(boolean forcedChange)

        This method sets the forced flag indicating if the request will be forced or not.

        It is up to the caller to set the forceFlag whether they want to do the a forced request or not.

        Specified by:
        setForcedPaymentInstructionChangeFlag in interface PIEditCmd
        Parameters:
        forcedChange - indicates if the request is forced or not
      • getForcedPaymentInstructionChangeFlag

        public boolean getForcedPaymentInstructionChangeFlag()
        This method gets the forced flag that indicates if this request will be forced or not.
        Returns:
        the forced flag
      • isCvcResetFlag

        public boolean isCvcResetFlag()
        This method gets the cvc reset flag that indicates if cvc number will be reset or not.
        Returns:
        Returns the iCvcResetFlag.
      • setCvcResetFlag

        public void setCvcResetFlag(boolean cvcResetFlag)
        This method sets the flag to indicate if the cvc number will be reset or not.
        Parameters:
        cvcResetFlag - The iCvcResetFlag to set.
      • getPIID

        public java.lang.Long getPIID()
        This method gets the payment instruction ID.
        Returns:
        iPIID the payment instruction ID
      • setPIId

        public void setPIId(java.lang.Long aPIId)
        This method sets the payment instruction ID.
        Specified by:
        setPIId in interface PIEditCmd
        Parameters:
        aPIId - the payment instruction ID
      • setRequestProperties

        public void setRequestProperties(TypedProperty reqProperties)
                                  throws ECException
        This method sets the input parameters from the request.

        If orderId, piAmount, or payMethodId/policyId is not passed in, then it will be retrieved from database via current payment instruction.

        Merge the changed protocol data with existing ones in database.

        Specified by:
        setRequestProperties in interface ControllerCommand
        Overrides:
        setRequestProperties in class ControllerCommandImpl
        Parameters:
        reqProperties - the input parameters from the request
        Throws:
        ECException - if something fails
      • performExecute

        public void performExecute()
                            throws ECException
        This command will delete the old payment instruction and add a new payment instruction with all new protocol data and/or amount/currency
        Specified by:
        performExecute in interface ECCommand
        Specified by:
        performExecute in interface com.ibm.websphere.command.TargetableCommand
        Overrides:
        performExecute in class AbstractECTargetableCommand
        Throws:
        ECException - if something fails
      • setAmountEditable

        public void setAmountEditable(boolean amountEditable)
        This method sets the amount editable flag indicating if the amount is dirty or not. True by default.
        Specified by:
        setAmountEditable in interface PIEditCmd
        Parameters:
        amountEditable - indicates if the amount is dirty or not
      • setPaymentDataEditable

        public void setPaymentDataEditable(boolean paymentDataEditable)
        This method sets the payment data editable flag indicating if the payment data is dirty or not. True by default.
        Specified by:
        setPaymentDataEditable in interface PIEditCmd
        Parameters:
        paymentDataEditable - indicates if the payment data is dirty or not
      • isAmountEditable

        public boolean isAmountEditable()
        This method returns the amount editable flag indicating if the amount is dirty or not.
        Returns:
        true if the amount is editable, false otherwise
      • isPaymentDataEditable

        public boolean isPaymentDataEditable()
        This method returns the payment data editable flag indicating if the payment data is dirty or not.
        Returns:
        the payment data editable flag
      • reset

        public void reset()

        This method resets the command fields.

        After this method is invoked, and proper attributes are set, the command can be executed again.

        Specified by:
        reset in interface com.ibm.websphere.command.Command
        Overrides:
        reset in class AEDPPIEditCtrlCmdImpl