ward

package module
v0.0.0-...-c4d81be Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 20, 2019 License: MIT Imports: 7 Imported by: 0

README

wardtrucking

Golang Code to Work With the Ward Trucking API

This is used for scheduling pickups or getting rate quotes using the Ward Trucking API. This is used so you don't have to call or use the Ward website to schedule these pickups.

See the code for usage instructions.

Documentation

Overview

Package ward provides tooling to connect to the Ward Trucking API. This is for truck shipments, not small parcels. Think LTL (less than truckload) shipments. This code was created off the Ward API documentation. This uses and XML SOAP API.

You will need to have a Ward account and register for access to use this.

Currently this package can perform: - pickup requests - rate quotes

To create a pickup request: - Set test or production mode (SetProductionMode()). - Set shipper information (ShipperInfomation{}). - Set shipment data (PickupRequestShipment{}). - Create the pickup request object (PickupRequest{}). - Request the pickup (RequestPickup()). - Check for any errors.

To get a rate quote: - Create the item you want a quote on (RateQuoteDetailItem{}). - Create the inner request with details (RateQuoteRequestInner{}). - Create the rate quote request (RateQuoteRequest{}). - Request the rate quote (RateQuote()). - Check for any errors.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SetProductionMode

func SetProductionMode(yes bool)

SetProductionMode chooses the production url for use

func SetTimeout

func SetTimeout(seconds time.Duration)

SetTimeout updates the timeout value to something the user sets use this to increase the timeout if connecting to Ward is really slow

Types

type PickupRequest

type PickupRequest struct {
	XMLName xml.Name `xml:"soap12:Envelope"`

	XsiAttr    string `xml:"xmlns:xsi,attr"`    //http://www.w3.org/2001/XMLSchema-instance
	XsdAttr    string `xml:"xmlns:xsd,attr"`    //http://www.w3.org/2001/XMLSchema
	Soap12Attr string `xml:"xmlns:soap12,attr"` //http://www.w3.org/2003/05/soap-envelope

	ShipperInfo PickupRequestShipperInformation `xml:"soap12:Body>request>ShipperInformation"`
	Shipment    PickupRequestShipment           `xml:"soap12:Body>request>Shipment"`
}

PickupRequest is the main body of the xml request to schedule a pickup

func (*PickupRequest) RequestPickup

func (p *PickupRequest) RequestPickup() (responseData PickupRequestResponse, err error)

RequestPickup performs the call to the Ward API to schedule a pickup

type PickupRequestResponse

type PickupRequestResponse struct {
	XMLName      xml.Name                    `xml:"Envelope"`                         //dont need "soap12"
	CreateResult PickupRequestResponseResult `xml:"Body>CreateResponse>CreateResult"` //dont need "soap12"
}

PickupRequestResponse is the data we get back when a pickup is scheduled successfully

type PickupRequestResponseResult

type PickupRequestResponseResult struct {
	PickupConfirmation string //the pickup request confirmation number
	Message            string
	PickupTerminal     string
	WardTelephone      string
	WardEmail          string
}

PickupRequestResponseResult is the actual body of the pickup request response

type PickupRequestShipment

type PickupRequestShipment struct {
	Pieces                       uint
	PackageCode                  string //code per Ward's website
	Weight                       uint   //lbs
	ConsigneeCode                string
	ConsigneeName                string
	ConsigneeAddress1            string
	ConsigneeAddress2            string
	ConsigneeCity                string
	ConsigneeState               string
	ConsigneeZipcode             string
	ShipperRoutingSCAC           string
	Hazardous                    string //Y or N
	Freezable                    string //Y or N
	DeliveryAppntFlag            string //Y or N
	DeliveryAppntDate            string
	WardAssured12PM              string
	WardAssured03PM              string
	WardAssuredTimeDefinite      string
	WardAssuredTimeDefiniteStart string
	WardAssuredTimeDefiniteEnd   string
	FullValue                    string
	FullValueInsuredAmount       string
	NonStandardSize              string
	NonStandardSizeDescription   string
	RequestorReference           string
	PickupShipmentInstruction1   string
	PickupShipmentInstruction2   string
	PickupShipmentInstruction3   string
	PickupShipmentInstruction4   string
	RequestOrigin                string
}

PickupRequestShipment is the data on the shipment we are requesting a pickup for

type PickupRequestShipperInformation

type PickupRequestShipperInformation struct {
	ShipperCode                 string //ward account number
	ShipperName                 string //company name
	ShipperAddress1             string
	ShipperAddress2             string
	ShipperCity                 string
	ShipperState                string //xx
	ShipperZipcode              string
	ShipperContactName          string
	ShipperContactTelephone     string //xxxxxxxxxx, only numbers
	ShipperContactEmail         string
	ShipperReadyTime            string //hhmm, 24 hour
	ShipperCloseTime            string //hhmm, 24 hour
	PickupDate                  string //mmddyyyy
	ThirdParty                  string
	ThirdPartyName              string
	ThirdPartyContactName       string
	ThirdPartyContactTelephone  string
	ThirdPartyContactEmail      string
	WardAssuredContactName      string
	WardAssuredContactTelephone string
	WardAssuredContactEmail     string
	ShipperRestriction          string
	DriverNote1                 string
	DriverNote2                 string
	DriverNote3                 string
	RequestOrigin               string //who is making the pickup request
	RequestorUser               string
	RequestorRole               string
	RequestorContactName        string
	RequestorContactTelephone   string
	RequestorContactEmail       string
}

PickupRequestShipperInformation is our ship from address

type RateQuoteAccessorialItem

type RateQuoteAccessorialItem struct {
	Code string `xml:"Code"`

	//in response only
	Description string  `xml:"Description,omitempty"`
	Amount      float64 `xml:"Amount,omitempty"`
}

RateQuoteAccessorialItem is a code to note special characteristics of this rate quote protect from freeze, inside dock, liftgate, etc. See ward api doc for codes to use.

type RateQuoteDetailItem

type RateQuoteDetailItem struct {
	Weight uint `xml:"Weight"` //lbs
	Pieces uint `xml:"Pieces"` // > 0
	Class  uint `xml:"Class"`  //freight class, i.e. class 50, 55, 80, 100, etc.
}

RateQuoteDetailItem is the details for the goods you need a rate quote on one of these for each weight/pieces/class combo

type RateQuoteRequest

type RateQuoteRequest struct {
	XMLName xml.Name `xml:"soap12:Envelope"`

	XsiAttr    string `xml:"xmlns:xsi,attr"`    //http://www.w3.org/2001/XMLSchema-instance
	XsdAttr    string `xml:"xmlns:xsd,attr"`    //http://www.w3.org/2001/XMLSchema
	Soap12Attr string `xml:"xmlns:soap12,attr"` //http://www.w3.org/2003/05/soap-envelope

	Request RateQuoteRequestInner `xml:"soap12:Body>request"`
}

RateQuoteRequest is the main body of the xml request to get a rate quote

func (*RateQuoteRequest) RateQuote

func (p *RateQuoteRequest) RateQuote() (responseData RateQuoteResponse, err error)

RateQuote performs the call to the Ward API to get a rate quote

type RateQuoteRequestInner

type RateQuoteRequestInner struct {
	Details            []RateQuoteDetailItem      `xml:"Details>DetailItem"`
	Accessorials       []RateQuoteAccessorialItem `xml:"Accessorials>AccessorialItem"`
	BillingTerms       string                     `xml:"BillingTerms"` //not sure what this is (prepaid/collect?)
	OriginCity         string                     `xml:"OriginCity"`
	OriginState        string                     `xml:"OriginState"` //two char code
	OriginZipcode      string                     `xml:"OriginZipcode"`
	DestinationCity    string                     `xml:"DestinationCity"`
	DestinationState   string                     `xml:"DestinationState"` //who char code
	DestinationZipcode string                     `xml:"DestinationZipcode"`
	PalletCount        uint                       `xml:"PalletCount"` //should be sum of values from RateQuoteDetailItem pieces
	Customer           string                     `xml:"Customer"`    //your Ward account number to get valid rates with
}

RateQuoteRequestInner is the inner request data. This has the actual details of the shipment you want to get a quote on.

type RateQuoteResponse

type RateQuoteResponse struct {
	XMLName      xml.Name                `xml:"Envelope"`                         //dont need "soap12"
	CreateResult RateQuoteResponseResult `xml:"Body>CreateResponse>CreateResult"` //dont need "soap12"
}

RateQuoteResponse is the format of data returned from a rate quote request when a rate is retrieved successfully

type RateQuoteResponseRateDetails

type RateQuoteResponseRateDetails struct {
	Class            string                     `xml:"Class"`  //this will have some leading and trailing zeros for some reason
	Weight           uint                       `xml:"Weight"` //lbs
	Amount           float64                    `xml:"Amount"`
	Rate             float64                    `xml:"Rate"`
	Pieces           uint                       `xml:"Pieces"`
	RateAccessorials []RateQuoteAccessorialItem `xml:"RateAccessorials"`
}

RateQuoteResponseRateDetails is some inner info about the rate quote

type RateQuoteResponseResult

type RateQuoteResponseResult struct {
	OriginServiceCenter      ServiceCenter `xml:"OriginServiceCenter"`
	DestinationServiceCenter ServiceCenter `xml:"DestinationServiceCenter"`
	CustomerService          struct {
		Phone string
	} `xml:"CustomerService"`
	Customer             string                         `xml:"Customer"`
	ShipZip              string                         `xml:"ShipZip"`
	ConsZip              string                         `xml:"ConsZip"`
	DiscountPercent      float64                        `xml:"DiscountPercent"`
	DiscountAmount       float64                        `xml:"DiscountAmount"`
	FuelSurchargePercent float64                        `xml:"FuelSurchargePercent"`
	FuelSurchargeAmount  float64                        `xml:"FuelSurchargeAmount"`
	NetCharge            float64                        `xml:"NetCharge"` //the actual rate quote dollar value
	Tarrif               string                         `xml:"Tarrif"`
	PricingEffectiveDate string                         `xml:"PricingEffectiveDate"` //mm/dd/yy
	QuoteID              string                         `xml:"QuoteID"`
	RateDetails          []RateQuoteResponseRateDetails `xml:"RateDetails"`
}

RateQuoteResponseResult is the actual body of the pickup request response

type ServiceCenter

type ServiceCenter struct {
	ID          uint   `xml:"ID"`
	Name        string `xml:"Name"`
	Manager     string `xml:"Manager"`
	Address     string `xml:"Address"`
	City        string `xml:"City"`
	State       string `xml:"State"` //two char code
	ZipCode     string `xml:"ZipCode"`
	TransitDays uint   `xml:"TransitDays"`
	Fax         string `xml:"Fax"`
	Phone       string `xml:"Phone"`
}

ServiceCenter is the freight terminal that handles a pickup or delivery

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL