###############################################################################
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache 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://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
###############################################################################

##########################################################################
# PaymentechSDK_6.3.0
# Build Date: 06/26/2009
# Build Time: 09:28:24
##########################################################################

##########################################################################
# General Properties
##########################################################################
DTDVersion=PTI47

##########################################################################
# Transaction Processor Properties
##########################################################################
TransactionProcessor.poolSize=10
TransactionProcessor.retries=2

##########################################################################
# Java Security Providers
##########################################################################
#security.provider.1=sun.security.provider.Sun
#security.provider.2=com.sun.rsajca.Provider
#security.provider.3=com.sun.net.ssl.internal.ssl.Provider

##########################################################################
# IBM Security Providers
#For IBM JDK Websphere merchants
#comment out or remove the above sun security provider list
#uncomment the following IBM security provider  list 
#No need to have any sun related jar files in CLASSPATH for Orbital SDK
##########################################################################
#security.provider.1=com.ibm.crypto.provider.IBMJCE
#security.provider.2=com.ibm.security.jgss.IBMJGSSProvider

##########################################################################
# Engine Properties
##########################################################################

# To specify a non-default location for your truststore (cacerts) file, 
# uncomment and edit these two lines
#engine.ssl.trustore.filename=/opt/jdk1.6/jre/lib/security/cacerts
#engine.ssl.trustore.passphrase=changeit


##########################################################################
# XML Templates Configuration
##########################################################################

# Templates
XMLTemplates.Request.NewOrder=%ofbiz.home%/applications/accounting/templates/orbital/NewOrder.xml
XMLTemplates.Request.EOD=%ofbiz.home%/applications/accounting/templates/orbital/EOD.xml
XMLTemplates.Request.FlexCache=%ofbiz.home%/applications/accounting/templates/orbital/FlexCache.xml
XMLTemplates.Request.MFC=%ofbiz.home%/applications/accounting/templates/orbital/MFC.xml
XMLTemplates.Request.Profile=%ofbiz.home%/applications/accounting/templates/orbital/Profile.xml
XMLTemplates.Request.Reverse=%ofbiz.home%/applications/accounting/templates/orbital/Reverse.xml
XMLTemplates.Request.Inquiry=%ofbiz.home%/applications/accounting/templates/orbital/Inquiry.xml

# Complex Type Mappings
XMLTemplates.Request.ComplexRoot.PC3Core=%ofbiz.home%/applications/accounting/templates/orbital/templates/PC3Core.inc
XMLTemplates.Request.ComplexRoot.PC3Core.RecursiveElement1=PC3LineItems
XMLTemplates.Request.ComplexRoot.PC3Core.RecursiveElement1.CountElement=PC3LineItemCount
XMLTemplates.Request.ComplexRoot.PC3Core.RecursiveElement1.EnforceGreaterThanZero=yes
XMLTemplates.Request.ComplexRoot.PC3Core.RecursiveElement1.MaxCount=98

XMLTemplates.Request.ComplexRoot.PC3LineItems=%ofbiz.home%/applications/accounting/templates/orbital/templates/PC3LineItems.inc
XMLTemplates.Request.ComplexRoot.PC3LineItems.ChildIndexElement=PC3DtlIndex

XMLTemplates.Request.ComplexRoot.SettleRejectBin=%ofbiz.home%/applications/accounting/templates/orbital/templates/SettleRejectBin.inc
XMLTemplates.Request.ComplexRoot.PriorAuthID=%ofbiz.home%/applications/accounting/templates/orbital/templates/PriorAuthID.inc
