Skip to content
This repository was archived by the owner on May 29, 2024. It is now read-only.

Commit 19e4737

Browse files
committed
implement budbee php adapter in lib
1 parent df6fb05 commit 19e4737

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+3855
-42
lines changed

README.md

+17-1
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,28 @@
2020
1. Take in account Grouped, bundles products
2121
2. add adminhtml class for price ( accept only float) --optional
2222
3. add JS toggle budbee method
23-
4. add budbee extra form data in progress ( rewrite block progress)
23+
4. add budbee extra form data in progress ( rewrite block progress)template for d
2424
5. add and Editing delivery date in adminhtml
2525
6. locale
2626
7. sales/order/print/order_id/660/ add extra data in print order
2727
8. check if delivery date is shown in invoice
2828
9. Unit tests
29+
10. log api , debug , exception
30+
11. connect lib from external fork
31+
32+
33+
## Budbee API questions
34+
35+
36+
### PostalCode validation
37+
1. lybe gets 2 items with postal code call
38+
2. how to set interval - magento and budbee interface , get all intervals
39+
3. if postal code not covered by budbee will we show the shipping method anyway ?
40+
41+
### get intervals
42+
1. DO I need to show up collection time with Order i backend ?
43+
2. additional info add to sales process add DoorCode , OutsideDoor
44+
2945
3046
3147

app/code/community/Lybe/Budbee/Block/Budbee.php

+9-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,15 @@ public function __construct(){
66
}
77

88
// call budbee api to get intervals
9-
public function getPostUrl()
9+
public function getBudbeeIntervals()
1010
{
11-
return Mage::getUrl('budbee/index/ajax', array('_secure'=>true));
11+
$model = Mage::getModel('lybe_budbee/budbee');
12+
$client = $model->setupApi();
13+
$intervalAPI = new \Budbee\IntervalApi($client);
14+
$cart = Mage::getModel('checkout/cart')->getQuote();
15+
$postalCode = $cart->getShippingAddress()->getPostcode();
16+
$intervalResponse = $intervalAPI->getIntervals($postalCode, 2);
17+
18+
return $intervalResponse;
1219
}
1320
}

app/code/community/Lybe/Budbee/Block/Deliverydate.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@ public function displayDeliveryDate()
1919

2020
public function getDisplayDeliveryDate()
2121
{
22+
$delivered_date = Mage::helper('lybe_budbee')->formatDesiredDeliveryDate($this->getOrder()->getBudbeeDesiredDeliveryDate());
23+
2224
$info = array(
23-
'delivered_date' => $this->getOrder()->getBudbeeDesiredDeliveryDate(),
25+
'delivered_date' => $delivered_date,
2426
'door_code' => $this->getOrder()->getBudbeeDoorCode(),
2527
'outside_door' => $this->getOrder()->getBudbeeOutsideDoor()
2628
);

app/code/community/Lybe/Budbee/Helper/Data.php

+41-6
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,47 @@ class Lybe_Budbee_Helper_Data extends Mage_Core_Helper_Abstract
55

66
const BUDBEE_PRICE_XPATH = 'carriers/lybe_budbee/budbee_price';
77
const BUDBEE_ACTIVE_XPATH = 'carriers/lybe_budbee/active';
8-
const BUDBEE_API_USERNAME = 'carriers/lybe_budbee/budbee_username';
9-
const BUDBEE_API_PASSWORD = 'carriers/lybe_budbee/budbee_password';
8+
const BUDBEE_API_KEY = 'carriers/lybe_budbee/budbee_username';
9+
const BUDBEE_API_SECRET_KEY = 'carriers/lybe_budbee/budbee_password';
1010

1111
const CONFIGURABLE_PRODUCT_TYPE = 'configurable';
1212
const SIMPLE_PRODUCT_TYPE = 'simple';
1313

14-
public function getPrice()
14+
const BUDBEE_LIVE_URL = 'https://api.budbee.com'; // Production url
15+
const BUDBEE_SANDBOX_URL = 'http://sandbox.api.budbee.com'; // Sandbox url
16+
const BUDBEE_LOCALHOST_URL = "http://localhost:9300"; // Internal development
17+
18+
public function getPrice($store = null)
19+
{
20+
return Mage::getStoreConfig(self::BUDBEE_PRICE_XPATH , $store);
21+
}
22+
23+
public function isEnabled($store = null)
24+
{
25+
return Mage::getStoreConfig(self::BUDBEE_ACTIVE_XPATH, $store);
26+
}
27+
28+
public function getBudbeeApiKey($store = null)
29+
{
30+
return Mage::getStoreConfig(self::BUDBEE_API_KEY, $store);
31+
}
32+
33+
public function getBudbeeApiSecretKey($store = null)
1534
{
16-
return Mage::getStoreConfig(self::BUDBEE_PRICE_XPATH);
35+
return Mage::getStoreConfig(self::BUDBEE_API_SECRET_KEY, $store);
1736
}
1837

19-
public function isEnabled()
38+
public function getSandBoxMode($development = false, $store = null)
2039
{
21-
return Mage::getStoreConfig(self::BUDBEE_ACTIVE_XPATH);
40+
$res = SELF::BUDBEE_LIVE_URL;
41+
if (Mage::getStoreConfig('carriers/lybe_budbee/budbee_sandbox', $store)) {
42+
$res = SELF::BUDBEE_SANDBOX_URL;
43+
}
44+
45+
if ($development)
46+
$res = SELF::BUDBEE_LOCALHOST_URL;
47+
48+
return $res;
2249
}
2350

2451
public function _isShippable($items)
@@ -37,4 +64,12 @@ public function _isShippable($items)
3764
}
3865
return true;
3966
}
67+
68+
public function formatDesiredDeliveryDate($string){
69+
$date = explode(":",$string);
70+
$start_date = date('Y-m-d H:i', $date[0]);
71+
$end_date = date('H:i', $date[1]);
72+
73+
return $start_date. " - ".$end_date;
74+
}
4075
}

app/code/community/Lybe/Budbee/Model/Budbee.php

+51-1
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,47 @@ class Lybe_Budbee_Model_Budbee extends Mage_Shipping_Model_Carrier_Abstract imp
88
*/
99
protected $_code = Lybe_Budbee_Helper_Data::BUDBEE_SHIPPING_CODE;
1010

11+
public function __construct()
12+
{
13+
require_once(Mage::getBaseDir('lib') . '/Budbee/vendor/autoload.php');
14+
}
15+
16+
public function setupApi()
17+
{
18+
$apiKey = $this->getBudbeeApiKey();
19+
$apiSecret = $this->getBudbeeApiSecretKey();
20+
$sandbox = $this->getSandBoxMode();
21+
$client = new \Budbee\Client($apiKey, $apiSecret, $sandbox);
22+
return $client;
23+
}
1124

1225
protected function _getHelper()
1326
{
1427
return Mage::helper('lybe_budbee');
1528
}
1629

30+
public function showBudbeeAsShippingMethod()
31+
{
32+
$client = $this->setupApi();
33+
$cart = Mage::getModel('checkout/cart')->getQuote();
34+
$postalCode = $cart->getShippingAddress()->getPostcode();
35+
36+
if ($client){
37+
$postalCodesAPI = new \Budbee\PostalcodesApi($client);
38+
try {
39+
$possibleCollectionPoints = $postalCodesAPI->checkPostalCode($postalCode);
40+
if (count ($possibleCollectionPoints)){
41+
return true;
42+
}
43+
} catch (\Budbee\Exception\BudbeeException $e) {
44+
//echo $e->getMessage(). "<br>"; write in log
45+
return false;
46+
}
47+
}
48+
49+
return false;
50+
}
51+
1752
/**
1853
* Returns available shipping rates for Budbee
1954
*
@@ -29,7 +64,7 @@ public function collectRates(Mage_Shipping_Model_Rate_Request $request)
2964
/** @var Mage_Shipping_Model_Rate_Result $result */
3065
$result = Mage::getModel('shipping/rate_result');
3166

32-
if ($is_Shippable)
67+
if ($is_Shippable && $this->showBudbeeAsShippingMethod())
3368
$result->append($this->_getExpressRate());
3469

3570
return $result;
@@ -63,4 +98,19 @@ protected function _getExpressRate()
6398
$rate->setCost(0);
6499
return $rate;
65100
}
101+
102+
public function getSandBoxMode($development = false)
103+
{
104+
return $this->_getHelper()->getSandBoxMode($development);
105+
}
106+
107+
public function getBudbeeApiKey()
108+
{
109+
return $this->_getHelper()->getBudbeeApiKey();
110+
}
111+
112+
public function getBudbeeApiSecretKey()
113+
{
114+
return $this->_getHelper()->getBudbeeApiSecretKey();
115+
}
66116
}

app/code/community/Lybe/Budbee/Model/Checkout/Onepage.php

-3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@ class Lybe_budbee_Model_Checkout_Onepage extends Mage_Checkout_Model_Type_Onepag
44
{
55
public function saveBilling($data, $customerAddressId)
66
{
7-
Mage::log($this->getQuote()->getShippingAddress()->getPostcode(), null ,'shipping_postalcode.log');
8-
Mage::log($this->getQuote()->getBillingAddress()->getPostcode(), null ,'billing_postalcode.log');
9-
107
$desiredDeliveryDate = $this->getQuote()->getShippingAddress()->getBudbeeDesiredDeliveryDate();
118
$doorCode = $this->getQuote()->getShippingAddress()->getBudbeeDoorCode();
129
$outsideDoor = $this->getQuote()->getShippingAddress()->getBudbeeOutsideDoor();

app/code/community/Lybe/Budbee/Model/Sales/Order.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?php
22
class Lybe_Budbee_Model_Sales_Order extends Mage_Sales_Model_Order
33
{
4-
public function getBudbeeDesiredDeliveryFormatedDate($format ='full')
4+
public function getBudbeeDesiredDeliveryFormatedDate()
55
{
6-
return Mage::helper('core')->formatDate($this->getBudbeeDesiredDeliveryDate(), $format, true);
6+
return Mage::helper('lybe_budbee')->formatDesiredDeliveryDate($this->getBudbeeDesiredDeliveryDate());
77
}
88

99
public function getBudbeeOutsideDoorformated()

app/code/community/Lybe/Budbee/controllers/IndexController.php

-17
This file was deleted.

app/code/community/Lybe/Budbee/etc/system.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
<show_in_store>0</show_in_store>
3838
</title>
3939
<budbee_username translate="label">
40-
<label>API Username</label>
40+
<label>API Key</label>
4141
<comment>Contact <![CDATA[ <a href="http://www.budbee.com">Budbee</a>]]> to get it</comment>
4242
<frontend_type>text</frontend_type>
4343
<sort_order>4</sort_order>
@@ -46,7 +46,7 @@
4646
<show_in_store>0</show_in_store>
4747
</budbee_username>
4848
<budbee_password translate="label">
49-
<label>API Password</label>
49+
<label>API Secret Key</label>
5050
<comment>Contact <![CDATA[ <a href="http://www.budbee.com">Budbee</a>]]> to get it</comment>
5151
<frontend_type>text</frontend_type>
5252
<sort_order>5</sort_order>

app/code/community/Lybe/Budbee/sql/budbee_setup/install-0.1.0.php

+6-3
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131

3232
$installer->getConnection()
3333
->addColumn($installer->getTable('sales/quote_address'), 'budbee_desired_delivery_date', array(
34-
'TYPE' => Varien_Db_Ddl_Table::TYPE_TIMESTAMP,
34+
'TYPE' => Varien_Db_Ddl_Table::TYPE_TEXT,
35+
'length' => 255,
3536
'NULLABLE' => true,
3637
'COMMENT' => 'Budbee Desired Delivery Date'
3738
));
@@ -50,7 +51,8 @@
5051

5152
$installer->getConnection()
5253
->addColumn($installer->getTable('sales/order'), 'budbee_desired_delivery_date', array(
53-
'TYPE' => Varien_Db_Ddl_Table::TYPE_TIMESTAMP,
54+
'TYPE' => Varien_Db_Ddl_Table::TYPE_TEXT,
55+
'length' => 255,
5456
'NULLABLE' => true,
5557
'COMMENT' => 'Budbee Desired Delivery Date'
5658
));
@@ -69,7 +71,8 @@
6971

7072
$installer->getConnection()
7173
->addColumn($installer->getTable('sales/order_grid'), 'budbee_desired_delivery_date', array(
72-
'TYPE' => Varien_Db_Ddl_Table::TYPE_TIMESTAMP,
74+
'TYPE' => Varien_Db_Ddl_Table::TYPE_TEXT,
75+
'length' => 255,
7376
'NULLABLE' => true,
7477
'COMMENT' => 'Budbee Desired Delivery Date'
7578
));

app/design/adminhtml/default/default/template/lybe/budbee/sales/order/view/tab/tab_info.phtml

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
<?php if ($_order->getBudbeeDesiredDeliveryDate()) : ?>
7878
<h6><?php echo $this->__('Expected Delivery Date') ?></h6>
7979
<div class="box-content">
80-
<?php echo Mage::helper('core')->formatDate($_order->getBudbeeDesiredDeliveryDate(), 'full', true); ?>
80+
<?php echo Mage::helper('lybe_budbee')->formatDesiredDeliveryDate($_order->getBudbeeDesiredDeliveryDate()); ?>
8181
</div>
8282
<?php endif;?>
8383
<?php if ($_order->getBudbeeDoorCode()) : ?>

app/design/frontend/base/default/template/lybe/budbee/budbee.phtml

+8-2
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,21 @@
22
$_code=$this->getMethodCode();
33
$carrier = $this->getMethodInstance();
44
$_rate = $this->getRate();
5+
$intervals = $this->getBudbeeIntervals();
6+
$firstInterval = $intervals[0];
57
?>
68

79
<ul class="form-list" id="shipping_form_<?php echo $_rate->getCode() ?>"> <!--style="display:none;"-->
810
<li>
911
<label for="budbee_delivery_date" ><?php echo $this->__('Select Time') ?></label>
1012
<span class="input-box">
1113
<select name="budbee_delivery_date">
12-
<option value='1464783219'><?php echo $this->__('Store1');?></option>
13-
<option value='1464783211'><?php echo $this->__('Store2');?></option>
14+
<?php foreach ($intervals as $key => $interval) :
15+
$value = strtotime($interval->delivery->start->format('Y-m-d H:i')). ":".strtotime($interval->delivery->stop->format('Y-m-d H:i'));
16+
$label = $interval->delivery->start->format('j D H:i'). " - ". $interval->delivery->stop->format('H:i');
17+
?>
18+
<option value='<?php echo $value?>'><?php echo $this->__($label);?></option>
19+
<?php endforeach; ?>
1420
</select>
1521
</span>
1622
<label for="budbee_door_code"> <?php echo $this->__("Door Code") ?></label>

app/design/frontend/base/default/template/lybe/budbee/sales/view_delivery_date.phtml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php if($this->displayDeliveryDate()): ?>
22
<?php $data = $this->getDisplayDeliveryDate();
3-
Mage::log($data, null , 'info.log');
3+
44
?>
55
<div class="col-set order-info-box">
66
<div class="col">

lib/Budbee/composer.json

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"repositories": [
3+
{
4+
"type": "vcs",
5+
"url": "https://github.com/budbee/budbee-php"
6+
}
7+
],
8+
"require": {
9+
"budbee/api-client": "dev-master"
10+
}
11+
}

0 commit comments

Comments
 (0)