Add pounds/ounces
This commit is contained in:
parent
9a9fca51d5
commit
ef5bbc91dd
1
.gitignore
vendored
1
.gitignore
vendored
@ -5,3 +5,4 @@ coverage_report
|
||||
!.idea/runConfigurations/
|
||||
.DS_Store
|
||||
live_phpunit.sh
|
||||
/nbproject/private/
|
@ -1,6 +1,7 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Jamie Isaacs <pdt256@gmail.com>
|
||||
Copyright (c) 2020 Netsyms Technologies <opensource@netsyms.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
13
README.md
13
README.md
@ -15,19 +15,6 @@ Multiple packages can be added to get additional rates.
|
||||
All code (including tests) conform to the PSR-2 coding standards.
|
||||
The namespace and autoloader are using the PSR-4 standard.
|
||||
|
||||
All pull requests are processed by Travis CI to conform to PSR-2 and to verify all unit tests pass.
|
||||
|
||||
## Installation
|
||||
|
||||
Add the following lines to your ``composer.json`` file.
|
||||
|
||||
```JSON
|
||||
{
|
||||
"require": {
|
||||
"pdt256/shipping": "1.0.*"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Example
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "pdt256/shipping",
|
||||
"name": "netsyms/shippingrates",
|
||||
"description": "Shipping Rate API",
|
||||
"license": "MIT",
|
||||
"keywords": ["ship", "ups", "usps", "fedex"],
|
||||
@ -7,7 +7,11 @@
|
||||
{
|
||||
"name": "Jamie Isaacs",
|
||||
"email": "pdt256@gmail.com"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Netsyms Technologies",
|
||||
"email": "opensource@netsyms.com"
|
||||
},
|
||||
],
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
|
22
nbproject/project.properties
Normal file
22
nbproject/project.properties
Normal file
@ -0,0 +1,22 @@
|
||||
auxiliary.org-netbeans-modules-php-phpunit.bootstrap_2e_create_2e_tests=false
|
||||
auxiliary.org-netbeans-modules-php-phpunit.bootstrap_2e_enabled=false
|
||||
auxiliary.org-netbeans-modules-php-phpunit.bootstrap_2e_path=
|
||||
auxiliary.org-netbeans-modules-php-phpunit.configuration_2e_enabled=false
|
||||
auxiliary.org-netbeans-modules-php-phpunit.configuration_2e_path=
|
||||
auxiliary.org-netbeans-modules-php-phpunit.customSuite_2e_enabled=false
|
||||
auxiliary.org-netbeans-modules-php-phpunit.customSuite_2e_path=
|
||||
auxiliary.org-netbeans-modules-php-phpunit.phpUnit_2e_enabled=false
|
||||
auxiliary.org-netbeans-modules-php-phpunit.phpUnit_2e_path=
|
||||
auxiliary.org-netbeans-modules-php-phpunit.test_2e_groups_2e_ask=false
|
||||
auxiliary.org-netbeans-modules-php-phpunit.test_2e_run_2e_all=false
|
||||
auxiliary.org-netbeans-modules-php-phpunit.test_2e_run_2e_phpunit_2e_only=false
|
||||
file.reference.ShippingRates-tests=tests
|
||||
include.path=${php.global.include.path}
|
||||
php.version=PHP_73
|
||||
source.encoding=UTF-8
|
||||
src.dir=src
|
||||
tags.asp=false
|
||||
tags.short=false
|
||||
test.src.dir=${file.reference.ShippingRates-tests}
|
||||
testing.providers=PhpUnit
|
||||
web.root=.
|
9
nbproject/project.xml
Normal file
9
nbproject/project.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://www.netbeans.org/ns/project/1">
|
||||
<type>org.netbeans.modules.php.project</type>
|
||||
<configuration>
|
||||
<data xmlns="http://www.netbeans.org/ns/php-project/1">
|
||||
<name>ShippingRates</name>
|
||||
</data>
|
||||
</configuration>
|
||||
</project>
|
@ -1,35 +1,63 @@
|
||||
<?php namespace pdt256\Shipping;
|
||||
<?php
|
||||
|
||||
class Package
|
||||
{
|
||||
protected $weight;
|
||||
namespace pdt256\Shipping;
|
||||
|
||||
class Package {
|
||||
|
||||
protected $pounds;
|
||||
protected $ounces;
|
||||
protected $width;
|
||||
protected $length;
|
||||
protected $height;
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getWeight()
|
||||
{
|
||||
return $this->weight;
|
||||
public function getWeight() {
|
||||
$weight = 0;
|
||||
if (!empty($this->getPounds())) {
|
||||
$weight += $this->getPounds();
|
||||
}
|
||||
if (!empty($this->getOunces())) {
|
||||
$weight += ($this->getOunces() / 16);
|
||||
}
|
||||
if ($weight == 0) {
|
||||
return null;
|
||||
}
|
||||
return $weight;
|
||||
}
|
||||
|
||||
public function getPounds() {
|
||||
return $this->pounds ?? 0;
|
||||
}
|
||||
|
||||
public function getOunces() {
|
||||
return $this->ounces ?? 0;
|
||||
}
|
||||
|
||||
public function setWeight($pounds) {
|
||||
return $this->setPounds($pounds)->setOunces(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $weight
|
||||
* @param mixed $pounds
|
||||
* @return $this
|
||||
*/
|
||||
public function setWeight($weight)
|
||||
{
|
||||
$this->weight = $weight;
|
||||
public function setPounds($pounds) {
|
||||
$this->pounds = $pounds;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $ounces
|
||||
* @return $this
|
||||
*/
|
||||
public function setOunces($ounces) {
|
||||
$this->ounces = $ounces;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getWidth()
|
||||
{
|
||||
public function getWidth() {
|
||||
return $this->width;
|
||||
}
|
||||
|
||||
@ -37,8 +65,7 @@ class Package
|
||||
* @param mixed $width
|
||||
* @return $this
|
||||
*/
|
||||
public function setWidth($width)
|
||||
{
|
||||
public function setWidth($width) {
|
||||
$this->width = $width;
|
||||
return $this;
|
||||
}
|
||||
@ -46,8 +73,7 @@ class Package
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getLength()
|
||||
{
|
||||
public function getLength() {
|
||||
return $this->length;
|
||||
}
|
||||
|
||||
@ -55,8 +81,7 @@ class Package
|
||||
* @param mixed $length
|
||||
* @return $this
|
||||
*/
|
||||
public function setLength($length)
|
||||
{
|
||||
public function setLength($length) {
|
||||
$this->length = $length;
|
||||
return $this;
|
||||
}
|
||||
@ -64,8 +89,7 @@ class Package
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getHeight()
|
||||
{
|
||||
public function getHeight() {
|
||||
return $this->height;
|
||||
}
|
||||
|
||||
@ -73,9 +97,9 @@ class Package
|
||||
* @param mixed $height
|
||||
* @return $this
|
||||
*/
|
||||
public function setHeight($height)
|
||||
{
|
||||
public function setHeight($height) {
|
||||
$this->height = $height;
|
||||
return $this;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace pdt256\Shipping\USPS;
|
||||
|
||||
use pdt256\Shipping;
|
||||
@ -10,18 +11,17 @@ use pdt256\Shipping\Validator;
|
||||
use DOMDocument;
|
||||
use Exception;
|
||||
|
||||
class Rate extends RateAdapter
|
||||
{
|
||||
class Rate extends RateAdapter {
|
||||
|
||||
private $urlDev = 'http://production.shippingapis.com/ShippingAPI.dll';
|
||||
private $urlProd = 'http://production.shippingapis.com/ShippingAPI.dll';
|
||||
|
||||
private $username;
|
||||
private $password;
|
||||
|
||||
/**
|
||||
* Codes of appropriate shipping types. Default value is specified in __construct.
|
||||
*/
|
||||
public $approvedCodes;
|
||||
|
||||
private $shipping_codes = [
|
||||
'domestic' => [
|
||||
'00' => 'First-Class Mail Parcel',
|
||||
@ -67,20 +67,19 @@ class Rate extends RateAdapter
|
||||
],
|
||||
];
|
||||
|
||||
public function __construct($options = [])
|
||||
{
|
||||
public function __construct($options = []) {
|
||||
parent::__construct($options);
|
||||
|
||||
$this->username = Arr::get($options, 'username');
|
||||
$this->password = Arr::get($options, 'password');
|
||||
$this->approvedCodes = Arr::get($options, 'approvedCodes', [
|
||||
'1',
|
||||
'4',
|
||||
'1',
|
||||
'4',
|
||||
]);
|
||||
$this->setRequestAdapter(Arr::get($options, 'requestAdapter', new RateRequest\Get()));
|
||||
}
|
||||
protected function validate()
|
||||
{
|
||||
|
||||
protected function validate() {
|
||||
$this->validatePackages();
|
||||
Validator::checkIfNull($this->username, 'username');
|
||||
Validator::checkIfNull($this->password, 'password');
|
||||
@ -89,8 +88,8 @@ class Rate extends RateAdapter
|
||||
|
||||
return $this;
|
||||
}
|
||||
protected function prepare()
|
||||
{
|
||||
|
||||
protected function prepare() {
|
||||
$packages = '';
|
||||
$sequence_number = 0;
|
||||
foreach ($this->shipment->getPackages() as $p) {
|
||||
@ -119,33 +118,30 @@ class Rate extends RateAdapter
|
||||
$container = 'VARIABLE';
|
||||
}
|
||||
|
||||
$packages .=
|
||||
'<Package ID="' . $sequence_number . '">' .
|
||||
$packages .= '<Package ID="' . $sequence_number . '">' .
|
||||
'<Service>ALL</Service>' .
|
||||
'<ZipOrigination>' . $this->shipment->getFromPostalCode() . '</ZipOrigination>' .
|
||||
'<ZipDestination>' . $this->shipment->getToPostalCode() . '</ZipDestination>' .
|
||||
'<Pounds>' . $p->getWeight() . '</Pounds>' .
|
||||
'<Ounces>0</Ounces>' .
|
||||
'<Pounds>' . $p->getPounds() . '</Pounds>' .
|
||||
'<Ounces>' . $p->getOunces() . '</Ounces>' .
|
||||
'<Container>' . $container . '</Container>' .
|
||||
'<Size>' . $size . '</Size>' .
|
||||
'<Width>' . $p->getWidth() . '</Width>' .
|
||||
'<Length>' . $p->getLength() . '</Length>' .
|
||||
'<Height>' . $p->getHeight() . '</Height>' .
|
||||
'<Machinable>' . 'False' . '</Machinable>' .
|
||||
'</Package>';
|
||||
'</Package>';
|
||||
}
|
||||
|
||||
$this->data =
|
||||
'<RateV4Request USERID="' . $this->username . '">' .
|
||||
$this->data = '<RateV4Request USERID="' . $this->username . '">' .
|
||||
'<Revision/>' .
|
||||
$packages .
|
||||
'</RateV4Request>';
|
||||
'</RateV4Request>';
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
protected function execute()
|
||||
{
|
||||
protected function execute() {
|
||||
if ($this->isProduction) {
|
||||
$url = $this->urlProd;
|
||||
} else {
|
||||
@ -159,8 +155,7 @@ class Rate extends RateAdapter
|
||||
return $this;
|
||||
}
|
||||
|
||||
protected function process()
|
||||
{
|
||||
protected function process() {
|
||||
try {
|
||||
$dom = new DOMDocument('1.0', 'UTF-8');
|
||||
$dom->loadXml($this->response);
|
||||
@ -195,10 +190,10 @@ class Rate extends RateAdapter
|
||||
|
||||
$quote = new Quote;
|
||||
$quote
|
||||
->setCarrier('usps')
|
||||
->setCode($code)
|
||||
->setName($name)
|
||||
->setCost((int) $cost);
|
||||
->setCarrier('usps')
|
||||
->setCode($code)
|
||||
->setName($name)
|
||||
->setCost((int) $cost);
|
||||
|
||||
$rates[$quote->getCode()] = $quote;
|
||||
}
|
||||
@ -207,4 +202,5 @@ class Rate extends RateAdapter
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -14,8 +14,16 @@ class PackageTest extends TestCase
|
||||
$package->setHeight(8);
|
||||
|
||||
$this->assertEquals(5, $package->getWeight());
|
||||
$this->assertEquals(5, $package->getPounds());
|
||||
$this->assertEquals(0, $package->getOunces());
|
||||
$this->assertEquals(6, $package->getWidth());
|
||||
$this->assertEquals(7, $package->getLength());
|
||||
$this->assertEquals(8, $package->getHeight());
|
||||
|
||||
$package->setPounds(3);
|
||||
$package->setOunces(4);
|
||||
$this->assertEquals(3, $package->getPounds());
|
||||
$this->assertEquals(4, $package->getOunces());
|
||||
$this->assertEquals(3.25, $package->getWeight());
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user