Giter Site home page Giter Site logo

Comments (6)

perrytew avatar perrytew commented on September 22, 2024

No changes that I know of. Please give me an example city/state/country/postal code that is returning the wrong values. I need something I can reproduce to form a test case.

from responsive_checkout.

radiofreequebecistan avatar radiofreequebecistan commented on September 22, 2024

Hi Perry,

Sure, here's an example I just ran.

Step 1: update the cart with the new shipToCountry (Kenya in this case)

Request:

PUT /cart/relay?_url=%2Frest%2Fcart HTTP/1.1
Host: www.mydomain.com
Connection: keep-alive
Content-Length: 4100
Origin: https://www.mydomain.com
X-UC-Merchant-Id: RD
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36
Content-Type: application/json; charset=UTF-8
Accept: application/json, text/javascript, /; q=0.01
cache-control: no-cache
X-Requested-With: XMLHttpRequest
Referer: https://www.mydomain.com/cart/checkout
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: PHPSESSID=15kjfb3gukn8jcfr8gt47d93e0

{"total":335,"password":null,"email":"","merchantId":"RD","errors":null,"screenBrandingThemeCode":"DFLT","items":[{"position":1,"length":{"value":0,"uom":"IN"},"attributes":[],"description":"Weight Loss Formula No.1 - 30 Day Supply","weight":{"value":0.3,"uom":"LB"},"options":[],"unitCostWithDiscount":67,"quantity":5,"height":{"value":0,"uom":"IN"},"width":{"value":0,"uom":"IN"},"variations":{},"unitCost":67,"kit":false,"preorder":false,"upsell":false,"extendedDescription":"","arbitraryUnitCost":null,"maximumQuantity":null,"itemId":"WLF1","autoOrderSchedule":null,"autoOrderLastRebillDts":null,"minimumQuantity":1,"multimedias":[{"type":"Image","description":"","default":true,"code":null,"imageWidth":80,"imageHeight":80,"excludeFromGallery":false,"viewUrl":"http://secure.mydomain.com/itemmultimedia/RD/WLF1/th_wlf1.png","thumbnails":[{"height":80,"width":80,"httpUrl":"https://secure.ultracart.com/thumbs/1367363426250/RD/9/D/80-80-9D550661CEE964145215CEEAFC563192.jpg","httpsUrl":"http://secure.ultracart.com/thumbs/1367363426250/RD/9/D/80-80-9D550661CEE964145215CEEAFC563192.jpg"}]}],"manufacturerSuggestedRetailPrice":null,"itemOid":3560188,"viewUrl":"http://www.mydomain.com/store/weight-loss/formula-no-1/","kitComponentOptions":[],"defaultImageUrl":"http://secure.mydomain.com/itemmultimedia/RD/WLF1/th_wlf1.png","defaultThumbnailUrl":"https://secure.ultracart.com/thumbs/1367363426249/RD/9/D/80-80-9D550661CEE964145215CEEAFC563192.jpg"}],"buysafeBondAvailable":false,"buysafeBondWanted":false,"buysafeBondCost":null,"insureShipAvailable":false,"insureShipWanted":null,"insureShipCost":null,"subtotalDiscount":0,"tax":0,"customField1":null,"customField2":null,"customField3":null,"customField4":null,"customField5":null,"customField6":null,"customField7":null,"customerProfile":null,"shipToCountry":"Kenya","insureShipSeparate":false,"surcharge":0,"shipToFirstName":"","shipToLastName":"","shipToCompany":"","shipToAddress1":"","shipToAddress2":"","shipToCity":"","shipToState":"","shipToPhone":"","taxRate":0,"shippingMethod":"calculating shipping options…","taxableSubtotal":335,"taxableSubtotalDiscount":0,"advertisingSource":"","paymentMethod":"Unknown","specialInstructions":"","subtotal":335,"ipAddress":"71.208.36.181","deliveryDate":null,"shipToResidential":true,"coupons":[],"taxCounty":"","billToFirstName":"","billToLastName":"","giftEmail":null,"shipToTitle":"","shipOnDate":null,"gift":false,"giftCharge":0,"giftWrapCost":0,"giftMessage":null,"purchaseOrderNumber":"","giftCertificateAmount":0,"shipToEveningPhone":"","ccEmail":null,"creditCardToken":null,"liftGate":false,"taxExempt":false,"billToCompany":"","billToAddress1":"","billToAddress2":"","billToCity":"","billToState":"","billToCountry":"Trinidad & Tobago","billToEveningPhone":"","buysafeBondFree":false,"buysafeBondingSignal":null,"buysafeCartDisplayText":null,"buysafeCartDisplayUrl":null,"arbitraryTax":null,"arbitraryTaxableSubtotal":null,"arbitraryTaxRate":null,"emailConfirm":"","arbitraryShippingHandlingTotal":null,"threatMetrixParams":null,"creditCardType":"","creditCardExpirationMonth":"0","creditCardExpirationYear":"0","creditCardNumber":"","affiliateId":null,"giftCertificate":null,"loggedIn":false,"creditCardVerificationNumber":"","creditCardTypes":["AMEX","Discover","MasterCard","Visa"],"billToDayPhone":"","billToPostalCode":"","billToTitle":"","shippingHandlingDiscount":0,"shipToPostalCode":"","shippingHandling":0,"mailingListOptIn":true,"hasGoogleCheckout":false,"googleCheckoutCompatible":false,"googleCheckoutButtonUrl":null,"googleCheckoutButtonAltText":null,"payPalButtonUrl":"https://www.paypal.com/en_US/i/btn/btn_xpressCheckoutsm.gif","payPalButtonAltText":"Fast, secure checkout with PayPal","hasPayPal":true,"payPalCompatible":true,"subtotalWithDiscount":335,"taxableSubtotalWithDiscount":335,"shippingHandlingWithDiscount":0,"giftCertificateRemainingBalanceAfterOrder":null,"cartId":"B571FCE4D9528101415BD3438E051600","buysafeBondingSignalJavascript":null,"collectCreditCardVerificationNumber":false,"needShipping":true,"diagnostics":null,"customerProfileCreditCardId":null}

Response:

HTTP/1.1 200 OK
Date: Fri, 27 Sep 2013 14:31:46 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.4.19
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
X-debug-forwarded-to: https://secure.ultracart.com/rest/cart
Keep-Alive: timeout=15, max=100
Vary: Accept-Encoding,User-Agent
Content-Encoding: gzip
RD-server: web1
Content-Length: 1604
Connection: close
Content-Type: application/json

{"total":335.00,"password":null,"email":"","merchantId":"RD","errors":null,"screenBrandingThemeCode":"DFLT","items":[{"position":1,"length":{"value":0.00000,"uom":"IN"},"attributes":[],"description":"Weight Loss Formula No.1 - 30 Day Supply","weight":{"value":0.30000,"uom":"LB"},"options":[],"unitCostWithDiscount":67.00,"quantity":5,"height":{"value":0.00000,"uom":"IN"},"width":{"value":0.00000,"uom":"IN"},"variations":{},"unitCost":67.00,"kit":false,"preorder":false,"upsell":false,"extendedDescription":"","arbitraryUnitCost":null,"maximumQuantity":null,"itemId":"WLF1","autoOrderSchedule":null,"autoOrderLastRebillDts":null,"minimumQuantity":1,"multimedias":[{"type":"Image","description":"","default":true,"code":null,"imageWidth":80,"imageHeight":80,"excludeFromGallery":false,"viewUrl":"http://secure.mydomain.com/itemmultimedia/RD/WLF1/th_wlf1.png","thumbnails":[{"height":80,"width":80,"httpsUrl":"http://secure.ultracart.com/thumbs/1367363426250/RD/9/D/80-80-9D550661CEE964145215CEEAFC563192.jpg","httpUrl":"https://secure.ultracart.com/thumbs/1367363426250/RD/9/D/80-80-9D550661CEE964145215CEEAFC563192.jpg"}]}],"manufacturerSuggestedRetailPrice":null,"itemOid":3560188,"viewUrl":"http://www.mydomain.com/store/weight-loss/formula-no-1/","kitComponentOptions":[],"defaultImageUrl":"http://secure.mydomain.com/itemmultimedia/RD/WLF1/th_wlf1.png","defaultThumbnailUrl":"https://secure.ultracart.com/thumbs/1367363426249/RD/9/D/80-80-9D550661CEE964145215CEEAFC563192.jpg"}],"buysafeBondAvailable":false,"buysafeBondWanted":false,"buysafeBondCost":null,"insureShipAvailable":false,"insureShipWanted":null,"insureShipCost":null,"subtotalDiscount":0,"tax":0.00,"customField1":null,"customField2":null,"customField3":null,"customField4":null,"customField5":null,"customField6":null,"customField7":null,"customerProfile":null,"shipToCountry":"Kenya","insureShipSeparate":false,"surcharge":0.00,"shipToFirstName":"","shipToLastName":"","shipToCompany":"","shipToAddress1":"","shipToAddress2":"","shipToCity":"","shipToState":"","shipToPhone":"","taxRate":0,"shippingMethod":"calculating shipping options…","taxableSubtotal":335.00000,"taxableSubtotalDiscount":0,"advertisingSource":"","paymentMethod":"Unknown","specialInstructions":"","subtotal":335.00,"ipAddress":"71.208.36.181","deliveryDate":null,"shipToResidential":true,"coupons":[],"taxCounty":"","billToFirstName":"","billToLastName":"","giftEmail":null,"shipToTitle":"","shipOnDate":null,"gift":false,"giftCharge":0.00,"giftWrapCost":0.00,"giftMessage":null,"purchaseOrderNumber":"","giftCertificateAmount":0.00,"shipToEveningPhone":"","ccEmail":null,"creditCardToken":null,"liftGate":false,"taxExempt":false,"billToCompany":"","billToAddress1":"","billToAddress2":"","billToCity":"","billToState":"","billToCountry":"Trinidad & Tobago","billToEveningPhone":"","buysafeBondFree":false,"buysafeBondingSignal":null,"buysafeCartDisplayText":null,"buysafeCartDisplayUrl":null,"arbitraryTax":null,"arbitraryTaxableSubtotal":null,"arbitraryTaxRate":null,"emailConfirm":"","arbitraryShippingHandlingTotal":null,"threatMetrixParams":null,"creditCardType":"","creditCardExpirationMonth":0,"creditCardExpirationYear":0,"creditCardNumber":"","affiliateId":null,"giftCertificate":null,"loggedIn":false,"shippingHandlingWithDiscount":0.00,"creditCardVerificationNumber":"","giftCertificateRemainingBalanceAfterOrder":null,"hasGoogleCheckout":false,"googleCheckoutCompatible":false,"googleCheckoutButtonUrl":null,"googleCheckoutButtonAltText":null,"payPalButtonUrl":"https://www.paypal.com/en_US/i/btn/btn_xpressCheckoutsm.gif","payPalButtonAltText":"Fast, secure checkout with PayPal","hasPayPal":true,"payPalCompatible":true,"mailingListOptIn":true,"subtotalWithDiscount":335.00,"taxableSubtotalWithDiscount":335.00000,"shippingHandling":0.00,"shippingHandlingDiscount":0,"shipToPostalCode":"","billToDayPhone":"","billToTitle":"","billToPostalCode":"","cartId":"B571FCE4D9528101415BD3438E051600","creditCardTypes":["AMEX","Discover","MasterCard","Visa"],"buysafeBondingSignalJavascript":null,"collectCreditCardVerificationNumber":false,"needShipping":true,"diagnostics":null,"customerProfileCreditCardId":null}

Step 2: Now that the cart is updated, I run estimateShipping:

Request:

POST /cart/relay?_url=%2Frest%2Fcart%2FestimateShipping HTTP/1.1
Host: www.mydomain.com
Connection: keep-alive
Content-Length: 4100
Origin: https://www.mydomain.com
X-UC-Merchant-Id: RD
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36
Content-Type: application/json; charset=UTF-8
Accept: application/json, text/javascript, /; q=0.01
cache-control: no-cache
X-Requested-With: XMLHttpRequest
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: PHPSESSID=15kjfb3gukn8jcfr8gt47d93e0

{"total":335,"password":null,"email":"","merchantId":"RD","errors":null,"screenBrandingThemeCode":"DFLT","items":[{"position":1,"length":{"value":0,"uom":"IN"},"attributes":[],"description":"Weight Loss Formula No.1 - 30 Day Supply","weight":{"value":0.3,"uom":"LB"},"options":[],"unitCostWithDiscount":67,"quantity":5,"height":{"value":0,"uom":"IN"},"width":{"value":0,"uom":"IN"},"variations":{},"unitCost":67,"kit":false,"preorder":false,"upsell":false,"extendedDescription":"","arbitraryUnitCost":null,"maximumQuantity":null,"itemId":"WLF1","autoOrderSchedule":null,"autoOrderLastRebillDts":null,"minimumQuantity":1,"multimedias":[{"type":"Image","description":"","default":true,"code":null,"imageWidth":80,"imageHeight":80,"excludeFromGallery":false,"viewUrl":"http://secure.mydomain.com/itemmultimedia/RD/WLF1/th_wlf1.png","thumbnails":[{"height":80,"width":80,"httpUrl":"https://secure.ultracart.com/thumbs/1367363426250/RD/9/D/80-80-9D550661CEE964145215CEEAFC563192.jpg","httpsUrl":"http://secure.ultracart.com/thumbs/1367363426250/RD/9/D/80-80-9D550661CEE964145215CEEAFC563192.jpg"}]}],"manufacturerSuggestedRetailPrice":null,"itemOid":3560188,"viewUrl":"http://www.mydomain.com/store/weight-loss/formula-no-1/","kitComponentOptions":[],"defaultImageUrl":"http://secure.mydomain.com/itemmultimedia/RD/WLF1/th_wlf1.png","defaultThumbnailUrl":"https://secure.ultracart.com/thumbs/1367363426249/RD/9/D/80-80-9D550661CEE964145215CEEAFC563192.jpg"}],"buysafeBondAvailable":false,"buysafeBondWanted":false,"buysafeBondCost":null,"insureShipAvailable":false,"insureShipWanted":null,"insureShipCost":null,"subtotalDiscount":0,"tax":0,"customField1":null,"customField2":null,"customField3":null,"customField4":null,"customField5":null,"customField6":null,"customField7":null,"customerProfile":null,"shipToCountry":"Kenya","insureShipSeparate":false,"surcharge":0,"shipToFirstName":"","shipToLastName":"","shipToCompany":"","shipToAddress1":"","shipToAddress2":"","shipToCity":"","shipToState":"","shipToPhone":"","taxRate":0,"shippingMethod":"calculating shipping options…","taxableSubtotal":335,"taxableSubtotalDiscount":0,"advertisingSource":"","paymentMethod":"Unknown","specialInstructions":"","subtotal":335,"ipAddress":"71.208.36.181","deliveryDate":null,"shipToResidential":true,"coupons":[],"taxCounty":"","billToFirstName":"","billToLastName":"","giftEmail":null,"shipToTitle":"","shipOnDate":null,"gift":false,"giftCharge":0,"giftWrapCost":0,"giftMessage":null,"purchaseOrderNumber":"","giftCertificateAmount":0,"shipToEveningPhone":"","ccEmail":null,"creditCardToken":null,"liftGate":false,"taxExempt":false,"billToCompany":"","billToAddress1":"","billToAddress2":"","billToCity":"","billToState":"","billToCountry":"Trinidad & Tobago","billToEveningPhone":"","buysafeBondFree":false,"buysafeBondingSignal":null,"buysafeCartDisplayText":null,"buysafeCartDisplayUrl":null,"arbitraryTax":null,"arbitraryTaxableSubtotal":null,"arbitraryTaxRate":null,"emailConfirm":"","arbitraryShippingHandlingTotal":null,"threatMetrixParams":null,"creditCardType":"","creditCardExpirationMonth":"0","creditCardExpirationYear":"0","creditCardNumber":"","affiliateId":null,"giftCertificate":null,"loggedIn":false,"creditCardVerificationNumber":"","creditCardTypes":["AMEX","Discover","MasterCard","Visa"],"billToDayPhone":"","billToPostalCode":"","billToTitle":"","shippingHandlingDiscount":0,"shipToPostalCode":"","shippingHandling":0,"mailingListOptIn":true,"hasGoogleCheckout":false,"googleCheckoutCompatible":false,"googleCheckoutButtonUrl":null,"googleCheckoutButtonAltText":null,"payPalButtonUrl":"https://www.paypal.com/en_US/i/btn/btn_xpressCheckoutsm.gif","payPalButtonAltText":"Fast, secure checkout with PayPal","hasPayPal":true,"payPalCompatible":true,"subtotalWithDiscount":335,"taxableSubtotalWithDiscount":335,"shippingHandlingWithDiscount":0,"giftCertificateRemainingBalanceAfterOrder":null,"cartId":"B571FCE4D9528101415BD3438E051600","buysafeBondingSignalJavascript":null,"collectCreditCardVerificationNumber":false,"needShipping":true,"diagnostics":null,"customerProfileCreditCardId":null}

Response: (is incorrect - should be Worldwide shipping according to our setup)

HTTP/1.1 200 OK
Date: Fri, 27 Sep 2013 14:31:47 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.4.19
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
X-debug-forwarded-to: https://secure.ultracart.com/rest/cart/estimateShipping
Keep-Alive: timeout=15, max=100
Vary: Accept-Encoding,User-Agent
Content-Encoding: gzip
RD-server: web1
Content-Length: 199
Connection: close
Content-Type: application/json

[{"name":"FREE Express: 2-5 days","displayName":"FREE Express: 2-5 days","comment":"","tax":0,"cost":0.00,"discount":0.00,"costBeforeDiscount":0.00,"discounted":false,"estimatedDelivery":"","defaultMethod":true,"totalTax":0.00},{"name":"UPS Express: 2 days","displayName":"UPS Express: 2 days","comment":"","tax":0,"cost":14.95,"discount":0.00,"costBeforeDiscount":14.95,"discounted":false,"estimatedDelivery":"","defaultMethod":false,"totalTax":0.00}]

Let me know if you need anything else to trace this,

jfh

On Sep 27, 2013, at 4:31 AM, Perry Tew [email protected] wrote:

No changes that I know of. Please give me an example city/state/country/postal code that is returning the wrong values. I need something I can reproduce to form a test case.


Reply to this email directly or view it on GitHub.

from responsive_checkout.

perrytew avatar perrytew commented on September 22, 2024

Jean-Francois,

I pulled up the item you're using above in the regular checkout and I receive the same shipping estimates. Since I was logged in, I could view the packing solution. It shows this:

FREE Express: 2-5 days

Package 1.

Name Fake Box
Dimensions 10 IN x 10 IN x 10 IN
Origination CO, 80019, United States (DFLT)
Destination NE, 68127, United States
Shipped On 09/28/2013 (Sat)
Delivery N/A
Residential Yes
Package Cost $0.00
Shipping Cost $0.00
Insurance Value $67.00
Insurance Cost $0.00
Weight (Empty Package) 0 LB (= 0 OZ)
Weight (Estimated) 0.3 LB (= 4.8 OZ)
Weight (Actual) 0.3 LB (= 4.8 OZ)
Item Count 1
Calculation Type cost
Special Box Type
Items WLF1 - 0.3 LB (= 4.8 OZ) - 67.00

You'll notice that the shipping estimate is using the center of the US (Nebraska) as the DESTINATION for estimations. The country (alone) is not enough to provide an estimation. It needs more information.

If I enter the following address (happens to be a mall in Kenya):
Address: Langata Road
City: Nairobi
State: Nairobi
Zip Code: 00621 (not sure about this value...)
Country: Kenya

Then I receive only one shipping option: Worldwide Standard.

At first reflection, it would seem like the estimation should be able to at least use Kenya by itself and do an estimation. However, the foreign countries have very different standards, and our shipping has additional rules (tons of them) that could/would provide inaccurate results if it used just a single field.

Thanks,
Perry

from responsive_checkout.

radiofreequebecistan avatar radiofreequebecistan commented on September 22, 2024

Hi Perry,

Thanks for looking into this and explaining. Our interface requires quoting shipping prices after a country choice, so I'll find a workaround.

jfh

On Sep 27, 2013, at 11:43 PM, Perry Tew [email protected] wrote:

Jean-Francois,

I pulled up the item you're using above in the regular checkout and I receive the same shipping estimates. Since I was logged in, I could view the packing solution. It shows this:

FREE Express: 2-5 days

Package 1.

Name Fake Box
Dimensions 10 IN x 10 IN x 10 IN
Origination CO, 80019, United States (DFLT)
Destination NE, 68127, United States
Shipped On 09/28/2013 (Sat)
Delivery N/A
Residential Yes
Package Cost $0.00
Shipping Cost $0.00
Insurance Value $67.00
Insurance Cost $0.00
Weight (Empty Package) 0 LB (= 0 OZ)
Weight (Estimated) 0.3 LB (= 4.8 OZ)
Weight (Actual) 0.3 LB (= 4.8 OZ)
Item Count 1
Calculation Type cost
Special Box Type

Items WLF1 - 0.3 LB (= 4.8 OZ) - 67.00

You'll notice that the shipping estimate is using the center of the US (Nebraska) as the DESTINATION for estimations. The country (alone) is not enough to provide an estimation. It needs more information.

If I enter the following address (happens to be a mall in Kenya):
Address: Langata Road
City: Nairobi
State: Nairobi
Zip Code: 00621 (not sure about this value...)
Country: Kenya

Then I receive only one shipping option: Worldwide Standard.

At first reflection, it would seem like the estimation should be able to at least use Kenya by itself and do an estimation. However, the foreign countries have very different standards, and our shipping has additional rules (tons of them) that could/would provide inaccurate results if it used just a single field.

Thanks,
Perry


Reply to this email directly or view it on GitHub.

from responsive_checkout.

perrytew avatar perrytew commented on September 22, 2024

Hey. The fine people in development have relaxed the shipping estimating for foreign countries. I just tested it, and I'm receiving shipping estimates for Kenya without having to provide anything more than the country. Hope this helps.

Thanks,
Perry

from responsive_checkout.

radiofreequebecistan avatar radiofreequebecistan commented on September 22, 2024

Thanks!

On Nov 1, 2013, at 11:44 AM, Perry Tew [email protected] wrote:

Hey. The fine people in development have relaxed the shipping estimating for foreign countries. I just tested it, and I'm receiving shipping estimates for Kenya without having to provide anything more than the country. Hope this helps.

Thanks,
Perry


Reply to this email directly or view it on GitHub.

from responsive_checkout.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.