From: <lph...@us...> - 2010-06-14 16:00:35
|
Revision: 27620 http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=27620&view=rev Author: lphuberdeau Date: 2010-06-14 16:00:29 +0000 (Mon, 14 Jun 2010) Log Message: ----------- [MOD] Adding support for UPS services Modified Paths: -------------- trunk/lib/prefs/shipping.php trunk/lib/setup/prefs.php trunk/lib/shipping/provider_fedex.php trunk/lib/shipping/shippinglib.php trunk/templates/tiki-admin-include-payment.tpl trunk/tiki-ajax_services.php Added Paths: ----------- trunk/lib/shipping/provider_ups.php trunk/lib/shipping/ups-wsdl/ trunk/lib/shipping/ups-wsdl/Error1.1.xsd trunk/lib/shipping/ups-wsdl/RateWS.wsdl trunk/lib/shipping/ups-wsdl/RateWebServiceSchema.xsd trunk/lib/shipping/ups-wsdl/UPSSecurity.xsd trunk/lib/shipping/ups-wsdl/common.xsd Modified: trunk/lib/prefs/shipping.php =================================================================== --- trunk/lib/prefs/shipping.php 2010-06-14 13:00:18 UTC (rev 27619) +++ trunk/lib/prefs/shipping.php 2010-06-14 16:00:29 UTC (rev 27620) @@ -39,6 +39,29 @@ 'size' => 10, 'filter' => 'digits', ), + 'shipping_ups_enable' => array( + 'name' => tra('UPS API'), + 'description' => tra('Enable shipping rate calculation using the UPS carrier.'), + 'type' => 'flag', + 'help' => 'Shipping', + ), + 'shipping_ups_username' => array( + 'name' => tra('UPS Username'), + 'description' => tra('UPS credentials'), + 'type' => 'text', + 'size' => 15, + ), + 'shipping_ups_password' => array( + 'name' => tra('UPS Password'), + 'description' => tra('UPS credentials'), + 'type' => 'text', + 'size' => 25, + ), + 'shipping_ups_license' => array( + 'name' => tra('UPS Access Key'), + 'type' => 'text', + 'size' => 25, + ), ); } Modified: trunk/lib/setup/prefs.php =================================================================== --- trunk/lib/setup/prefs.php 2010-06-14 13:00:18 UTC (rev 27619) +++ trunk/lib/setup/prefs.php 2010-06-14 16:00:29 UTC (rev 27620) @@ -1353,13 +1353,20 @@ 'bigbluebutton_server_location' => '', 'bigbluebutton_server_salt' => '', + // Shipping 'shipping_service' => 'n', + 'shipping_fedex_enable' => 'n', 'shipping_fedex_key' => '', 'shipping_fedex_password' => '', 'shipping_fedex_meter' => '', 'shipping_fedex_account' => '', + 'shipping_ups_enable' => 'n', + 'shipping_ups_username' => '', + 'shipping_ups_password' => '', + 'shipping_ups_license' => '', + // unsorted features 'anonCanEdit' => 'n', 'cacheimages' => 'n', Modified: trunk/lib/shipping/provider_fedex.php =================================================================== --- trunk/lib/shipping/provider_fedex.php 2010-06-14 13:00:18 UTC (rev 27619) +++ trunk/lib/shipping/provider_fedex.php 2010-06-14 16:00:29 UTC (rev 27620) @@ -49,6 +49,7 @@ $out[] = array( 'provider' => 'FedEx', 'service' => $option->ServiceType, + 'readable' => tra( $option->ServiceType ), 'cost' => number_format( $charge->Amount, 2, '.', '' ), 'currency' => $charge->Currency, ); Added: trunk/lib/shipping/provider_ups.php =================================================================== --- trunk/lib/shipping/provider_ups.php (rev 0) +++ trunk/lib/shipping/provider_ups.php 2010-06-14 16:00:29 UTC (rev 27620) @@ -0,0 +1,186 @@ +<?php + +require_once 'lib/shipping/shippinglib.php'; + +class ShippingProvider_Ups implements ShippingProvider +{ + private $username; + private $password; + private $license; + + function __construct( array $config ) { + $this->username = $config['username']; + $this->password = $config['password']; + $this->license = $config['license']; + } + + function getRates( array $from, array $to, array $packages ) { + if( $dom = $this->obtain( $from, $to, $packages ) ) { + $rates = array(); + + foreach( $dom->getElementsByTagName( 'RatedShipment' ) as $node ) { + $rates[] = $this->readShipment( $node ); + } + + return $rates; + } else { + return array(); + } + } + + private function obtain( $from, $to, $packages, $service ) { + try { + $auth = $this->getAuth(); + $request = $this->getRequest( $from, $to, $packages, $service ); + + require_once 'Zend/Http/Client.php'; + $client = new Zend_Http_Client( 'https://www.ups.com/ups.app/xml/Rate' ); + $client->setRawData( $auth . $request ); + + $response = $client->request( 'POST' ); + $body = $response->getBody(); + + $dom = new DOMDocument; + $dom->loadXML( $body ); + + return $dom; + } catch( Zend_Http_Exception $e ) { + return null; + } + } + + private function readShipment( $node ) { + $xp = new DOMXPath( $node->ownerDocument ); + return array( + 'provider' => 'UPS', + 'service' => 'UPS_CODE_' . $xp->query( 'Service/Code', $node )->item(0)->textContent, + 'readable' => tra( 'UPS_CODE_' . $xp->query( 'Service/Code', $node )->item(0)->textContent ), + 'cost' => $xp->query( 'TotalCharges/MonetaryValue', $node )->item(0)->textContent, + 'currency' => $xp->query( 'TotalCharges/CurrencyCode', $node )->item(0)->textContent, + ); + } + + private function getAuth() { + $dom = new DOMDocument( '1.0' ); + $dom->appendChild( $root = $dom->createElement( 'AccessRequest' ) ); + + $root->appendChild( $license = $dom->createElement( 'AccessLicenseNumber' ) ); + $root->appendChild( $username = $dom->createElement( 'UserId' ) ); + $root->appendChild( $password = $dom->createElement( 'Password' ) ); + + $license->appendChild( $dom->createTextNode( $this->license ) ); + $username->appendChild( $dom->createTextNode( $this->username ) ); + $password->appendChild( $dom->createTextNode( $this->password ) ); + + return $dom->saveXML(); + } + + private function getRequest( $from, $to, $packages ) { + $dom = new DOMDocument( '1.0' ); + $dom->appendChild( $root = $dom->createElement( 'RatingServiceSelectionRequest' ) ); + $root->appendChild( $request = $dom->createElement( 'Request' ) ); + + $request->appendChild( $ref = $dom->createElement( 'TransactionReference' ) ); + $ref->appendChild( $dom->createElement( 'CustomerContext', 'Tiki' ) ); + $ref->appendChild( $dom->createElement( 'XpciVersion', '1.0001' ) ); + $request->appendChild( $dom->createElement( 'RequestAction', 'Shop' ) ); + $request->appendChild( $dom->createElement( 'RequestOption', 'Shop' ) ); + $root->appendChild( $pickup = $dom->createElement( 'PickupType' ) ); + $root->appendChild( $shipment = $dom->createElement( 'Shipment' ) ); + + $pickup->appendChild( $dom->createElement( 'Code', '01' ) ); + + $this->addAddress( $shipment, 'Shipper', $from ); + $this->addAddress( $shipment, 'ShipTo', $to ); + //$this->addAddress( $shipment, 'ShipFrom', $from ); + + foreach( $packages as $package ) { + $this->addPackage( $shipment, $package ); + } + + return $dom->saveXML(); + } + + private function addAddress( $root, $name, $data ) { + $dom = $root->ownerDocument; + + $root->appendChild( $node = $dom->createElement( $name ) ); + $node->appendChild( $address = $dom->createElement( 'Address' ) ); + $address->appendChild( $zip = $dom->createElement( 'PostalCode' ) ); + $address->appendChild( $country = $dom->createElement( 'CountryCode' ) ); + + $zip->appendChild( $dom->createTextNode( $data['zip'] ) ); + $country->appendChild( $dom->createTextNode( $data['country'] ) ); + } + + private function addPackage( $root, $data ) { + $dom = $root->ownerDocument; + + $root->appendChild( $package = $dom->createElement( 'Package' ) ); + $package->appendChild( $type = $dom->createElement( 'PackagingType' ) ); + $type->appendChild( $dom->createElement( 'Code', '00' ) ); + $package->appendChild( $packageWeight = $dom->createElement( 'PackageWeight' ) ); + $packageWeight->appendChild( $unit = $dom->createElement( 'UnitOfMeasurement' ) ); + $unit->appendChild( $code = $dom->createElement( 'Code', 'KGS' ) ); + $packageWeight->appendChild( $weight = $dom->createElement( 'Weight' ) ); + + $weight->appendChild( $dom->createTextNode( $data['weight'] ) ); + } + + /* + function getRates( array $from, array $to, array $packages ) { + if( ! class_exists( 'SoapClient' ) ) { + return array(); + } + + $wsdl = dirname(__FILE__) . '/ups-wsdl/RateWS.wsdl'; + + try { + $client = new SoapClient( $wsdl, array('trace' => 1) ); + $client->__setSoapHeaders( new SoapHeader( 'http://www.ups.com/XMLSchema/XOLTWS/UPSS/v1.0', 'UPSSecurity', array( + 'UsernameToken' => array( + 'Username' => $this->username, + 'Password' => $this->password, + ), + 'ServiceAccessToken' => array( + 'AccessLicenseNumber' => $this->license, + ), + ) ) ); + + $rates = $client->ProcessRate( array( + 'Request' => array( + 'RequestOption' => 'Rate', + ), + 'Shipment' => array( + 'Shipper' => array( + 'Address' => array( + 'CountryCode' => 'CA', + 'PostalCode' => 'H2J 1L8', + ), + ), + 'ShipTo' => array( + 'Address' => array( + 'CountryCode' => 'CA', + 'PostalCode' => 'J7P 1T3', + ), + ), + 'Package' => array( + array( 'PackagingType' => array( 'Code' => '00' ), 'PackageWeight' => array( 'Weight' => 3, 'UnitOfMeasurement' => array( 'Code' => 'KGS' ) ) ), + ), + ), + ) ); + + var_dump($client->__getLastRequest()); + var_dump($client->__getLastResponse()); + + var_dump( $rates ); + } catch( SoapFault $e ) { + var_dump($client->__getLastRequest()); + var_dump($client->__getLastResponse()); + echo $e; + return array(); + } + } + */ +} + Modified: trunk/lib/shipping/shippinglib.php =================================================================== --- trunk/lib/shipping/shippinglib.php 2010-06-14 13:00:18 UTC (rev 27619) +++ trunk/lib/shipping/shippinglib.php 2010-06-14 16:00:29 UTC (rev 27620) @@ -82,3 +82,12 @@ ) ) ); } +if( $prefs['shipping_ups_enable'] == 'y' ) { + require_once 'lib/shipping/provider_ups.php'; + $shippinglib->addProvider( new ShippingProvider_Ups( array( + 'username' => $prefs['shipping_ups_username'], + 'password' => $prefs['shipping_ups_password'], + 'license' => $prefs['shipping_ups_license'], + ) ) ); +} + Added: trunk/lib/shipping/ups-wsdl/Error1.1.xsd =================================================================== --- trunk/lib/shipping/ups-wsdl/Error1.1.xsd (rev 0) +++ trunk/lib/shipping/ups-wsdl/Error1.1.xsd 2010-06-14 16:00:29 UTC (rev 27620) @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- edited with XML Spy v4.1 U (http://www.xmlspy.com) by Rajendra Upadhya K (UPS GACOR850393,) --> +<xsd:schema targetNamespace="http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:error="http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1" elementFormDefault="qualified"> + <xsd:element name="Errors"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="ErrorDetail" type="error:ErrorDetailType" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="ErrorDetailType"> + <xsd:sequence> + <xsd:element name="Severity" type="xsd:string"/> + <xsd:element name="PrimaryErrorCode" type="error:CodeType"/> + <xsd:element name="MinimumRetrySeconds" type="xsd:string" minOccurs="0"/> + <xsd:element name="Location" type="error:LocationType" minOccurs="0"/> + <xsd:element name="SubErrorCode" type="error:CodeType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="AdditionalInformation" type="error:AdditionalInfoType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CodeType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:string"/> + <xsd:element name="Description" type="xsd:string"/> + <xsd:element name="Digest" type="xsd:string" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="AdditionalInfoType"> + <xsd:sequence> + <xsd:element name="Type" type="xsd:string"/> + <xsd:element name="Value" type="error:AdditionalCodeDescType" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="AdditionalCodeDescType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:string"/> + <xsd:element name="Description" type="xsd:string" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="LocationType"> + <xsd:sequence> + <xsd:element name="LocationElementName" type="xsd:string" minOccurs="0"/> + <xsd:element name="XPathOfElement" type="xsd:string" minOccurs="0"/> + <xsd:element name="OriginalValue" type="xsd:string" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> +</xsd:schema> Added: trunk/lib/shipping/ups-wsdl/RateWS.wsdl =================================================================== --- trunk/lib/shipping/ups-wsdl/RateWS.wsdl (rev 0) +++ trunk/lib/shipping/ups-wsdl/RateWS.wsdl 2010-06-14 16:00:29 UTC (rev 27620) @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- UPS Rate Service WSDL Release Date Dec 29, 2007 --> +<!-- Copyright 2007-2008 United Parcel Service of America, Inc. All rights reserved. --> +<wsdl:definitions name="RateWS" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:error="http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1" xmlns:upss="http://www.ups.com/XMLSchema/XOLTWS/UPSS/v1.0" xmlns:rate="http://www.ups.com/XMLSchema/XOLTWS/Rate/v1.1" xmlns:tns="http://www.ups.com/WSDL/XOLTWS/Rate/v1.1" targetNamespace="http://www.ups.com/WSDL/XOLTWS/Rate/v1.1"> + <wsdl:types> + <xsd:schema> + <!-- This schema defines the UPS Security header used for authorization purposes --> + <xsd:import namespace="http://www.ups.com/XMLSchema/XOLTWS/UPSS/v1.0" schemaLocation="UPSSecurity.xsd"/> + <!-- This schema defines the common data types --> + <xsd:import namespace="http://www.ups.com/XMLSchema/XOLTWS/Common/v1.0" schemaLocation="common.xsd"/> + <!-- This schema defines the error detail data types returned within SOAPFaults to provide more specific information pertaining to the problem. --> + <xsd:import namespace="http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1" schemaLocation="Error1.1.xsd"/> + <!-- This schema defines the Rate service data types --> + <xsd:import namespace="http://www.ups.com/XMLSchema/XOLTWS/Rate/v1.1" schemaLocation="RateWebServiceSchema.xsd"/> + </xsd:schema> + </wsdl:types> + <wsdl:message name="RateRequestMessage"> + <wsdl:part name="Body" element="rate:RateRequest"/> + <wsdl:part name="UPSSecurity" element="upss:UPSSecurity"/> + </wsdl:message> + <wsdl:message name="RateResponseMessage"> + <wsdl:part name="Body" element="rate:RateResponse"/> + </wsdl:message> + <wsdl:message name="RateErrorMessage"> + <wsdl:part name="RateError" element="error:Errors"/> + </wsdl:message> + <wsdl:portType name="RatePortType"> + <wsdl:operation name="ProcessRate"> + <wsdl:input name="RateRequest" message="tns:RateRequestMessage"/> + <wsdl:output name="RateResponse" message="tns:RateResponseMessage"/> + <wsdl:fault name="RateError" message="tns:RateErrorMessage"/> + </wsdl:operation> + </wsdl:portType> + <wsdl:binding name="RateBinding" type="tns:RatePortType"> + <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/> + <wsdl:operation name="ProcessRate"> + <soap:operation soapAction="http://onlinetools.ups.com/webservices/RateBinding/v1.1" style="document"/> + <wsdl:input name="RateRequest"> + <soap:body parts="Body" use="literal"/> + <soap:header message="tns:RateRequestMessage" part="UPSSecurity" use="literal"> + <soap:headerfault message="tns:RateErrorMessage" part="RateError" use="literal"/> + </soap:header> + </wsdl:input> + <wsdl:output name="RateResponse"> + <soap:body parts="Body" use="literal"/> + </wsdl:output> + <wsdl:fault name="RateError"> + <soap:fault name="RateError" use="literal"/> + </wsdl:fault> + </wsdl:operation> + </wsdl:binding> + <wsdl:service name="RateService"> + <wsdl:port name="RatePort" binding="tns:RateBinding"> + <!-- Production URL --> + <!-- <soap:address location="https://onlinetools.ups.com/webservices/Rate"/> --> + <!-- CIE (Customer Integration Environment) URL --> + <soap:address location="https://wwwcie.ups.com/webservices/Rate"/> + </wsdl:port> + </wsdl:service> +</wsdl:definitions> Added: trunk/lib/shipping/ups-wsdl/RateWebServiceSchema.xsd =================================================================== --- trunk/lib/shipping/ups-wsdl/RateWebServiceSchema.xsd (rev 0) +++ trunk/lib/shipping/ups-wsdl/RateWebServiceSchema.xsd 2010-06-14 16:00:29 UTC (rev 27620) @@ -0,0 +1,266 @@ +<xsd:schema elementFormDefault="qualified" targetNamespace="http://www.ups.com/XMLSchema/XOLTWS/Rate/v1.1" xmlns:common="http://www.ups.com/XMLSchema/XOLTWS/Common/v1.0" xmlns:rate="http://www.ups.com/XMLSchema/XOLTWS/Rate/v1.1" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <xsd:import namespace="http://www.ups.com/XMLSchema/XOLTWS/Common/v1.0" schemaLocation="common.xsd"/> + <xsd:element name="RateRequest"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="common:Request"/> + <xsd:element minOccurs="0" name="PickupType" type="rate:CodeDescriptionType"/> + <xsd:element minOccurs="0" name="CustomerClassification" type="rate:CodeDescriptionType"/> + <xsd:element name="Shipment" type="rate:ShipmentType"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name="RateResponse"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="common:Response"/> + <xsd:element maxOccurs="unbounded" name="RatedShipment" type="rate:RatedShipmentType"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:complexType name="BillingWeightType"> + <xsd:sequence> + <xsd:element name="UnitOfMeasurement" type="rate:CodeDescriptionType"/> + <xsd:element name="Weight" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="RatedPackageType"> + <xsd:sequence> + <xsd:element minOccurs="0" name="TransportationCharges" type="rate:ChargesType"/> + <xsd:element minOccurs="0" name="ServiceOptionsCharges" type="rate:ChargesType"/> + <xsd:element minOccurs="0" name="TotalCharges" type="rate:ChargesType"/> + <xsd:element minOccurs="0" name="Weight" type="xsd:string"/> + <xsd:element minOccurs="0" name="BillingWeight" type="rate:BillingWeightType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="RatedShipmentType"> + <xsd:sequence> + <xsd:element name="Service" type="rate:CodeDescriptionType"/> + <xsd:element maxOccurs="unbounded" minOccurs="0" name="RatedShipmentAlert" type="rate:RatedShipmentInfoType"/> + <xsd:element name="BillingWeight" type="rate:BillingWeightType"/> + <xsd:element name="TransportationCharges" type="rate:ChargesType"/> + <xsd:element minOccurs="0" name="FRSShipmentData" type="rate:FRSShipmentType"/> + <xsd:element name="ServiceOptionsCharges" type="rate:ChargesType"/> + <xsd:element name="TotalCharges" type="rate:ChargesType"/> + <xsd:element minOccurs="0" name="NegotiatedRateCharges" type="rate:TotalChargeType"/> + <xsd:element minOccurs="0" name="GuaranteedDelivery" type="rate:GuaranteedDeliveryType"/> + <xsd:element maxOccurs="unbounded" name="RatedPackage" type="rate:RatedPackageType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="TotalChargeType"> + <xsd:sequence> + <xsd:element name="TotalCharge" type="rate:ChargesType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="RatedShipmentInfoType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:string"/> + <xsd:element name="Description" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ChargesType"> + <xsd:sequence> + <xsd:element name="CurrencyCode" type="xsd:string"/> + <xsd:element name="MonetaryValue" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="TransportationChargesType"> + <xsd:sequence> + <xsd:element name="GrossCharge" type="rate:ChargesType"/> + <xsd:element name="DiscountAmount" type="rate:ChargesType"/> + <xsd:element name="DiscountPercentage" type="xsd:string"/> + <xsd:element name="NetCharge" type="rate:ChargesType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="FRSShipmentType"> + <xsd:sequence> + <xsd:element name="TransportationCharges" type="rate:TransportationChargesType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="AddressType"> + <xsd:sequence> + <xsd:element maxOccurs="3" minOccurs="0" name="AddressLine" type="xsd:string"/> + <xsd:element minOccurs="0" name="City" type="xsd:string"/> + <xsd:element minOccurs="0" name="StateProvinceCode" type="xsd:string"/> + <xsd:element minOccurs="0" name="PostalCode" type="xsd:string"/> + <xsd:element name="CountryCode" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ShipToAddressType"> + <xsd:complexContent> + <xsd:extension base="rate:AddressType"> + <xsd:sequence> + <xsd:element minOccurs="0" name="ResidentialAddressIndicator" type="xsd:string"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CODType"> + <xsd:sequence> + <xsd:element name="CODFundsCode" type="xsd:string"/> + <xsd:element name="CODAmount" type="rate:CODAmountType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CODAmountType"> + <xsd:sequence> + <xsd:element name="CurrencyCode" type="xsd:string"/> + <xsd:element name="MonetaryValue" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="DeliveryConfirmationType"> + <xsd:sequence> + <xsd:element name="DCISType" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="DimensionsType"> + <xsd:sequence> + <xsd:element name="UnitOfMeasurement" type="rate:CodeDescriptionType"/> + <xsd:element minOccurs="0" name="Length" type="xsd:string"/> + <xsd:element minOccurs="0" name="Width" type="xsd:string"/> + <xsd:element minOccurs="0" name="Height" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="InsuredValueType"> + <xsd:sequence> + <xsd:element name="CurrencyCode" type="xsd:string"/> + <xsd:element name="MonetaryValue" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="OnCallPickupType"> + <xsd:sequence> + <xsd:element name="Schedule" type="rate:ScheduleType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PackageType"> + <xsd:sequence> + <xsd:element minOccurs="0" name="PackagingType" type="rate:CodeDescriptionType"/> + <xsd:element minOccurs="0" name="Dimensions" type="rate:DimensionsType"/> + <xsd:element minOccurs="0" name="PackageWeight" type="rate:PackageWeightType"/> + <xsd:element minOccurs="0" name="Commodity" type="rate:CommodityType"/> + <xsd:element minOccurs="0" name="LargePackageIndicator" type="xsd:string"/> + <xsd:element minOccurs="0" name="PackageServiceOptions" type="rate:PackageServiceOptionsType"/> + <xsd:element minOccurs="0" name="AdditionalHandlingIndicator" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CommodityType"> + <xsd:sequence> + <xsd:element name="FreightClass" type="xsd:string"/> + <xsd:element minOccurs="0" name="NMFC" type="rate:NMFCCommodityType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="NMFCCommodityType"> + <xsd:sequence> + <xsd:element name="PrimeCode" type="xsd:string"/> + <xsd:element minOccurs="0" name="SubCode" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PackageServiceOptionsType"> + <xsd:sequence> + <xsd:element minOccurs="0" name="DeliveryConfirmation" type="rate:DeliveryConfirmationType"/> + <xsd:element minOccurs="0" name="COD" type="rate:CODType"/> + <xsd:element minOccurs="0" name="DeclaredValue" type="rate:InsuredValueType"/> + <xsd:element minOccurs="0" name="VerbalConfirmationIndicator" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PackageWeightType"> + <xsd:sequence> + <xsd:element name="UnitOfMeasurement" type="rate:CodeDescriptionType"/> + <xsd:element name="Weight" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="UOMCodeDescriptionType"> + <xsd:sequence> + <xsd:element minOccurs="0" name="Code" type="xsd:string"/> + <xsd:element minOccurs="0" name="Description" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CodeDescriptionType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:string"/> + <xsd:element minOccurs="0" name="Description" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ShipmentRatingOptionsType"> + <xsd:sequence> + <xsd:element minOccurs="0" name="NegotiatedRatesIndicator" type="xsd:string"/> + <xsd:element minOccurs="0" name="FRSShipmentIndicator" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ScheduleType"> + <xsd:sequence> + <xsd:element name="PickupDay" type="xsd:string"/> + <xsd:element name="Method" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ShipFromType"> + <xsd:sequence> + <xsd:element minOccurs="0" name="Name" type="xsd:string"/> + <xsd:element name="Address" type="rate:AddressType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ShipToType"> + <xsd:sequence> + <xsd:element minOccurs="0" name="Name" type="xsd:string"/> + <xsd:element name="Address" type="rate:ShipToAddressType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ShipmentType"> + <xsd:sequence> + <xsd:element name="Shipper" type="rate:ShipperType"/> + <xsd:element name="ShipTo" type="rate:ShipToType"/> + <xsd:element minOccurs="0" name="ShipFrom" type="rate:ShipFromType"/> + <xsd:element minOccurs="0" name="FRSPaymentInformation" type="rate:FRSPaymentInfoType"/> + <xsd:element minOccurs="0" name="Service" type="rate:CodeDescriptionType"/> + <xsd:element minOccurs="0" name="DocumentsOnlyIndicator" type="xsd:string"/> + <xsd:element maxOccurs="unbounded" name="Package" type="rate:PackageType"/> + <xsd:element minOccurs="0" name="ShipmentServiceOptions" type="rate:ShipmentServiceOptionsType"/> + <xsd:element minOccurs="0" name="ShipmentRatingOptions" type="rate:ShipmentRatingOptionsType"/> + <xsd:element minOccurs="0" name="InvoiceLineTotal" type="rate:InvoiceLineTotalType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ShipmentChargesType"> + <xsd:sequence/> + </xsd:complexType> + <xsd:complexType name="ShipmentServiceOptionsType"> + <xsd:sequence> + <xsd:element minOccurs="0" name="SaturdayPickupIndicator" type="xsd:string"/> + <xsd:element minOccurs="0" name="SaturdayDeliveryIndicator" type="xsd:string"/> + <xsd:element minOccurs="0" name="OnCallPickup" type="rate:OnCallPickupType"/> + <xsd:element minOccurs="0" name="COD" type="rate:CODType"/> + <xsd:element minOccurs="0" name="DeliveryConfirmation" type="rate:DeliveryConfirmationType"/> + <xsd:element minOccurs="0" name="ReturnOfDocumentIndicator" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ShipperType"> + <xsd:sequence> + <xsd:element minOccurs="0" name="Name" type="xsd:string"/> + <xsd:element minOccurs="0" name="ShipperNumber" type="xsd:string"/> + <xsd:element name="Address" type="rate:AddressType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="GuaranteedDeliveryType"> + <xsd:sequence> + <xsd:element minOccurs="0" name="BusinessDaysInTransit" type="xsd:string"/> + <xsd:element minOccurs="0" name="DeliveryByTime" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="FRSPaymentInfoType"> + <xsd:sequence> + <xsd:element name="Type" type="rate:CodeDescriptionType"/> + <xsd:element name="AccountNumber" type="xsd:string"/> + <xsd:element minOccurs="0" name="Address" type="rate:PayerAddressType"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="PayerAddressType"> + <xsd:sequence> + <xsd:element minOccurs="0" name="PostalCode" type="xsd:string"/> + <xsd:element name="CountryCode" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="InvoiceLineTotalType"> + <xsd:sequence> + <xsd:element minOccurs="0" name="CurrencyCode" type="xsd:string"/> + <xsd:element name="MonetaryValue" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> +</xsd:schema> \ No newline at end of file Added: trunk/lib/shipping/ups-wsdl/UPSSecurity.xsd =================================================================== --- trunk/lib/shipping/ups-wsdl/UPSSecurity.xsd (rev 0) +++ trunk/lib/shipping/ups-wsdl/UPSSecurity.xsd 2010-06-14 16:00:29 UTC (rev 27620) @@ -0,0 +1,23 @@ +<xsd:schema targetNamespace="http://www.ups.com/XMLSchema/XOLTWS/UPSS/v1.0" xmlns:upss="http://www.ups.com/XMLSchema/XOLTWS/UPSS/v1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> + <xsd:element name="UPSSecurity"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="UsernameToken"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="Username" type="xsd:string"/> + <xsd:element name="Password" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + <xsd:element name="ServiceAccessToken"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="AccessLicenseNumber" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + </xsd:element> +</xsd:schema> Added: trunk/lib/shipping/ups-wsdl/common.xsd =================================================================== --- trunk/lib/shipping/ups-wsdl/common.xsd (rev 0) +++ trunk/lib/shipping/ups-wsdl/common.xsd 2010-06-14 16:00:29 UTC (rev 27620) @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- edited with XML Spy v4.1 U (http://www.xmlspy.com) by Rajendra Upadhya (UPS GACOR850393,) --> +<!-- edited with XMLSpy v2006 sp2 U (http://www.altova.com) by MC (United Parcel Service) --> +<xsd:schema targetNamespace="http://www.ups.com/XMLSchema/XOLTWS/Common/v1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ups="http://www.ups.com/XMLSchema" xmlns:common="http://www.ups.com/XMLSchema/XOLTWS/Common/v1.0" elementFormDefault="qualified"> + <xsd:element name="Request" type="common:RequestType"/> + <xsd:element name="Response" type="common:ResponseType"/> + <xsd:element name="ClientInformation" type="common:ClientInformationType"/> + + <xsd:complexType name="ClientInformationType"> + <xsd:sequence> + <xsd:element name="Property" minOccurs="0" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="Key" type="xsd:string" use="required"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="RequestType"> + <xsd:sequence> + <xsd:element name="RequestOption" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="TransactionReference" type="common:TransactionReferenceType" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="TransactionReferenceType"> + <xsd:sequence> + <xsd:element name="CustomerContext" type="xsd:string" minOccurs="0"/> + <xsd:element name="TransactionIdentifier" type="xsd:string" minOccurs="0" ups:usage="notused"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="ResponseType"> + <xsd:sequence> + <xsd:element name="ResponseStatus" type="common:CodeDescriptionType"/> + <xsd:element name="Alert" type="common:CodeDescriptionType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="TransactionReference" type="common:TransactionReferenceType" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CodeDescriptionType"> + <xsd:sequence> + <xsd:element name="Code" type="xsd:string"/> + <xsd:element name="Description" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> +</xsd:schema> Modified: trunk/templates/tiki-admin-include-payment.tpl =================================================================== --- trunk/templates/tiki-admin-include-payment.tpl 2010-06-14 13:00:18 UTC (rev 27619) +++ trunk/templates/tiki-admin-include-payment.tpl 2010-06-14 16:00:29 UTC (rev 27620) @@ -65,6 +65,13 @@ {preference name=shipping_fedex_account} {preference name=shipping_fedex_meter} </div> + + {preference name=shipping_ups_enable} + <div class="adminoptionboxchild" id="shipping_ups_enable_childcontainer"> + {preference name=shipping_ups_license} + {preference name=shipping_ups_username} + {preference name=shipping_ups_password} + </div> </fieldset> <div class="heading input_submit_container" style="text-align: center"> <input type="submit" name="faqcomprefs" value="{tr}Change settings{/tr}" /> Modified: trunk/tiki-ajax_services.php =================================================================== --- trunk/tiki-ajax_services.php 2010-06-14 13:00:18 UTC (rev 27619) +++ trunk/tiki-ajax_services.php 2010-06-14 16:00:29 UTC (rev 27620) @@ -10,16 +10,8 @@ require_once ('tiki-setup.php'); //require_once ('lib/ajax/ajaxlib.php'); -if ($prefs['feature_jquery'] != 'y' || $prefs['feature_jquery_autocomplete'] != 'y') { - header("location: index.php"); - exit; -} +$access->check_feature( array( 'feature_jquery', 'feature_jquery_autocomplete' ) ); -if (!$user) { // only registered users so far - pending proper perms control TODO! - header("location: index.php"); - exit; -} - if ($access->is_serializable_request() && isset($_REQUEST['listonly'])) { $sep = '|'; if( isset( $_REQUEST['separator'] ) ) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |