I'm getting this notice whenever a customer gets a USPS shipping quote during the checkout process. The order includes two products with package parameters for both set to 7x5x1 inches. Shipping quote options are set to "All products in one package". Package type for each product is "Variable".

Notice: Undefined property: stdClass::$girth in /home/muscl1/public_html/sites/all/modules/ubercart/shipping/uc_usps/uc_usps.module on line 463

Files: 
CommentFileSizeAuthor
#8 1926054.patch411 bytesTR
PASSED: [[SimpleTest]]: [MySQL] 2,839 pass(es).
[ View ]
#6 ubercart_usps_girth-1926054-2.patch1.13 KBsah62
PASSED: [[SimpleTest]]: [MySQL] 2,837 pass(es).
[ View ]
#4 ubercart_usps_girth-1926054-2.patch1.15 KBsah62
FAILED: [[SimpleTest]]: [MySQL] Invalid patch format in ubercart_usps_girth-1926054-2.patch.
[ View ]
#1 ubercart_usps_girth-1926054-1.patch1.12 KBDanZ
PASSED: [[SimpleTest]]: [MySQL] 2,837 pass(es).
[ View ]

Comments

Status:Active» Needs review
StatusFileSize
new1.12 KB
PASSED: [[SimpleTest]]: [MySQL] 2,837 pass(es).
[ View ]

Try this (completely untested) patch and see if it helps.

I'm not sure if this is a complete fix for the problem, but it might help you in the short term.

See https://www.usps.com/business/web-tools-apis/rate-calculators-v1-7a.htm for details.

Thanks for the tip. As-is the patch produces a malformed request that looks like this (note that the opening tag for the Package element is missing):

<RateV4Request USERID="MYID"><Revision>2</Revision><Value>23</Value><Machinable>FALSE</Machinable><ReturnLocations>TRUE</ReturnLocations><ShipDate Option="EMSH">24-Feb-2013</ShipDate></Package></RateV4Request>

I tweaked the code a little differently and got it to work. Here's what it looks like with my change in place:

    for ($i = 0; $i < $qty; $i++) {
      if ($package->size == 'LARGE') {
        $package_dims = '<Width>' . $package->width . '</Width>' .
          '<Length>' . $package->length . '</Length>' .
          '<Height>' . $package->height . '</Height>' .
          '<Girth>' . $package->girth . '</Girth>';
      }
      else {
        $package_dims = '';
      }
      $request .= '<Package ID="' . $package_id . '">' .
        '<Service>' . ($rate_type ? 'ONLINE' : 'ALL') . '</Service>' .
        '<ZipOrigination>' . substr(trim($origin->postal_code), 0, 5) . '</ZipOrigination>' .
        '<ZipDestination>' . substr(trim($destination->postal_code), 0, 5) . '</ZipDestination>' .
        '<Pounds>' . intval($package->pounds) . '</Pounds>' .
        '<Ounces>' . number_format($package->ounces, 1, '.', '') . '</Ounces>' .
        '<Container>' . $package->container . '</Container>' .
        '<Size>' . $package->size . '</Size>' .
        $package_dims .
        '<Value>' . $package->price . '</Value>' .

I won't claim that it's the best way to do it, but as I said it seems to work.

Looks like #1 needs some parentheses.

StatusFileSize
new1.15 KB
FAILED: [[SimpleTest]]: [MySQL] Invalid patch format in ubercart_usps_girth-1926054-2.patch.
[ View ]

Yup, adding parentheses resolved the problem.

Status:Needs review» Needs work

The last submitted patch, ubercart_usps_girth-1926054-2.patch, failed testing.

StatusFileSize
new1.13 KB
PASSED: [[SimpleTest]]: [MySQL] 2,837 pass(es).
[ View ]

Fixed line endings in the patch file.

Status:Needs work» Needs review

Fixing issue status...

Priority:Normal» Minor
StatusFileSize
new411 bytes
PASSED: [[SimpleTest]]: [MySQL] 2,839 pass(es).
[ View ]

This bug was introduced just recently by #1364508: USPS error: Dimensions are missing for package; unable to calculate postage., which is why I REALLY do not like to see changes committed unless there's a real patch, not just a few lines of suggested text. A real patch ensures the testbot will look at it, and catch stupid things like this. I moved this to minor because it's a PHP Notice that doesn't appear to the customer.

A simpler fix is just to ensure that girth is initialized, just like width, length, and height are. Please try this out and see if it eliminates the notice.

Much simpler, and yes, it eliminates the warning. Thanks!

Status:Needs review» Reviewed & tested by the community

The testbot and sah62 seem to like it, so RTBC.

Status:Reviewed & tested by the community» Fixed

Okay then. Committed patch from #8. Thanks for the bug report.

Thanks for the fix.

Testbot would not have caught this anyway, as there are no tests for USPS. I did not commit it blindly either; I now have a USPS account precisely so I could test the outstanding patches in this queue before committing. Unfortunately, I did not catch this case!

Status:Fixed» Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.

Issue summary:View changes

Added note about product package type.