Tmob_Tappz - Version 1.0.8

Version Notes

t-appz Adapter for Magento

Download this release

Release Info

Developer tmobtech
Extension Tmob_Tappz
Version 1.0.8
Comparing to
See all releases


Version 1.0.8

Files changed (27) hide show
  1. app/code/local/TmobLabs/Tappz/Block/Info.php +26 -0
  2. app/code/local/TmobLabs/Tappz/Helper/Data.php +6 -0
  3. app/code/local/TmobLabs/Tappz/Model/Basket/Api.php +1141 -0
  4. app/code/local/TmobLabs/Tappz/Model/Basket/Api/V2.php +6 -0
  5. app/code/local/TmobLabs/Tappz/Model/Catalog/Api.php +390 -0
  6. app/code/local/TmobLabs/Tappz/Model/Catalog/Api/V2.php +6 -0
  7. app/code/local/TmobLabs/Tappz/Model/Customer/Address/Api.php +332 -0
  8. app/code/local/TmobLabs/Tappz/Model/Customer/Address/Api/V2.php +6 -0
  9. app/code/local/TmobLabs/Tappz/Model/Customer/Api.php +206 -0
  10. app/code/local/TmobLabs/Tappz/Model/Customer/Api/V2.php +6 -0
  11. app/code/local/TmobLabs/Tappz/Model/Customer/Order/Api.php +145 -0
  12. app/code/local/TmobLabs/Tappz/Model/Customer/Order/Api/V2.php +6 -0
  13. app/code/local/TmobLabs/Tappz/Model/System/Config/Action.php +18 -0
  14. app/code/local/TmobLabs/Tappz/Model/System/Config/Address.php +25 -0
  15. app/code/local/TmobLabs/Tappz/Model/System/Config/Category.php +51 -0
  16. app/code/local/TmobLabs/Tappz/Model/System/Config/Customer.php +25 -0
  17. app/code/local/TmobLabs/Tappz/Model/System/Config/Divider.php +17 -0
  18. app/code/local/TmobLabs/Tappz/Model/System/Config/Enabled.php +17 -0
  19. app/code/local/TmobLabs/Tappz/Model/System/Config/Payment.php +27 -0
  20. app/code/local/TmobLabs/Tappz/Model/System/Config/Product/Attribute.php +30 -0
  21. app/code/local/TmobLabs/Tappz/Model/System/Config/Store.php +32 -0
  22. app/code/local/TmobLabs/Tappz/etc/adminhtml.xml +26 -0
  23. app/code/local/TmobLabs/Tappz/etc/api.xml +276 -0
  24. app/code/local/TmobLabs/Tappz/etc/config.xml +25 -0
  25. app/code/local/TmobLabs/Tappz/etc/system.xml +644 -0
  26. app/code/local/TmobLabs/Tappz/etc/wsdl.xml +1650 -0
  27. package.xml +18 -0
app/code/local/TmobLabs/Tappz/Block/Info.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Block_Info extends Mage_Adminhtml_Block_System_Config_Form_Fieldset
4
+ {
5
+
6
+ public function render(Varien_Data_Form_Element_Abstract $element)
7
+ {
8
+ $content = '
9
+ <div class="tappz">
10
+ <div class="info">
11
+ <p>
12
+ Please read the installation guide for Magento before starting. &nbsp;
13
+ </p>
14
+ <p>
15
+ <!--
16
+ <button onclick=\"location.href=\'http://t-appz.com/magento-support-page/\';\">t-appz Installation Guide</button>
17
+ -->
18
+ <a href="http://t-appz.com/magento-support-page/" target="_blank">t-appz Installation Guide</a>
19
+ </p>
20
+ <br />
21
+ </div>
22
+ </div>';
23
+
24
+ return $content;
25
+ }
26
+ }
app/code/local/TmobLabs/Tappz/Helper/Data.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Helper_Data extends Mage_Core_Helper_Abstract
4
+ {
5
+
6
+ }
app/code/local/TmobLabs/Tappz/Model/Basket/Api.php ADDED
@@ -0,0 +1,1141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_Basket_Api extends Mage_Api_Model_Resource_Abstract
4
+ {
5
+ public function get($quoteId, $customerId = null)
6
+ {
7
+ $decimalDivider = Mage::getStoreConfig('tappz/general/decimalSeparator');
8
+ $thousandDivider = Mage::getStoreConfig('tappz/general/groupSeparator');
9
+ $store = Mage::getStoreConfig('tappz/general/store');
10
+
11
+ $lineAverageDeliveryDaysAttributeCode = Mage::getStoreConfig('tappz/basket/averagedeliverydaysattributecode');
12
+ $creditCardPaymentType = Mage::getStoreConfig('tappz/basket/creditcardpaymenttype');
13
+
14
+ $basket = array();
15
+ $basket['id'] = null;
16
+ $basket['lines'] = array();
17
+ $basket['currency'] = null;
18
+ $basket['discounts'] = array();
19
+ $basket['delivery']['shippingAddress'] = array();
20
+ $basket['delivery']['billingAddress'] = array();
21
+ $basket['delivery']['shippingMethod'] = array();
22
+ $basket['delivery'] = array();
23
+ $basket['payment'] = array();
24
+ $basket['itemsPriceTotal'] = null;
25
+ $basket['discountTotal'] = null;
26
+ $basket['subTotal'] = null;
27
+ $basket['beforeTaxTotal'] = null;
28
+ $basket['taxTotal'] = null;
29
+ $basket['shippingTotal'] = null;
30
+ $basket['total'] = null;
31
+ $basket['paymentOptions'] = array();
32
+ $basket['shippingMethods'] = array();
33
+ $basket['giftCheques'] = array();
34
+ $basket['spentGiftChequeTotal'] = null;
35
+ $basket['usedPoints'] = null;
36
+ $basket['usedPointsAmount'] = null;
37
+ $basket['rewardPoints'] = null;
38
+ $basket['paymentFee'] = null;
39
+ $basket['estimatedSupplyDate'] = null;
40
+ $basket['isGiftWrappingEnabled'] = false;
41
+ $basket['giftWrapping'] = null;
42
+
43
+ /* @var $quote Mage_Sales_Model_Quote */
44
+ $quote = Mage::getModel("sales/quote")
45
+ ->setStoreId($store);
46
+
47
+ if (isset($customerId)) {
48
+ $quote = $quote->loadByCustomer($customerId);
49
+ } elseif (isset($quoteId)) {
50
+ $quote = $quote->load($quoteId);
51
+ }
52
+
53
+ if (is_null($quote->getId())) {
54
+ try {
55
+ if (isset($customerId) && $customerId !== '') {
56
+ $customer = Mage::getModel("customer/customer")->load($customerId);
57
+ $quote = $quote->setCustomer($customer);
58
+ }
59
+ $quote = $quote->save();
60
+ } catch (Mage_Core_Exception $e) {
61
+ $this->_fault('invalid_data', $e->getMessage());
62
+ }
63
+ }
64
+
65
+ $catalogApi = Mage::getSingleton('tappz/Catalog_Api');
66
+ $addressApi = Mage::getSingleton('tappz/Customer_Address_Api');
67
+
68
+ $basket['id'] = $quote->getId();
69
+
70
+ foreach ($quote->getAllVisibleItems() as $item) {
71
+ $line = array();
72
+ $line['productId'] = $item->getData('product_id');
73
+ $line['product'] = $catalogApi->getProduct($item->getData('product_id'));
74
+ $line['quantity'] = $item->getData('qty');
75
+ $line['price'] = number_format($item->getData('price'), 2, $decimalDivider, $thousandDivider);
76
+ $line['priceTotal'] = number_format($item->getData('row_total'), 2, $decimalDivider, $thousandDivider);
77
+ $line['averageDeliveryDays'] = $item->getData($lineAverageDeliveryDaysAttributeCode);
78
+ $line['variants'] = array();// $item->getData('');
79
+ $basket['lines'][] = $line;
80
+ }
81
+
82
+ $basket['currency'] = Mage::app()->getStore($quote->getStoreId())->getCurrencyCode();
83
+
84
+ $quoteBillingAddress = $quote->getBillingAddress();
85
+ if ($quoteBillingAddress)
86
+ $basket['delivery']['billingAddress'] = $addressApi->get($quoteBillingAddress->getData('customer_address_id'));
87
+
88
+ $quoteShippingAddress = $quote->getShippingAddress();
89
+ if ($quoteShippingAddress) {
90
+ $basket['delivery']['shippingAddress'] = $addressApi->get($quoteShippingAddress->getData('customer_address_id'));
91
+
92
+ $basket['delivery']['shippingMethod']['id'] = $quoteShippingAddress->getData('shipping_method');
93
+ $basket['delivery']['shippingMethod']['displayName'] = $quoteShippingAddress->getData('shipping_description');
94
+ $basket['delivery']['shippingMethod']['trackingAddress'] = null;
95
+ $basket['delivery']['shippingMethod']['price'] = number_format($quoteShippingAddress->getData('shipping_incl_tax'), 2, $decimalDivider, $thousandDivider);
96
+ $basket['delivery']['shippingMethod']['priceForYou'] = null;
97
+ $basket['delivery']['shippingMethod']['shippingMethodType'] = $quoteShippingAddress->getData('shipping_method');
98
+ $basket['delivery']['shippingMethod']['imageUrl'] = null;
99
+
100
+ $basket['discountTotal'] = number_format($quoteShippingAddress->getData('discount_amount'), 2, $decimalDivider, $thousandDivider);
101
+ $basket['shippingTotal'] = number_format($quoteShippingAddress->getData('shipping_incl_tax'), 2, $decimalDivider, $thousandDivider);
102
+ } else {
103
+ // TODO : set dummy address
104
+ }
105
+
106
+ $basket['itemsPriceTotal'] = number_format($quote->getData('base_subtotal'), 2, $decimalDivider, $thousandDivider);
107
+ if (!isset($basket['discountTotal']))
108
+ $basket['discountTotal'] = floatval($quote->getData('subtotal')) - floatval($quote->getData('subtotal_with_discount'));
109
+ $basket['subTotal'] = number_format($quote->getData('subtotal'), 2, $decimalDivider, $thousandDivider);
110
+ $basket['total'] = number_format($quote->getData('grand_total'), 2, $decimalDivider, $thousandDivider);
111
+
112
+ $basket['discounts'][0]['displayName'] = null;
113
+ $basket['discounts'][0]['discountTotal'] = $basket['discountTotal'];
114
+ $basket['discounts'][0]['promoCode'] = $quote->getData('coupon_code');
115
+
116
+ $payment = $quote->getPayment();
117
+ if (isset($payment)) {
118
+ $paymentData = array();
119
+ $paymentData['cashOnDelivery'] = null;
120
+ $paymentData['creditCard'] = null;
121
+ $method = $payment->getData('method');
122
+ if ($method == 'checkmo') {
123
+ $paymentData['methodType'] = 'MoneyTransfer';
124
+ $paymentData['type'] = $method;
125
+ $paymentData['displayName'] = 'Check / Money Order';
126
+ $paymentData['bankCode'] = null;
127
+ $paymentData['installment'] = null;
128
+ $paymentData['accountNumber'] = '123456'; // TODO
129
+ $paymentData['branch'] = '321'; // TODO
130
+ $paymentData['iban'] = 'TR12 3456 7890 1234 5678 9012 00';
131
+ } else if ($method == $creditCardPaymentType) {
132
+ $paymentData['methodType'] = 'CreditCard';
133
+ $paymentData['type'] = $payment->getData('cc_type');
134
+ $paymentData['displayName'] = 'Credit Card';
135
+ $paymentData['bankCode'] = null;
136
+ $paymentData['installment'] = null;
137
+ $paymentData['accountNumber'] = '**** **** **** ' . $payment->getData('cc_last4');
138
+ $paymentData['branch'] = null;
139
+ $paymentData['iban'] = null;
140
+ $paymentData['creditCard'] = array();
141
+ $paymentData['creditCard']['owner'] = null;
142
+ $paymentData['creditCard']['number'] = '**** **** **** ' . $payment->getData('cc_last4');
143
+ $paymentData['creditCard']['month'] = null;
144
+ $paymentData['creditCard']['year'] = null;
145
+ $paymentData['creditCard']['cvv'] = null;
146
+ $paymentData['creditCard']['type'] = $payment->getData('cc_type');
147
+ } else if ($method == 'cashondelivery') {
148
+ $paymentData['methodType'] = 'CashOnDelivery';
149
+ $paymentData['type'] = $method;
150
+ $paymentData['displayName'] = 'Cash on Delivery';
151
+ $paymentData['bankCode'] = null;
152
+ $paymentData['installment'] = null;
153
+ $paymentData['accountNumber'] = null;
154
+ $paymentData['branch'] = null;
155
+ $paymentData['iban'] = null;
156
+ $paymentData['cashOnDelivery'] = array();
157
+ $paymentData['cashOnDelivery']['type'] = $method;
158
+ $paymentData['cashOnDelivery']['displayName'] = 'Cash on Delivery';
159
+ $paymentData['cashOnDelivery']['additionalFee'] = null;
160
+ $paymentData['cashOnDelivery']['description'] = 'Cash on delivery description.'; // TODO
161
+ $paymentData['cashOnDelivery']['isSMSVerification'] = false;
162
+ $paymentData['cashOnDelivery']['SMSCode'] = null;
163
+ $paymentData['cashOnDelivery']['PhoneNumber'] = null;
164
+ } else if ($method == 'paypal_express') {
165
+ $paymentData['methodType'] = 'PayPal';
166
+ $paymentData['type'] = $method;
167
+ $paymentData['displayName'] = 'PayPal';
168
+ $paymentData['bankCode'] = null;
169
+ $paymentData['installment'] = null;
170
+ $paymentData['accountNumber'] = null;
171
+ $paymentData['branch'] = null;
172
+ $paymentData['iban'] = null;
173
+ } else if ($method == 'stripe') { // apple_pay
174
+ $paymentData['methodType'] = 'ApplePay';
175
+ $paymentData['type'] = $method;
176
+ $paymentData['displayName'] = 'Apple Pay';
177
+ $paymentData['bankCode'] = null;
178
+ $paymentData['installment'] = null;
179
+ $paymentData['accountNumber'] = null;
180
+ $paymentData['branch'] = null;
181
+ $paymentData['iban'] = null;
182
+ }
183
+ $basket['payment'] = $paymentData;
184
+ }
185
+
186
+ $paymentOptions = array();
187
+ $paymentOptions['paypal'] = null;
188
+ $paymentOptions['creditCards'] = array();
189
+ $paymentOptions['moneyTransfers'] = array();
190
+ $paymentOptions['cashOnDelivery'] = null;
191
+
192
+ $methods = Mage::helper('payment')->getStoreMethods($store, $quote);
193
+ foreach ($methods as $method) {
194
+ $code = $method->getCode();
195
+ if ($code == $creditCardPaymentType) {
196
+ try {
197
+ $paymentOptions['creditCards'] = $this->getTaksitSecenekleri($quote->getId());
198
+ } catch (Exception $e) {
199
+ $paymentOptions['creditCards'] = array();
200
+ }
201
+ if (!isset($paymentOptions['creditCards'])) {
202
+ $paymentOptions['creditCards'] = array();
203
+ $paymentOptions['creditCards'][0]['image'] = null;
204
+ $paymentOptions['creditCards'][0]['displayName'] = 'Default Credit Card';
205
+ $paymentOptions['creditCards'][0]['type'] = $creditCardPaymentType;
206
+ $paymentOptions['creditCards'][0]['installmentNumber'] = 0;
207
+ $paymentOptions['creditCards'][0]['installments'] = array();
208
+ }
209
+ } elseif ($code == 'checkmo') {
210
+ $paymentOptions['moneyTransfers'] = array();
211
+ $paymentOptions['moneyTransfers'][0]['id'] = $code;
212
+ $paymentOptions['moneyTransfers'][0]['displayName'] = $method->getTitle();
213
+ $paymentOptions['moneyTransfers'][0]['code'] = $code;
214
+ $paymentOptions['moneyTransfers'][0]['branch'] = ' ';
215
+ $paymentOptions['moneyTransfers'][0]['accountNumber'] = ' ';
216
+ $paymentOptions['moneyTransfers'][0]['iban'] = ' ';
217
+ $paymentOptions['moneyTransfers'][0]['imageUrl'] = 'https://ec2-54-195-21-237.eu-west-1.compute.amazonaws.com/bitnami/images/corner-logo.png'; // TODO
218
+ } elseif ($code == 'cashondelivery') {
219
+ $paymentOptions['cashOnDelivery'] = array();
220
+ $paymentOptions['cashOnDelivery']['type'] = null;
221
+ $paymentOptions['cashOnDelivery']['displayName'] = null;
222
+ $paymentOptions['cashOnDelivery']['additionalFee'] = null;
223
+ $paymentOptions['cashOnDelivery']['description'] = null;
224
+ $paymentOptions['cashOnDelivery']['isSMSVerification'] = false;
225
+ $paymentOptions['cashOnDelivery']['SMSCode'] = null;
226
+ $paymentOptions['cashOnDelivery']['PhoneNumber'] = null;
227
+
228
+ $paymentOptions['cashOnDelivery']['type'] = $code;
229
+ $paymentOptions['cashOnDelivery']['displayName'] = $method->getTitle();
230
+ $paymentOptions['cashOnDelivery']['additionalFee'] = '0'; // TODO
231
+ $paymentOptions['cashOnDelivery']['description'] = 'Cash on delivery description text'; // TODO
232
+ $paymentOptions['cashOnDelivery']['isSMSVerification'] = false;
233
+ $paymentOptions['cashOnDelivery']['SMSCode'] = null;
234
+ $paymentOptions['cashOnDelivery']['PhoneNumber'] = null;
235
+ } elseif ($code == 'paypal_express') {
236
+ $paymentOptions['paypal'] = array();
237
+ $paymentOptions['paypal']['clientId'] = null;
238
+ $paymentOptions['paypal']['displayName'] = null;
239
+ $paymentOptions['paypal']['isSandbox'] = 'true';
240
+
241
+ $paymentOptions['paypal']['clientId'] = null;
242
+ $paymentOptions['paypal']['displayName'] = $method->getTitle();
243
+ $paymentOptions['paypal']['isSandbox'] = (bool)Mage::getStoreConfig('tappz/basket/paypalissandbox');
244
+ }
245
+ }
246
+ $basket['paymentOptions'] = $paymentOptions;
247
+
248
+ $shippingMethods = array();
249
+ if (isset($quoteShippingAddress)) {
250
+ try {
251
+ $quoteShippingAddress->collectShippingRates()->save();
252
+ $groupedRates = $quoteShippingAddress->getGroupedAllShippingRates();
253
+
254
+ foreach ($groupedRates as $carrierCode => $rates) {
255
+ foreach ($rates as $rate) {
256
+ $rateItem = array();
257
+ $rateItem['id'] = $rate->getData('code');
258
+ $rateItem['displayName'] = $rate->getData('method_title');
259
+ $rateItem['trackingAddress'] = null;
260
+ $rateItem['price'] = number_format($rate->getData('price'), 2, $decimalDivider, $thousandDivider);
261
+ $rateItem['priceForYou'] = null;
262
+ $rateItem['shippingMethodType'] = $rate->getData('code');
263
+ $rateItem['imageUrl'] = null;
264
+
265
+ $shippingMethods[] = $rateItem;
266
+ }
267
+ }
268
+ } catch (Mage_Core_Exception $e) {
269
+
270
+ }
271
+ }
272
+ $basket['shippingMethods'] = $shippingMethods;
273
+
274
+ $giftCheques = array();
275
+ if ($quote->getData('gift_cards')) {
276
+ // TODO
277
+ }
278
+ $basket['giftCheques'] = $giftCheques;
279
+
280
+ $basket['spentGiftChequeTotal'] = number_format($quote->getData('gift_cards_amount'), 2, $decimalDivider, $thousandDivider);
281
+ $basket['usedPoints'] = null; //TODO
282
+ $basket['usedPointsAmount'] = null; //TODO
283
+ $basket['rewardPoints'] = null;//TODO
284
+ $basket['paymentFee'] = null;//TODO
285
+ $basket['estimatedSupplyDate'] = null; // $this->getSupplyDate($quote->getId());
286
+ $basket['isGiftWrappingEnabled'] = true;
287
+ $basket['giftWrapping'] = array();
288
+ $basket['giftWrapping']['giftWrappingFee'] = '0'; // TODO
289
+ $basket['giftWrapping']['maxCharackter'] = '200'; // TODO
290
+ $basket['giftWrapping']['isSelected'] = false;
291
+ $basket['giftWrapping']['message'] = '';
292
+ if ($quote->getGiftMessageId() > 0) {
293
+ $giftMessage = Mage::getSingleton('giftmessage/message')->load($quote->getGiftMessageId());
294
+ $quote->setGiftMessage($giftMessage->getMessage());
295
+ $basket['giftWrapping']['isSelected'] = true;
296
+ $basket['giftWrapping']['message'] = $giftMessage->getMessage();
297
+ }
298
+ $basket['errors'] = $quote->getErrors();
299
+ return $basket;
300
+ }
301
+
302
+ public function merge($anonymousQuoteId, $customerId)
303
+ {
304
+ $store = Mage::getStoreConfig('tappz/general/store');
305
+
306
+ /* @var $anonymousQuote Mage_Sales_Model_Quote */
307
+ $anonymousQuote = Mage::getModel("sales/quote")
308
+ ->setStoreId($store)
309
+ ->load($anonymousQuoteId);
310
+
311
+ $customer = Mage::getModel('customer/customer')->load($customerId);
312
+ /* @var $quote Mage_Sales_Model_Quote */
313
+ $quote = Mage::getModel("sales/quote")
314
+ ->setStoreId($store)
315
+ ->loadByCustomer($customer);
316
+
317
+ if (is_null($quote->getId())) {
318
+ try {
319
+ $quote = $quote->setStoreId($store)
320
+ ->setIsActive(false)
321
+ ->setIsMultiShipping(false)
322
+ ->setCustomer($customer)
323
+ ->save();
324
+ } catch (Mage_Core_Exception $e) {
325
+ $this->_fault('invalid_data', $e->getMessage());
326
+ }
327
+ }
328
+
329
+ try {
330
+ $quote = $quote->merge($anonymousQuote);
331
+ $quote = $quote->collectTotals()->save();
332
+ } catch (Mage_Core_Exception $e) {
333
+ $this->_fault('invalid_data', $e->getMessage());
334
+ }
335
+
336
+ return $this->get($quote->getId());
337
+ }
338
+
339
+ public function updateItems($quoteId, $updateList)
340
+ {
341
+ $store = Mage::getStoreConfig('tappz/general/store');
342
+
343
+ /* @var $quote Mage_Sales_Model_Quote */
344
+ $quote = Mage::getModel("sales/quote")
345
+ ->setStoreId($store)
346
+ ->load($quoteId);
347
+
348
+ foreach ($updateList as $item) {
349
+ $productId = $item->productId;
350
+ $qty = $item->qty;
351
+
352
+ /* @var $product Mage_Catalog_Model_Product */
353
+ $product = Mage::getModel('catalog/product')->load($productId);
354
+ $quoteItem = $quote->getItemByProduct($product);
355
+ $request = new Varien_Object(array('qty' => $qty));
356
+ if (!$quoteItem) {
357
+ $quote->addProduct($product, $request);
358
+ } elseif ($qty == 0) {
359
+ $quote->removeItem($quoteItem->getId());
360
+ } else {
361
+ $quote->updateItem($quoteItem->getId(), $request);
362
+ }
363
+ }
364
+
365
+ $quote->setTotalsCollectedFlag(false)->collectTotals()->save();
366
+ return $this->get($quote->getId());
367
+ }
368
+
369
+ public function setAddress($quoteId, $shippingAddressId, $billingAddressId, $shippingMethodId)
370
+ {
371
+ $store = Mage::getStoreConfig('tappz/general/store');
372
+
373
+ /* @var $quote Mage_Sales_Model_Quote */
374
+ $quote = Mage::getModel("sales/quote")
375
+ ->setStoreId($store)
376
+ ->load($quoteId);
377
+
378
+ if (!is_null($billingAddressId)) {
379
+ /* @var $address Mage_Customer_Model_Address */
380
+ $customerBillingAddress = Mage::getModel('customer/address')
381
+ ->load($billingAddressId);
382
+ /* @var $billingAddress Mage_Sales_Model_Quote_Address */
383
+ $billingAddress = Mage::getModel('sales/quote_address')
384
+ ->importCustomerAddress($customerBillingAddress);
385
+ $quote->setBillingAddress($billingAddress);
386
+ }
387
+
388
+ if (!is_null($shippingAddressId)) {
389
+ /* @var $address Mage_Customer_Model_Address */
390
+ $customerShippingAddress = Mage::getModel('customer/address')
391
+ ->load($shippingAddressId);
392
+ /* @var $shippingAddress Mage_Sales_Model_Quote_Address */
393
+ $shippingAddress = Mage::getModel('sales/quote_address')
394
+ ->importCustomerAddress($customerShippingAddress)
395
+ ->implodeStreetAddress();
396
+ // /* @var $customer Mage_Customer_Model_Customer */
397
+ // $customer = Mage::getModel('customer/customer')->load($shippingAddress->getCustomerId());
398
+ $quote->setShippingAddress($shippingAddress)
399
+ ->getShippingAddress()
400
+ ->setCollectShippingRates(true);
401
+ }
402
+
403
+ if (!is_null($shippingMethodId)) {
404
+ $quoteShippingAddress = $quote->getShippingAddress();
405
+ if (is_null($quoteShippingAddress->getId())) {
406
+ $this->_fault("shipping_address_is_not_set");
407
+ }
408
+
409
+ $rate = $quoteShippingAddress->collectShippingRates()->getShippingRateByCode($shippingMethodId);
410
+ if (!$rate) {
411
+ $this->_fault('shipping_method_is_not_available');
412
+ }
413
+
414
+ try {
415
+ $quote->getShippingAddress()->setShippingMethod($shippingMethodId);
416
+ } catch (Mage_Core_Exception $e) {
417
+ $this->_fault('shipping_method_is_not_set', $e->getMessage());
418
+ }
419
+ }
420
+
421
+ $quote->setTotalsCollectedFlag(false)->collectTotals()->save();
422
+ return $this->get($quote->getId());
423
+ }
424
+
425
+ public function setGiftWrapping($quoteId, $isSelected, $message)
426
+ {
427
+ $store = Mage::getStoreConfig('tappz/general/store');
428
+
429
+ /* @var $quote Mage_Sales_Model_Quote */
430
+ $quote = Mage::getModel("sales/quote")
431
+ ->setStoreId($store)
432
+ ->load($quoteId);
433
+
434
+ if (!$isSelected) {
435
+ $quote->setGiftMessageId(0);
436
+ } else {
437
+ $giftMessage['type'] = 'quote';
438
+ $giftMessage['message'] = $message;
439
+ $giftMessages = array($quoteId => $giftMessage);
440
+ $request = new Mage_Core_Controller_Request_Http();
441
+ $request->setParam("giftmessage", $giftMessages);
442
+
443
+ Mage::dispatchEvent(
444
+ 'checkout_controller_onepage_save_shipping_method',
445
+ array('request' => $request, 'quote' => $quote)
446
+ );
447
+ }
448
+ return $this->get($quote->getId());
449
+ }
450
+
451
+ public function useDiscount($quoteId, $promoCode)
452
+ {
453
+ $store = Mage::getStoreConfig('tappz/general/store');
454
+
455
+ /* @var $quote Mage_Sales_Model_Quote */
456
+ $quote = Mage::getModel("sales/quote")
457
+ ->setStoreId($store)
458
+ ->load($quoteId)
459
+ ->setCouponCode(strlen($promoCode) ? $promoCode : '')
460
+ ->setTotalsCollectedFlag(false)
461
+ ->collectTotals()
462
+ ->save();
463
+
464
+ if ($quote->getCouponCode() != $promoCode) {
465
+ $this->_fault('invalid_data', 'Discount code is unavailable.');
466
+ }
467
+
468
+ return $this->get($quote->getId());
469
+ }
470
+
471
+ public function deleteDiscount($quoteId)
472
+ {
473
+ $store = Mage::getStoreConfig('tappz/general/store');
474
+
475
+ /* @var $quote Mage_Sales_Model_Quote */
476
+ $quote = Mage::getModel("sales/quote")
477
+ ->setStoreId($store)
478
+ ->load($quoteId)
479
+ ->setCouponCode('')
480
+ ->setTotalsCollectedFlag(false)
481
+ ->collectTotals()
482
+ ->save();
483
+
484
+ if (strlen($quote->getCouponCode()) > 0) {
485
+ $this->_fault('invalid_data', 'Discount code cannot be deleted.');
486
+ }
487
+
488
+ return $this->get($quote->getId());
489
+ }
490
+
491
+ public function useGiftCheques($quoteId, $code)
492
+ {
493
+ $store = Mage::getStoreConfig('tappz/general/store');
494
+
495
+ /* @var $quote Mage_Sales_Model_Quote */
496
+ $quote = Mage::getModel("sales/quote")
497
+ ->setStoreId($store)
498
+ ->load($quoteId);
499
+
500
+ // TODO - set gift cheque to the quote for enterprise edition
501
+
502
+ return $this->get($quote->getId());
503
+ }
504
+
505
+ public function deleteGiftCheques($quoteId)
506
+ {
507
+ $store = Mage::getStoreConfig('tappz/general/store');
508
+ /* @var $quote Mage_Sales_Model_Quote */
509
+ $quote = Mage::getModel("sales/quote")
510
+ ->setStoreId($store)
511
+ ->load($quoteId);
512
+
513
+ // TODO - delete gift cheque from the quote for enterprise edition
514
+
515
+ return $this->get($quote->getId());
516
+ }
517
+
518
+ public function useUserPoints($quoteId, $points)
519
+ {
520
+ $store = Mage::getStoreConfig('tappz/general/store');
521
+ /* @var $quote Mage_Sales_Model_Quote */
522
+ $quote = Mage::getModel("sales/quote")
523
+ ->setStoreId($store)
524
+ ->load($quoteId);
525
+
526
+ // TODO - use customer's reward points
527
+
528
+ return $this->get($quote->getId());
529
+ }
530
+
531
+ public function selectPaymentMethod($quoteId, $payment)
532
+ {
533
+ $store = Mage::getStoreConfig('tappz/general/store');
534
+ $creditCardPaymentType = Mage::getStoreConfig('tappz/basket/creditcardpaymenttype');
535
+ /* @var $quote Mage_Sales_Model_Quote */
536
+ $quote = Mage::getModel("sales/quote")
537
+ ->setStoreId($store)
538
+ ->load($quoteId);
539
+
540
+ $paymentData = array();
541
+
542
+ switch ($payment->methodType) {
543
+ case "CreditCard":
544
+ $creditCard = $payment->creditCard;
545
+ $type = null;
546
+
547
+ if(!is_null($creditCard)) {
548
+ switch ($creditCard->type) {
549
+ case '1':
550
+ $type = "VI";
551
+ break;
552
+ case '2':
553
+ $type = "MC";
554
+ break;
555
+ case '3':
556
+ $type = "AE";
557
+ break;
558
+ default:
559
+ $type = '';
560
+ break;
561
+ }
562
+ $paymentData['cc_type'] = $type;
563
+ $paymentData['cc_owner'] = $creditCard->owner;
564
+ $paymentData['cc_number'] = $creditCard->number;
565
+ $paymentData['cc_exp_month'] = $creditCard->month;
566
+ $paymentData['cc_exp_year'] = $creditCard->year;
567
+ $paymentData['cc_cid'] = $creditCard->cvv;
568
+ } else {
569
+ return $this->get($quote->getId());
570
+ }
571
+
572
+ $paymentMethod = $creditCardPaymentType;
573
+ break;
574
+ case "CashOnDelivery":
575
+ $paymentMethod = "cashondelivery";
576
+ break;
577
+ case "MoneyTransfer":
578
+ $paymentMethod = "checkmo";
579
+ break;
580
+ case "PayPal":
581
+ $paymentMethod = "paypal_express";
582
+ break;
583
+ case "ApplePay":
584
+ $paymentMethod = "stripe";
585
+ return $this->get($quote->getId());
586
+ break;
587
+ }
588
+
589
+ $paymentData['method'] = $paymentMethod;
590
+ $quote = $this->setPaymentData($quote, $paymentData);
591
+ return $this->get($quote->getId());
592
+ }
593
+
594
+ protected function setPaymentData($quote, $paymentData)
595
+ {
596
+ /* @var $quote Mage_Sales_Model_Quote */
597
+ if ($quote->isVirtual()) {
598
+ // check if billing address is set
599
+ if (is_null($quote->getBillingAddress()->getId())) {
600
+ $this->_fault('invalid_data', 'billing_address_is_not_set');
601
+ }
602
+ $quote->getBillingAddress()->setPaymentMethod(
603
+ isset($paymentData['method']) ? $paymentData['method'] : null
604
+ );
605
+ } else {
606
+ // check if shipping address is set
607
+ if (is_null($quote->getShippingAddress()->getId())) {
608
+ $this->_fault('invalid_data', 'shipping_address_is_not_set');
609
+ }
610
+ $quote->getShippingAddress()->setPaymentMethod(
611
+ isset($paymentData['method']) ? $paymentData['method'] : null
612
+ );
613
+ }
614
+
615
+ if (!$quote->isVirtual() && $quote->getShippingAddress()) {
616
+ $quote->getShippingAddress()->setCollectShippingRates(true);
617
+ }
618
+
619
+ $total = $quote->getBaseSubtotal();
620
+ $methods = Mage::helper('payment')->getStoreMethods($quote->getStoreId(), $quote);
621
+ foreach ($methods as $method) {
622
+ if ($method->getCode() == $paymentData['method']) {
623
+ /** @var $method Mage_Payment_Model_Method_Abstract */
624
+ if (!($this->_canUsePaymentMethod($method, $quote)
625
+ && ($total != 0
626
+ || $method->getCode() == 'free'
627
+ || ($quote->hasRecurringItems() && $method->canManageRecurringProfiles())))
628
+ ) {
629
+ $this->_fault('invalid_data', "method_not_allowed");
630
+ }
631
+ }
632
+ }
633
+
634
+ try {
635
+ $payment = $quote->getPayment();
636
+ $payment->importData($paymentData);
637
+
638
+ $quote = $quote->setIsActive(true)
639
+ ->setTotalsCollectedFlag(false)
640
+ ->collectTotals()
641
+ ->save();
642
+ } catch (Mage_Core_Exception $e) {
643
+ $this->_fault('invalid_data', $e->getMessage());
644
+ }
645
+
646
+ return $quote;
647
+ }
648
+
649
+ protected function _canUsePaymentMethod($method, $quote)
650
+ {
651
+ /* @var $quote Mage_Sales_Model_Quote */
652
+ /** @var $method Mage_Payment_Model_Method_Abstract */
653
+ if (!$method->canUseForCountry($quote->getBillingAddress()->getCountry())) {
654
+ return false;
655
+ }
656
+
657
+ if (!$method->canUseForCurrency(Mage::app()->getStore($quote->getStoreId())->getBaseCurrencyCode())) {
658
+ return false;
659
+ }
660
+
661
+ /**
662
+ * Checking for min/max order total for assigned payment method
663
+ */
664
+ $total = $quote->getBaseGrandTotal();
665
+ $minTotal = $method->getConfigData('min_order_total');
666
+ $maxTotal = $method->getConfigData('max_order_total');
667
+
668
+ if ((!empty($minTotal) && ($total < $minTotal)) || (!empty($maxTotal) && ($total > $maxTotal))) {
669
+ return false;
670
+ }
671
+
672
+ return true;
673
+ }
674
+
675
+ protected function purchase($quote)
676
+ {
677
+ /** @var $quote Mage_Sales_Model_Quote */
678
+ if ($quote->getIsMultiShipping()) {
679
+ $this->_fault('invalid_data', 'invalid_checkout_type');
680
+ }
681
+ if ($quote->getCheckoutMethod() == Mage_Checkout_Model_Api_Resource_Customer::MODE_GUEST
682
+ && !Mage::helper('checkout')->isAllowedGuestCheckout($quote, $quote->getStoreId())
683
+ ) {
684
+ $this->_fault('invalid_data', 'guest_checkout_is_not_enabled');
685
+ }
686
+ /** @var $customerResource Mage_Checkout_Model_Api_Resource_Customer */
687
+ $customerResource = Mage::getModel("checkout/api_resource_customer");
688
+ $isNewCustomer = $customerResource->prepareCustomerForQuote($quote);
689
+
690
+ try {
691
+ $quote->collectTotals();
692
+ /** @var $service Mage_Sales_Model_Service_Quote */
693
+ $service = Mage::getModel('sales/service_quote', $quote);
694
+ $service->submitAll();
695
+
696
+ if ($isNewCustomer) {
697
+ try {
698
+ $customerResource->involveNewCustomer($quote);
699
+ } catch (Exception $e) {
700
+ Mage::logException($e);
701
+ }
702
+ }
703
+
704
+ $order = $service->getOrder();
705
+ if ($order) {
706
+ Mage::dispatchEvent('checkout_type_onepage_save_order_after',
707
+ array('order' => $order, 'quote' => $quote));
708
+
709
+ try {
710
+ $order->queueNewOrderEmail();
711
+ } catch (Exception $e) {
712
+ Mage::logException($e);
713
+ }
714
+ }
715
+
716
+ Mage::dispatchEvent(
717
+ 'checkout_submit_all_after',
718
+ array('order' => $order, 'quote' => $quote)
719
+ );
720
+ } catch (Mage_Core_Exception $e) {
721
+ $this->_fault('invalid_data', $e->getMessage());
722
+ }
723
+ $quote->setIsActive(false)->save();
724
+ return $order->getIncrementId();
725
+ }
726
+
727
+ public function getContract($quoteId)
728
+ {
729
+ $store = Mage::getStoreConfig('tappz/general/store');
730
+ /* @var $quote Mage_Sales_Model_Quote */
731
+ $quote = Mage::getModel("sales/quote")
732
+ ->setStoreId($store)
733
+ ->load($quoteId);
734
+
735
+ $agreements = array();
736
+ if (Mage::getStoreConfigFlag('checkout/options/enable_agreements')) {
737
+ $agreementsCollection = Mage::getModel('checkout/agreement')->getCollection()
738
+ ->addStoreFilter($store)
739
+ ->addFieldToFilter('is_active', 1);
740
+
741
+ foreach ($agreementsCollection as $_a) {
742
+ /** @var $_a Mage_Checkout_Model_Agreement */
743
+ $agreements[] = $_a;
744
+ }
745
+ }
746
+
747
+ $contract = array();
748
+ $contract['termOfUse'] = $agreements[0]['content'];
749
+ $contract['salesContact'] = $agreements[1]['content'];
750
+ return $contract;
751
+ }
752
+
753
+ public function purchaseCreditCard($quoteId)
754
+ {
755
+ $store = Mage::getStoreConfig('tappz/general/store');
756
+ /* @var $quote Mage_Sales_Model_Quote */
757
+ $quote = Mage::getModel("sales/quote")
758
+ ->setStoreId($store)
759
+ ->load($quoteId);
760
+
761
+ $orderId = $this->purchase($quote);
762
+ return Mage::getSingleton('tappz/Customer_Order_Api')->info($orderId);
763
+ }
764
+
765
+ public function purchaseMoneyOrder($quoteId, $moneyOrderType)
766
+ {
767
+ $store = Mage::getStoreConfig('tappz/general/store');
768
+ /* @var $quote Mage_Sales_Model_Quote */
769
+ $quote = Mage::getModel("sales/quote")
770
+ ->setStoreId($store)
771
+ ->load($quoteId);
772
+
773
+ $orderId = $this->purchase($quote);
774
+ return Mage::getSingleton('tappz/Customer_Order_Api')->info($orderId);
775
+ }
776
+
777
+ public function purchaseCashOnDelivery($quoteId, $cashOnDelivery)
778
+ {
779
+ $store = Mage::getStoreConfig('tappz/general/store');
780
+ /* @var $quote Mage_Sales_Model_Quote */
781
+ $quote = Mage::getModel("sales/quote")
782
+ ->setStoreId($store)
783
+ ->load($quoteId);
784
+
785
+ $orderId = $this->purchase($quote);
786
+ return Mage::getSingleton('tappz/Customer_Order_Api')->info($orderId);
787
+ }
788
+
789
+ public function createNewOrder($quote)
790
+ {
791
+ Mage::getSingleton('checkout/session')->replaceQuote($quote);
792
+ /* @var $quote Mage_Sales_Model_Quote */
793
+ /* @var $convert Mage_Sales_Model_Convert_Quote */
794
+ /* @var $transaction Mage_Core_Model_Resource_Transaction */
795
+ $convert = Mage::getModel('sales/convert_quote');
796
+ $transaction = Mage::getModel('core/resource_transaction');
797
+
798
+ $quote->setIsActive(false);
799
+
800
+ if ($quote->getCustomerId()) {
801
+ $transaction->addObject($quote->getCustomer());
802
+ }
803
+ //$quote->setTotalsCollectedFlag(true);
804
+ $transaction->addObject($quote);
805
+ $quote->reserveOrderId();
806
+
807
+ if ($quote->isVirtual()) {
808
+ $order = $convert->addressToOrder($quote->getBillingAddress());
809
+ } else {
810
+ $order = $convert->addressToOrder($quote->getShippingAddress());
811
+ }
812
+ $order->setBillingAddress($convert->addressToOrderAddress($quote->getBillingAddress()));
813
+ if ($quote->getBillingAddress()->getCustomerAddress()) {
814
+ $order->getBillingAddress()->setCustomerAddress($quote->getBillingAddress()->getCustomerAddress());
815
+ }
816
+ if (!$quote->isVirtual()) {
817
+ $order->setShippingAddress($convert->addressToOrderAddress($quote->getShippingAddress()));
818
+ if ($quote->getShippingAddress()->getCustomerAddress()) {
819
+ $order->getShippingAddress()->setCustomerAddress($quote->getShippingAddress()->getCustomerAddress());
820
+ }
821
+ }
822
+
823
+ $order->setPayment($convert->paymentToOrderPayment($quote->getPayment()));
824
+ $order->getPayment()->setTransactionId($quote->getPayment()->getTransactionId());
825
+
826
+ foreach ($quote->getAllItems() as $item) {
827
+ /** @var Mage_Sales_Model_Order_Item $item */
828
+ $orderItem = $convert->itemToOrderItem($item);
829
+ if ($item->getParentItem()) {
830
+ $orderItem->setParentItem($order->getItemByQuoteItemId($item->getParentItem()->getId()));
831
+ }
832
+ $order->addItem($orderItem);
833
+ }
834
+
835
+ $order->setCanSendNewEmailFlag(false);
836
+ $order->setQuoteId($quote->getId());
837
+ $order->setExtOrderId($quote->getPayment()->getTransactionId());
838
+ $transaction->addObject($order);
839
+ $transaction->addCommitCallback(array($order, 'save'));
840
+
841
+ try {
842
+ $transaction->save();
843
+ $quote->setIsActive(false)->save();
844
+ Mage::dispatchEvent(
845
+ 'sales_model_service_quote_submit_success',
846
+ array(
847
+ 'order' => $order,
848
+ 'quote' => $quote
849
+ )
850
+ );
851
+ } catch (Exception $e) {
852
+ //reset order ID's on exception, because order not saved
853
+ $order->setId(null);
854
+ /** @var $item Mage_Sales_Model_Order_Item */
855
+ foreach ($order->getItemsCollection() as $item) {
856
+ $item->setOrderId(null);
857
+ $item->setItemId(null);
858
+ }
859
+
860
+ Mage::dispatchEvent(
861
+ 'sales_model_service_quote_submit_failure',
862
+ array(
863
+ 'order' => $order,
864
+ 'quote' => $quote
865
+ )
866
+ );
867
+ $quote->setIsActive(true);
868
+ $this->_fault('invalid_data', $e->getMessage());
869
+ }
870
+ Mage::dispatchEvent('checkout_submit_all_after', array('order' => $order, 'quote' => $quote));
871
+ Mage::dispatchEvent('sales_model_service_quote_submit_after', array('order' => $order, 'quote' => $quote));
872
+
873
+ return $order;
874
+ }
875
+
876
+ public function purchaseWithPayPal($quoteId, $transactionId)
877
+ {
878
+ $paypalIsSandBox = (bool)Mage::getStoreConfig('tappz/basket/paypalissandbox');
879
+ $paypalClientId = Mage::getStoreConfig('tappz/basket/paypalclientid');
880
+ $paypalSecret = Mage::getStoreConfig('tappz/basket/paypalSecret');
881
+
882
+ $store = Mage::getStoreConfig('tappz/general/store');
883
+ /* @var $quote Mage_Sales_Model_Quote */
884
+ $quote = Mage::getModel("sales/quote")
885
+ ->setStoreId($store)
886
+ ->load($quoteId);
887
+
888
+ $url = $paypalIsSandBox
889
+ ? "https://api.sandbox.paypal.com/v1/"
890
+ : "https://api.paypal.com/v1/";
891
+
892
+ $payment_result = array();
893
+ try {
894
+ $ch = curl_init();
895
+ curl_setopt($ch, CURLOPT_URL, $url . 'oauth2/token');
896
+ curl_setopt($ch, CURLOPT_HTTPHEADER, array(
897
+ 'Accept: application/json',
898
+ 'Accept-Language: en_US',
899
+ 'content-type: application/x-www-form-urlencoded'
900
+ ));
901
+ curl_setopt($ch, CURLOPT_USERPWD, $paypalClientId . ':' . $paypalSecret);
902
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
903
+ curl_setopt($ch, CURLOPT_POST, 1);
904
+ curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
905
+ $token_result_json = curl_exec($ch);
906
+ curl_close($ch);
907
+ $token_result = json_decode($token_result_json);
908
+
909
+ $ch = curl_init();
910
+ curl_setopt($ch, CURLOPT_URL, $url . 'payments/payment/' . $transactionId);
911
+ curl_setopt($ch, CURLOPT_HTTPHEADER, array(
912
+ 'Accept: application/json',
913
+ 'Authorization: Bearer ' . $token_result->access_token,
914
+ 'content-type: application/x-www-form-urlencoded'
915
+ ));
916
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
917
+ $payment_result_json = curl_exec($ch);
918
+ curl_close($ch);
919
+ $payment_result = json_decode($payment_result_json, true);
920
+ } catch (Exception $e) {
921
+ $this->_fault('invalid_data', $e->getMessage());
922
+ }
923
+
924
+ $transactionState = $payment_result['state'];
925
+ $saleState = $payment_result['transactions'][0]['related_resources'][0]['sale']['state'];
926
+
927
+ if ($transactionState == 'approved' && $saleState == 'completed') {
928
+ $quote->getPayment()->setTransactionId($transactionId)->save();
929
+ $order = $this->createNewOrder($quote);
930
+ return Mage::getSingleton('tappz/Customer_Order_Api')->info($order->getIncrementId());
931
+ } else {
932
+ $this->_fault('invalid_data', 'PayPal transaction is not completed.');
933
+ }
934
+ }
935
+
936
+ public function purchaseWithApplePay($quoteId, $tokenId)
937
+ {
938
+ $stripeIsTest = (bool)Mage::getStoreConfig('tappz/basket/stripeistest');
939
+ $stripeTestSecretKey = Mage::getStoreConfig('tappz/basket/stripetestsecret');
940
+ $stripeLiveSecretKey = Mage::getStoreConfig('tappz/basket/stripelivesecret');
941
+
942
+ $store = Mage::getStoreConfig('tappz/general/store');
943
+ /* @var $quote Mage_Sales_Model_Quote */
944
+ $quote = Mage::getModel("sales/quote")
945
+ ->setStoreId($store)
946
+ ->load($quoteId);
947
+
948
+ $secretKey = $stripeIsTest ? $stripeTestSecretKey : $stripeLiveSecretKey;
949
+
950
+ $fields = array(
951
+ 'amount' => $quote->getGrandTotal(),
952
+ 'currency' => $quote->getQuoteCurrencyCode(),
953
+ 'source' => $tokenId,
954
+ 'description' => 't-appz Apple Pay',
955
+ );
956
+
957
+ $field_string = http_build_query($fields);
958
+ $charge = array();
959
+ try {
960
+ $ch = curl_init();
961
+ curl_setopt($ch, CURLOPT_URL, 'https://api.stripe.com/v1/charges');
962
+ curl_setopt($ch, CURLOPT_USERPWD, $secretKey . ':');
963
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
964
+ curl_setopt($ch, CURLOPT_POST, 1);
965
+ $charge_json = curl_exec($ch);
966
+ curl_close($ch);
967
+ $charge = json_decode($charge_json);
968
+
969
+ $ch = curl_init();
970
+ curl_setopt($ch, CURLOPT_URL, 'https://api.stripe.com/v1/charges/' . $charge->id . '/capture');
971
+ curl_setopt($ch, CURLOPT_USERPWD, $secretKey);
972
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
973
+ curl_setopt($ch, CURLOPT_POST, 1);
974
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $field_string);
975
+ $charge_json = curl_exec($ch);
976
+ curl_close($ch);
977
+ $charge = json_decode($charge_json, true);
978
+ } catch (Exception $e) {
979
+ $this->_fault('invalid_data', $e->getMessage());
980
+ }
981
+
982
+ // TODO : test
983
+
984
+ if ($charge['captured']) {
985
+ $paymentData = array();
986
+ $paymentData['method'] = 'ApplePay';
987
+ $quote = $this->setPaymentData($quote, $paymentData);
988
+ $quote->getPayment()->setTransactionId($tokenId)->save();
989
+ $orderId = $this->createNewOrder($quote);
990
+ return Mage::getSingleton('tappz/Customer_Order_Api')->info($orderId);
991
+ } else {
992
+ $this->_fault('invalid_data', 'Apple Pay transaction is not completed.');
993
+ }
994
+ }
995
+
996
+ // TODO : mcgoncu - annelutfen icin ekle
997
+ public function getTaksitSecenekleri($quoteId)
998
+ {
999
+ $bankInfos = array();
1000
+
1001
+ $exclude_cats = array(219, 218, 527, 217, 651, 329, 331, 678);
1002
+ $show_taksits = true;
1003
+ $cats = array();
1004
+ $cart = Mage::getModel("sales/quote")->load($quoteId);
1005
+ $cartItems = $cart->getItems();
1006
+ $tutar = $cart->getGrandTotal();
1007
+
1008
+ foreach ($cartItems as $item) {
1009
+ $cats[] = $item->getProduct()->getCategoryIds();
1010
+ }
1011
+ if (count($cats) > 0) {
1012
+ foreach ($cats as $vals) {
1013
+ foreach ($vals as $dd) {
1014
+ if (in_array($dd, $exclude_cats)) {
1015
+ $show_taksits = false;
1016
+ }
1017
+ }
1018
+ }
1019
+ }
1020
+
1021
+ $turkpay = Mage::getModel('Grinet_Turkpay_Model_Grinet');
1022
+ if ($turkpay) {
1023
+ $bank_avs = $turkpay->bankalar();
1024
+ }
1025
+ if (!empty($bank_avs)) {
1026
+ $bankCount = 0;
1027
+ $fark = 0;
1028
+ foreach ($bank_avs as $bank_code => $bank) {
1029
+ //$codes[] = $bank_code;
1030
+ // $bankName[] = $bank['name'];
1031
+ // $tutar = 200;
1032
+ $tdata = $turkpay->taksitler($bank_code, $tutar);
1033
+ $valCount = 0;
1034
+ foreach ($tdata as $tay => $toran) {
1035
+ /* price calculater */
1036
+ $toplam_tutar = $tutar + (($tutar / 100) * floatval($toran)) + $fark;// - ( ( $fark / 100 ) * floatval($toran) ) ;
1037
+ /* price calculater */
1038
+ $custom_title = Mage::getStoreConfig($bank_code . '/taksit_baslik/taksit_' . $tay);
1039
+ if (trim($custom_title) == '')
1040
+ $taksit_title = 'Tek Çekim';
1041
+ else
1042
+ $taksit_title = $custom_title;
1043
+
1044
+ if ($show_taksits === false) {
1045
+ $custom_title = Mage::getStoreConfig($bank_code . '/taksit_baslik/taksit_0');
1046
+ if (trim($custom_title) == '')
1047
+ $taksit_title = 'Tek Çekim';
1048
+ else
1049
+ $taksit_title = $custom_title;
1050
+ }
1051
+ $bankInfos[$bankCount]['image'] = null; // TODO : annelutfen - banka imajı
1052
+ $bankInfos[$bankCount]['displayName'] = trim($bank['name']);
1053
+ $bankInfos[$bankCount]['type'] = null;// TODO : annelutfen - kart kodu
1054
+ $bankInfos[$bankCount]['installmentNumber'] = null; // TODO : annelutfen - toplanm taksit sayısı
1055
+ $bankInfos[$bankCount]['installments'][$valCount]['installmentNumber'] = $valCount; // TODO - annelutfen - dogru mu bu?
1056
+ $bankInfos[$bankCount]['installments'][$valCount]['installmentPayment'] = round($toplam_tutar / $valCount, 2, PHP_ROUND_HALF_UP); // TODO - annelutfen - dogru mu bu?
1057
+ $bankInfos[$bankCount]['installments'][$valCount]['total'] = round($toplam_tutar, 2, PHP_ROUND_HALF_UP);
1058
+ if ($show_taksits === false) {
1059
+ if ($taksit_title == "Tek Çekim")
1060
+ break;
1061
+ }
1062
+
1063
+ $valCount++;
1064
+ }
1065
+ $bankCount++;
1066
+ }
1067
+ } else
1068
+ $bankInfos = null;
1069
+ return $bankInfos;
1070
+ }
1071
+
1072
+ public function getSupplyDate($quoteId)
1073
+ {
1074
+ $store = Mage::getStoreConfig('tappz/general/store');
1075
+ $productAverageDeliveryDaysAttributeCode = Mage::getStoreConfig('tappz/basket/averagedeliverydaysattributecode');
1076
+
1077
+ /* @var $quote Mage_Sales_Model_Quote */
1078
+ $quote = Mage::getModel("sales/quote")
1079
+ ->setStoreId($store)
1080
+ ->load($quoteId);
1081
+
1082
+ $set_message = array();
1083
+ foreach ($quote->getAllItems() as $item) {
1084
+ $product = Mage::getModel('catalog/product')->load($item->getData('product_id'));
1085
+ /* @var $product Mage_Catalog_Model_Product */
1086
+ $message = $product->getData($productAverageDeliveryDaysAttributeCode);
1087
+ if ($message)
1088
+ $set_message[] = $message;
1089
+ }
1090
+
1091
+ $set_message_unique = array_unique($set_message);
1092
+
1093
+ $by_0 = false;
1094
+ $by_3 = false;
1095
+ $by_4 = false;
1096
+ $by_5 = false;
1097
+ $by_7 = false;
1098
+ if (in_array('Aynı Gün Kargoya Teslim', $set_message_unique)) {
1099
+ $by_0 = true;
1100
+ }
1101
+ if (in_array('1-3 İş Gününde Kargoya Teslim', $set_message_unique)) {
1102
+ $by_3 = true;
1103
+ $by_0 = false;
1104
+ }
1105
+ if (in_array('4-5 İş Gününde Kargoya Teslim', $set_message_unique)) {
1106
+ $by_4 = true;
1107
+ $by_3 = false;
1108
+ $by_0 = false;
1109
+ }
1110
+ if (in_array('5 İş Gününde Kargoya Teslim', $set_message_unique)) {
1111
+ $by_5 = true;
1112
+ $by_3 = false;
1113
+ $by_0 = false;
1114
+ }
1115
+ if (in_array('7 İş Gününde Kargoya Teslim', $set_message_unique)) {
1116
+ $by_7 = true;
1117
+ $by_5 = false;
1118
+ $by_3 = false;
1119
+ $by_0 = false;
1120
+ }
1121
+
1122
+ $cMsg = '';
1123
+ if ($by_0) {
1124
+ $cMsg = "Sepetinizdeki ürünlerin tamamı aynı günde kargoya teslim edilecektir.";
1125
+ }
1126
+ if ($by_3) {
1127
+ $cMsg = "Sepetinizdeki ürünlerin tamamı 1-3 iş gününde kargoya teslim edilecektir.";
1128
+ }
1129
+ if ($by_4) {
1130
+ $cMsg = "Sepetinizdeki ürünlerin tamamı 4-5 iş gününde kargoya teslim edilecektir.";
1131
+ }
1132
+ if ($by_5) {
1133
+ $cMsg = "Sepetinizdeki ürünlerin tamamı 5 iş gününde kargoya teslim edilecektir.";
1134
+ }
1135
+ if ($by_7) {
1136
+ $cMsg = "Sepetinizdeki ürünlerin tamamı 7 iş gününde kargoya teslim edilecektir.";
1137
+ }
1138
+
1139
+ return $cMsg;
1140
+ }
1141
+ }
app/code/local/TmobLabs/Tappz/Model/Basket/Api/V2.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_Basket_Api_V2 extends TmobLabs_Tappz_Model_Basket_Api
4
+ {
5
+
6
+ }
app/code/local/TmobLabs/Tappz/Model/Catalog/Api.php ADDED
@@ -0,0 +1,390 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_Catalog_Api extends Mage_Catalog_Model_Api_Resource
4
+ {
5
+ public function getFrontPage()
6
+ {
7
+ $sampleEx['ads'][0]['name'] = null;
8
+ $sampleEx['ads'][0]['image'] = Mage::getBaseUrl('media') . 'tappz/' . Mage::getStoreConfig('tappz/catalog/bannerImage1');
9
+ $sampleEx['ads'][0]['type'] = Mage::getStoreConfig('tappz/catalog/bannerActionType1');
10
+ $sampleEx['ads'][0]['value'] = Mage::getStoreConfig('tappz/catalog/bannerActionValue1');
11
+
12
+ $sampleEx['ads'][1]['name'] = null;
13
+ $sampleEx['ads'][1]['image'] = Mage::getBaseUrl('media') . 'tappz/' . Mage::getStoreConfig('tappz/catalog/bannerImage2');
14
+ $sampleEx['ads'][1]['type'] = Mage::getStoreConfig('tappz/catalog/bannerActionType2');
15
+ $sampleEx['ads'][1]['value'] = Mage::getStoreConfig('tappz/catalog/bannerActionValue2');
16
+
17
+ $sampleEx['ads'][2]['name'] = null;
18
+ $sampleEx['ads'][2]['image'] = Mage::getBaseUrl('media') . 'tappz/' . Mage::getStoreConfig('tappz/catalog/bannerImage3');
19
+ $sampleEx['ads'][2]['type'] = Mage::getStoreConfig('tappz/catalog/bannerActionType3');
20
+ $sampleEx['ads'][2]['value'] = Mage::getStoreConfig('tappz/catalog/bannerActionValue3');
21
+
22
+ $sampleEx['ads'][3]['name'] = null;
23
+ $sampleEx['ads'][3]['image'] = Mage::getBaseUrl('media') . 'tappz/' . Mage::getStoreConfig('tappz/catalog/bannerImage4');
24
+ $sampleEx['ads'][3]['type'] = Mage::getStoreConfig('tappz/catalog/bannerActionType4');
25
+ $sampleEx['ads'][3]['value'] = Mage::getStoreConfig('tappz/catalog/bannerActionValue4');
26
+
27
+ $frontPageCategory1 = Mage::getStoreConfig('tappz/catalog/catalog1');
28
+ if ($frontPageCategory1) {
29
+ $category = $this->getCategory($frontPageCategory1);
30
+ $productList = $this->getProductList(null, $frontPageCategory1, 0, 6, null, null);
31
+ $group = array();
32
+ $group['partName'] = $category['name'];
33
+ $group['products'] = $productList['products'];
34
+ $sampleEx['groups'][] = $group;
35
+ }
36
+
37
+ $frontPageCategory2 = Mage::getStoreConfig('tappz/catalog/catalog2');
38
+ if ($frontPageCategory2) {
39
+ $category = $this->getCategory($frontPageCategory2);
40
+ $productList = $this->getProductList(null, $frontPageCategory2, 0, 6, null, null);
41
+ $group = array();
42
+ $group['partName'] = $category['name'];
43
+ $group['products'] = $productList['products'];
44
+ $sampleEx['groups'][] = $group;
45
+ }
46
+
47
+ $frontPageCategory3 = Mage::getStoreConfig('tappz/catalog/catalog3');
48
+ if ($frontPageCategory3) {
49
+ $category = $this->getCategory($frontPageCategory3);
50
+ $productList = $this->getProductList(null, $frontPageCategory3, 0, 6, null, null);
51
+ $group = array();
52
+ $group['partName'] = $category['name'];
53
+ $group['products'] = $productList['products'];
54
+ $sampleEx['groups'][] = $group;
55
+ }
56
+
57
+ $frontPageCategory4 = Mage::getStoreConfig('tappz/catalog/catalog4');
58
+ if ($frontPageCategory4) {
59
+ $category = $this->getCategory($frontPageCategory4);
60
+ $productList = $this->getProductList(null, $frontPageCategory4, 0, 6, null, null);
61
+ $group = array();
62
+ $group['partName'] = $category['name'];
63
+ $group['products'] = $productList['products'];
64
+ $sampleEx['groups'][] = $group;
65
+ }
66
+
67
+ return $sampleEx;
68
+ }
69
+
70
+ public function getCategories()
71
+ {
72
+ $storeId = (int) Mage::getStoreConfig('tappz/general/store');
73
+ if($storeId <= 0){
74
+ $storeId = 1;
75
+ }
76
+
77
+ /** @var Mage_Core_Model_Store $store */
78
+ $store = Mage::getModel('core/store')->load($storeId);
79
+
80
+ $rootCategoryId = $store->getRootCategoryId();
81
+ if(!$rootCategoryId){
82
+ $rootCategoryId = 2;
83
+ }
84
+ $rootCategory = $this->getCategory($rootCategoryId);
85
+ return $rootCategory['children'];
86
+ }
87
+
88
+ public function getCategory($categoryId)
89
+ {
90
+ $storeId = Mage::getStoreConfig('tappz/general/store');
91
+ /* @var $tree Mage_Catalog_Model_Resource_Category_Tree */
92
+ $tree = Mage::getResourceSingleton('catalog/category_tree')
93
+ ->load();
94
+
95
+ /** @var Mage_Catalog_Model_Category $root */
96
+ $root = $tree->getNodeById($categoryId);
97
+
98
+ if ($root && $root->getId() == 1) {
99
+ $root->setName(Mage::helper('catalog')->__('Root'));
100
+ }
101
+
102
+ $collection = Mage::getModel('catalog/category')->getCollection()
103
+ ->setStoreId($this->_getStoreId($storeId))
104
+ ->addAttributeToSelect('name')
105
+ ->addAttributeToSelect('is_active')
106
+ ->addIsActiveFilter();
107
+
108
+ $tree->addCollectionData($collection, true);
109
+ return $this->categoryToModel($root);
110
+ }
111
+
112
+ /**
113
+ * @param $temp Mage_Catalog_Model_Category
114
+ * @param bool $getChildren
115
+ * @return array
116
+ */
117
+ private function categoryToModel($temp, $getChildren = true)
118
+ {
119
+ $category = array();
120
+ $category['id'] = $temp->getId();
121
+ $category['name'] = $temp->getName();
122
+ $category['isRoot'] = $temp->getParentId() == $this->rootCategoryId;
123
+ $category['isLeaf'] = $temp->getChildrenCount() == 0;
124
+ $category['parentCategoryId'] = $temp->getParentId();
125
+ $category['children'] = array();
126
+
127
+ if ($getChildren) {
128
+ foreach ($temp->getChildren() as $child) {
129
+ $category['children'][] = $this->categoryToModel($child, false);
130
+ }
131
+ }
132
+
133
+ return $category;
134
+ }
135
+
136
+ public function getProductList($phrase, $categoryId, $pageNumber, $pageSize, $filterQuery, $sort)
137
+ {
138
+ $collection = Mage::getModel('catalog/product')
139
+ ->getCollection()
140
+ ->addAttributeToSelect('*')
141
+ ->addAttributeToFilter('status', '1')
142
+ ->addAttributeToFilter('visibility', Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH);
143
+
144
+
145
+ if (!empty($filter)) {
146
+ foreach ($filter as $f) {
147
+ if (isset($f->selected)) {
148
+ $collection->addAttributeToSelect($f->id)
149
+ ->addAttributeToFilter($f->id, $f->selected->id);
150
+ }
151
+ }
152
+ }
153
+
154
+ if (!empty($phrase))
155
+ $collection->addAttributeToFilter('name', array('like' => "%$phrase%"));
156
+
157
+ if (!empty($categoryId)) {
158
+ $collection->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id = entity_id', null, 'left');
159
+ $collection->addAttributeToFilter('category_id', array('eq' => $categoryId));
160
+ }
161
+
162
+ $total = $collection->getSize();
163
+ if (!empty($sort)) {
164
+ $sortArr = explode("-", $sort);
165
+ $collection->addAttributeToSort($sortArr[0], $sortArr[1]);
166
+ }
167
+
168
+ if (empty($pageNumber))
169
+ $pageNumber = 0;
170
+ if (empty($pageSize))
171
+ $pageSize = 6;
172
+
173
+ $collection->setPage($pageNumber, $pageSize);
174
+
175
+ $result = array();
176
+ $result['total'] = null;
177
+ $result['filters'] = array();
178
+ $result['sortList'] = array();
179
+ $result['products'] = array();
180
+
181
+ $result['total'] = $total;
182
+
183
+ // TODO : mcgoncu - filter ekle
184
+ // $attributeCodeList = array('manufacturer');
185
+ // foreach ($attributeCodeList as $attributeCode) {
186
+ // $attribute = Mage::getModel('eav/entity_attribute')
187
+ // ->loadByCode('catalog_product', $attributeCode);
188
+ //
189
+ // $attributeOptionList = Mage::getResourceModel('eav/entity_attribute_option_collection')
190
+ // ->setAttributeFilter($attribute->getData('attribute_id'));
191
+ //
192
+ // $group = array();
193
+ // $group['id'] = $attribute['code'];
194
+ // $group['name'] = $attribute['label'];
195
+ // $group['selected'] = ''; // TODO set selected
196
+ // $group['values'] = array();
197
+ // foreach ($attributeOptionList as $attributeOption) {
198
+ // $feature = array();
199
+ // $feature['id'] = $attributeOption['value'];
200
+ // $feature['name'] = $attributeOption['label'];
201
+ // $group['values'][] = $feature;
202
+ // }
203
+ // $result['filters'][] = $group;
204
+ // }
205
+
206
+ $result['sortList'][] = array('id' => 'name-asc', 'name' => 'Name (Ascending)');
207
+ $result['sortList'][] = array('id' => 'name-desc', 'name' => 'Name (Descending)');
208
+ $result['sortList'][] = array('id' => 'price-asc', 'name' => 'Price (Ascending)');
209
+ $result['sortList'][] = array('id' => 'price-desc', 'name' => 'Price (Descending)');
210
+
211
+ if (!empty($collection)) {
212
+ foreach ($collection as $_product) {
213
+ $result['products'][] = $this->getProduct($_product->getId());
214
+ }
215
+ }
216
+ return $result;
217
+ }
218
+
219
+ public function getProduct($productId)
220
+ {
221
+ $storeId = (int) Mage::getStoreConfig('tappz/general/store');
222
+ if($storeId <= 0){
223
+ $storeId = 1;
224
+ }
225
+
226
+ /** @var Mage_Core_Model_Store $store */
227
+ $store = Mage::getModel('core/store')->load($storeId);
228
+
229
+ /** @var Mage_Catalog_Model_Product $product */
230
+ $product = Mage::getModel('catalog/product')->load($productId);
231
+
232
+ $productInfo = array();
233
+ $productInfo['id'] = null;
234
+ $productInfo['productName'] = null;
235
+ $productInfo['listPrice'] = array();
236
+ $productInfo['listPrice']['amount'] = null;
237
+ $productInfo['listPrice']['amountDefaultCurrency'] = null;
238
+ $productInfo['listPrice']['currency'] = null;
239
+ $productInfo['strikeoutPrice'] = array();
240
+ $productInfo['strikeoutPrice']['amount'] = null;
241
+ $productInfo['strikeoutPrice']['amountDefaultCurrency'] = null;
242
+ $productInfo['strikeoutPrice']['currency'] = null;
243
+ $productInfo['picture'] = null;
244
+ $productInfo['pictures'] = array();
245
+ $productInfo['productDetailUrl'] = null;
246
+ $productInfo['additionalDetail'] = null;
247
+ $productInfo['inStock'] = true;
248
+ $productInfo['isShipmentFree'] = false;
249
+ $productInfo['isCampaign'] = false;
250
+ $productInfo['headline'] = null;
251
+ $productInfo['productUrl'] = null;
252
+ $productInfo['variants'] = array();
253
+ $productInfo['shipmentInformation'] = null;
254
+ $productInfo['actions'] = array();
255
+
256
+ $productInfo['id'] = $product->getId();
257
+ $productInfo['productName'] = $product->getName();
258
+
259
+ $specialPrice = sprintf("%0.2f", $product->getData('special_price'));
260
+ $listPrice = sprintf("%0.2f", $product->getPrice());
261
+ $productInfo['listPrice'] = array();
262
+ $productInfo['listPrice']['amount'] = $specialPrice > 0 ? $specialPrice : $listPrice;
263
+ $productInfo['listPrice']['amountDefaultCurrency'] = null;
264
+ $productInfo['listPrice']['currency'] = $store->getCurrentCurrencyCode();
265
+ $productInfo['strikeoutPrice'] = array();
266
+ $productInfo['strikeoutPrice']['amount'] = $specialPrice > 0 ? $listPrice : 0;
267
+ $productInfo['strikeoutPrice']['amountDefaultCurrency'] = '';
268
+ $productInfo['strikeoutPrice']['currency'] = $store->getCurrentCurrencyCode();
269
+
270
+ if ($specialPrice > 0) {
271
+ $actionDiscount = array();
272
+ $actionDiscount['id'] = 'discount';
273
+ $actionDiscount['name'] = sprintf("%d%%", (($listPrice - $specialPrice) / $listPrice) * 100);
274
+ $productInfo['actions'][] = $actionDiscount;
275
+ }
276
+
277
+ $productInfo['picture'] = $product->getImageUrl();
278
+
279
+ $mediaGallery = $product->getMediaGalleryImages();
280
+ if (count($mediaGallery) > 0) {
281
+ foreach ($mediaGallery as $mediaGal) {
282
+ $picture['url'] = $mediaGal->getUrl();
283
+ $productInfo['pictures'][] = $picture;
284
+ }
285
+ } else {
286
+ $productInfo['pictures'][0]['url'] = $productInfo['picture'];
287
+ }
288
+
289
+ $productInfo['productDetailUrl'] = '<p>' . $product->getDescription() . '</p>';
290
+
291
+ $isInStock = false;
292
+ $stockStatus = Mage::getModel('cataloginventory/stock_item')
293
+ ->loadByProduct($product)
294
+ ->getIsInStock();
295
+ if ($stockStatus == 1)
296
+ $isInStock = true;
297
+ $productInfo['inStock'] = $isInStock;
298
+
299
+ $productAttributeCodeIsShippingFree = Mage::getStoreConfig('tappz/catalog/productAttributeCodeShippingInfo');
300
+ $productInfo['isShipmentFree'] = $product->getData($productAttributeCodeIsShippingFree);
301
+ $productInfo['productUrl'] = $product->getProductUrl();
302
+
303
+ if ($productInfo['isShipmentFree']) {
304
+ $action = array();
305
+ $action['id'] = 'popper';
306
+ $action['name'] = 'Free Shipping';
307
+ $productInfo['actions'][] = $action;
308
+ }
309
+
310
+ //variants
311
+ $productType = $product->getTypeId();;
312
+ if ($productType == 'configurable') {
313
+ $instanceConf = $product->getTypeInstance();
314
+ $configurableAttributesData = $instanceConf->getConfigurableAttributesAsArray();
315
+
316
+ foreach ($configurableAttributesData as $dt => $val) {
317
+ $group = array();
318
+ $group['id'] = null;
319
+ $group['name'] = null;
320
+ $group['selected'] = null;
321
+ $group['values'] = array();
322
+
323
+ $group['id'] = $val['attribute_code'];
324
+ $group['name'] = $val['label'];
325
+
326
+ // TODO : mcgoncu - annelutfen icin ekle
327
+ if ($val['attribute_code'] == 'beden')
328
+ $productInfo['additionalDetail'] = "<a href=\"http://annelutfen.com/skin/frontend/purple/purple/images/olcu_tablosu_gri.png\">Ölçü tablosu</a>";
329
+
330
+ foreach ($val['values'] as $vv) {
331
+ $groupValue = array();
332
+ $groupValue['id'] = null;
333
+ $groupValue['name'] = null;
334
+
335
+ $groupValue['id'] = $vv['label'];
336
+ $groupValue['name'] = $vv['value_index'];
337
+ $group['values'][] = $groupValue;
338
+ }
339
+ $productInfo['variants'][] = $group;
340
+ }
341
+ }
342
+
343
+ $productAttributeCodeShippingInfo = Mage::getStoreConfig('tappz/catalog/productAttributeCodeShippingInfo');
344
+ $productInfo['shipmentInformation'] = $product->getData($productAttributeCodeShippingInfo);
345
+
346
+ return $productInfo;
347
+ }
348
+
349
+ public function getRelatedProducts($productId)
350
+ {
351
+ $product = Mage::getModel('catalog/product')->load($productId);
352
+ $link = $product->getLinkInstance()
353
+ ->setLinkTypeId(Mage_Catalog_Model_Product_Link::LINK_TYPE_RELATED);
354
+
355
+ $collection = $link
356
+ ->getProductCollection()
357
+ ->setIsStrongMode()
358
+ ->setProduct($product);
359
+
360
+ $arData = array();
361
+ if (!empty($collection)) {
362
+ foreach ($collection as $_product):
363
+ array_push($arData, $this->getProduct($_product->getId()));
364
+ endforeach;
365
+ }
366
+
367
+ return $arData;
368
+ }
369
+
370
+ public function getChildProductId($parentProductId, $attributeList)
371
+ {
372
+ $subProductIds = Mage::getModel('catalog/product_type_configurable')
373
+ ->getChildrenIds($parentProductId); //get the children ids through a simple query
374
+ $subProducts = Mage::getModel('catalog/product')->getCollection()
375
+ ->addAttributeToFilter('entity_id', $subProductIds);
376
+
377
+ foreach ($attributeList as $attribute) {
378
+ $attributeCode = $attribute->id;
379
+ $attributeValueIndex = $attribute->values[0]->id;
380
+
381
+ $subProducts->addAttributeToFilter($attributeCode, $attributeValueIndex);
382
+ }
383
+
384
+ $product = null;
385
+ if ($subProducts->getSize() > 0) {
386
+ $product = $subProducts->getFirstItem();
387
+ }
388
+ return $product == null ? 0 : $product->getId();
389
+ }
390
+ }
app/code/local/TmobLabs/Tappz/Model/Catalog/Api/V2.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_Catalog_Api_V2 extends TmobLabs_Tappz_Model_Catalog_Api
4
+ {
5
+
6
+ }
app/code/local/TmobLabs/Tappz/Model/Customer/Address/Api.php ADDED
@@ -0,0 +1,332 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_Customer_Address_Api extends Mage_Api_Model_Resource_Abstract
4
+ {
5
+ public function get($addressId)
6
+ {
7
+ $address = Mage::getModel('customer/address')->load($addressId);
8
+
9
+ if (!$address) {
10
+ $this->_fault("404.11", "Address is not found.");
11
+ }
12
+
13
+ return $this->prepareAddress($address);
14
+ }
15
+
16
+ public function getList($customerId)
17
+ {
18
+ $customer = Mage::getModel('customer/customer')->load($customerId);
19
+ /* @var $customer Mage_Customer_Model_Customer */
20
+ if (!$customer) {
21
+ $this->_fault("404.10", "Customer is not found.");
22
+ }
23
+
24
+ $addresses = array();
25
+ foreach ($customer->getAddresses() as $address) {
26
+ $addresses[] = $this->prepareAddress($address);
27
+ }
28
+ return $addresses;
29
+ }
30
+
31
+ public function create($customerId, $addressData)
32
+ {
33
+ $addressAddressNameAttributeCode = Mage::getStoreConfig('tappz/address/name');
34
+ $addressNameAttributeCode = Mage::getStoreConfig('tappz/address/firstname');
35
+ $addressSurnameAttributeCode = Mage::getStoreConfig('tappz/address/lastname');
36
+ $addressEmailAttributeCode = Mage::getStoreConfig('tappz/address/email');
37
+ $addressStreetAttributeCode = Mage::getStoreConfig('tappz/address/street');
38
+ $addressCountryIdAttributeCode = Mage::getStoreConfig('tappz/address/country_id');
39
+ $addressRegionAttributeCode = Mage::getStoreConfig('tappz/address/region');
40
+ $addressRegionIdAttributeCode = Mage::getStoreConfig('tappz/address/region_id');
41
+ $addressCityAttributeCode = Mage::getStoreConfig('tappz/address/city');
42
+ $addressCityIdAttributeCode = Mage::getStoreConfig('tappz/address/city_id');
43
+ $addressDistrictAttributeCode = Mage::getStoreConfig('tappz/address/district');
44
+ $addressDistrictIdAttributeCode = Mage::getStoreConfig('tappz/address/district_id');
45
+ $addressTownAttributeCode = Mage::getStoreConfig('tappz/address/town');
46
+ $addressTownIdAttributeCode = Mage::getStoreConfig('tappz/address/town_id');
47
+ $addressIsCompanyAttributeCode = Mage::getStoreConfig('tappz/address/isCompany');
48
+ $addressCompanyAttributeCode = Mage::getStoreConfig('tappz/address/company');
49
+ $addressTaxDepartmentAttributeCode = Mage::getStoreConfig('tappz/address/taxDepartment');
50
+ $addressTaxNoAttributeCode = Mage::getStoreConfig('tappz/address/vatNo');
51
+ $addressTelephoneAttributeCode = Mage::getStoreConfig('tappz/address/phone');;
52
+ $addressIdentityNoAttributeCode = Mage::getStoreConfig('tappz/address/idNo');
53
+ $addressPostcodeAttributeCode = Mage::getStoreConfig('tappz/address/postcode');
54
+
55
+ $customer = Mage::getModel('customer/customer')
56
+ ->load($customerId);
57
+ /* @var $customer Mage_Customer_Model_Customer */
58
+
59
+ if (!$customer->getId()) {
60
+ $this->_fault('customer_not_exists');
61
+ }
62
+
63
+ $address = Mage::getModel('customer/address');
64
+ /* @var $address Mage_Customer_Model_Address */
65
+
66
+ $address->setData($addressAddressNameAttributeCode, $addressData->addressName);
67
+ $address->setData($addressNameAttributeCode, $addressData->name);
68
+ $address->setData($addressSurnameAttributeCode, $addressData->surname);
69
+ $address->setData($addressEmailAttributeCode, $addressData->email);
70
+ $address->setData($addressStreetAttributeCode, $addressData->addressLine);
71
+ $address->setData($addressCountryIdAttributeCode, $addressData->countryCode);
72
+ $address->setData($addressRegionAttributeCode, $addressData->state);
73
+ $address->setData($addressRegionIdAttributeCode, $addressData->stateCode);
74
+ $address->setData($addressCityAttributeCode, $addressData->city);
75
+ $address->setData($addressCityIdAttributeCode, $addressData->cityCode);
76
+ $address->setData($addressDistrictAttributeCode, $addressData->district);
77
+ $address->setData($addressDistrictIdAttributeCode, $addressData->districtCode);
78
+ $address->setData($addressTownAttributeCode, $addressData->town);
79
+ $address->setData($addressTownIdAttributeCode, $addressData->townCode);
80
+ $address->setData($addressIsCompanyAttributeCode, $addressData->corporate);
81
+ $address->setData($addressCompanyAttributeCode, $addressData->companyTitle);
82
+ $address->setData($addressTaxDepartmentAttributeCode, $addressData->taxDepartment);
83
+ $address->setData($addressTaxNoAttributeCode, $addressData->taxNo);
84
+ $address->setData($addressTelephoneAttributeCode, $addressData->phoneNumber);
85
+ $address->setData($addressIdentityNoAttributeCode, $addressData->identityNo);
86
+ $address->setData($addressPostcodeAttributeCode, $addressData->zipCode);
87
+
88
+ $address->setCustomer($customer);
89
+
90
+ $valid = $address->validate();
91
+
92
+ if (is_array($valid)) {
93
+ $this->_fault('invalid_data', implode("\n", $valid));
94
+ }
95
+
96
+ try {
97
+ $address->save();
98
+ } catch (Mage_Core_Exception $e) {
99
+ $this->_fault('invalid_data', $e->getMessage());
100
+ }
101
+
102
+ return $this->prepareAddress($address);
103
+ }
104
+
105
+ public function update($addressData)
106
+ {
107
+ $addressAddressNameAttributeCode = Mage::getStoreConfig('tappz/address/name');
108
+ $addressNameAttributeCode = Mage::getStoreConfig('tappz/address/firstname');
109
+ $addressSurnameAttributeCode = Mage::getStoreConfig('tappz/address/lastname');
110
+ $addressEmailAttributeCode = Mage::getStoreConfig('tappz/address/email');
111
+ $addressStreetAttributeCode = Mage::getStoreConfig('tappz/address/street');
112
+ $addressCountryIdAttributeCode = Mage::getStoreConfig('tappz/address/country_id');
113
+ $addressRegionAttributeCode = Mage::getStoreConfig('tappz/address/region');
114
+ $addressRegionIdAttributeCode = Mage::getStoreConfig('tappz/address/region_id');
115
+ $addressCityAttributeCode = Mage::getStoreConfig('tappz/address/city');
116
+ $addressCityIdAttributeCode = Mage::getStoreConfig('tappz/address/city_id');
117
+ $addressDistrictAttributeCode = Mage::getStoreConfig('tappz/address/district');
118
+ $addressDistrictIdAttributeCode = Mage::getStoreConfig('tappz/address/district_id');
119
+ $addressTownAttributeCode = Mage::getStoreConfig('tappz/address/town');
120
+ $addressTownIdAttributeCode = Mage::getStoreConfig('tappz/address/town_id');
121
+ $addressIsCompanyAttributeCode = Mage::getStoreConfig('tappz/address/isCompany');
122
+ $addressCompanyAttributeCode = Mage::getStoreConfig('tappz/address/company');
123
+ $addressTaxDepartmentAttributeCode = Mage::getStoreConfig('tappz/address/taxDepartment');
124
+ $addressTaxNoAttributeCode = Mage::getStoreConfig('tappz/address/vatNo');
125
+ $addressTelephoneAttributeCode = Mage::getStoreConfig('tappz/address/phone');;
126
+ $addressIdentityNoAttributeCode = Mage::getStoreConfig('tappz/address/idNo');
127
+ $addressPostcodeAttributeCode = Mage::getStoreConfig('tappz/address/postcode');
128
+
129
+ /* @var $address Mage_Customer_Model_Address */
130
+ $address = Mage::getModel('customer/address')
131
+ ->load($addressData->id);
132
+
133
+ if (!$address->getId()) {
134
+ $this->_fault('not_exists');
135
+ }
136
+
137
+ $address->setData($addressAddressNameAttributeCode, $addressData->addressName);
138
+ $address->setData($addressNameAttributeCode, $addressData->name);
139
+ $address->setData($addressSurnameAttributeCode, $addressData->surname);
140
+ $address->setData($addressEmailAttributeCode, $addressData->email);
141
+ $address->setData($addressStreetAttributeCode, $addressData->addressLine);
142
+ $address->setData($addressCountryIdAttributeCode, $addressData->countryCode);
143
+ $address->setData($addressRegionAttributeCode, $addressData->state);
144
+ $address->setData($addressRegionIdAttributeCode, $addressData->stateCode);
145
+ $address->setData($addressCityAttributeCode, $addressData->city);
146
+ $address->setData($addressCityIdAttributeCode, $addressData->cityCode);
147
+ $address->setData($addressDistrictAttributeCode, $addressData->district);
148
+ $address->setData($addressDistrictIdAttributeCode, $addressData->districtCode);
149
+ $address->setData($addressTownAttributeCode, $addressData->town);
150
+ $address->setData($addressTownIdAttributeCode, $addressData->townCode);
151
+ $address->setData($addressIsCompanyAttributeCode, $addressData->corporate);
152
+ $address->setData($addressCompanyAttributeCode, $addressData->companyTitle);
153
+ $address->setData($addressTaxDepartmentAttributeCode, $addressData->taxDepartment);
154
+ $address->setData($addressTaxNoAttributeCode, $addressData->taxNo);
155
+ $address->setData($addressTelephoneAttributeCode, $addressData->phoneNumber);
156
+ $address->setData($addressIdentityNoAttributeCode, $addressData->identityNo);
157
+ $address->setData($addressPostcodeAttributeCode, $addressData->zipCode);
158
+
159
+ try {
160
+ $address->save();
161
+ } catch (Mage_Core_Exception $e) {
162
+ $this->_fault('invalid_data', $e->getMessage());
163
+ }
164
+
165
+ return $this->prepareAddress($address);
166
+ }
167
+
168
+ public function delete($address)
169
+ {
170
+ $address = Mage::getModel('customer/address')
171
+ ->load($address->id);
172
+
173
+ if (!$address->getId()) {
174
+ $this->_fault('not_exists');
175
+ }
176
+
177
+ try {
178
+ $address->delete();
179
+ } catch (Mage_Core_Exception $e) {
180
+ $this->_fault('invalid_data', $e->getMessage());
181
+ }
182
+
183
+ return $address->getId();
184
+ }
185
+
186
+ protected function prepareAddress($address)
187
+ {
188
+ $addressAddressNameAttributeCode = Mage::getStoreConfig('tappz/address/name');
189
+ $addressNameAttributeCode = Mage::getStoreConfig('tappz/address/firstname');
190
+ $addressSurnameAttributeCode = Mage::getStoreConfig('tappz/address/lastname');
191
+ $addressEmailAttributeCode = Mage::getStoreConfig('tappz/address/email');
192
+ $addressStreetAttributeCode = Mage::getStoreConfig('tappz/address/street');
193
+ $addressCountryIdAttributeCode = Mage::getStoreConfig('tappz/address/country_id');
194
+ $addressRegionAttributeCode = Mage::getStoreConfig('tappz/address/region');
195
+ $addressRegionIdAttributeCode = Mage::getStoreConfig('tappz/address/region_id');
196
+ $addressCityAttributeCode = Mage::getStoreConfig('tappz/address/city');
197
+ $addressCityIdAttributeCode = Mage::getStoreConfig('tappz/address/city_id');
198
+ $addressDistrictAttributeCode = Mage::getStoreConfig('tappz/address/district');
199
+ $addressDistrictIdAttributeCode = Mage::getStoreConfig('tappz/address/district_id');
200
+ $addressTownAttributeCode = Mage::getStoreConfig('tappz/address/town');
201
+ $addressTownIdAttributeCode = Mage::getStoreConfig('tappz/address/town_id');
202
+ $addressIsCompanyAttributeCode = Mage::getStoreConfig('tappz/address/isCompany');
203
+ $addressCompanyAttributeCode = Mage::getStoreConfig('tappz/address/company');
204
+ $addressTaxDepartmentAttributeCode = Mage::getStoreConfig('tappz/address/taxDepartment');
205
+ $addressTaxNoAttributeCode = Mage::getStoreConfig('tappz/address/vatNo');
206
+ $addressTelephoneAttributeCode = Mage::getStoreConfig('tappz/address/phone');;
207
+ $addressIdentityNoAttributeCode = Mage::getStoreConfig('tappz/address/idNo');
208
+ $addressPostcodeAttributeCode = Mage::getStoreConfig('tappz/address/postcode');
209
+
210
+ $row = array();
211
+
212
+ $row['id'] = '';
213
+ $row['addressName'] = '';
214
+ $row['name'] = '';
215
+ $row['surname'] = '';
216
+ $row['email'] = '';
217
+ $row['addressLine'] = '';
218
+ $row['country'] = '';
219
+ $row['countryCode'] = '';
220
+ $row['state'] = '';
221
+ $row['stateCode'] = '';
222
+ $row['city'] = '';
223
+ $row['cityCode'] = '';
224
+ $row['district'] = '';
225
+ $row['districtCode'] = '';
226
+ $row['town'] = '';
227
+ $row['townCode'] = '';
228
+ $row['corporate'] = '';
229
+ $row['companyTitle'] = '';
230
+ $row['taxDepartment'] = '';
231
+ $row['taxNo'] = '';
232
+ $row['phoneNumber'] = '';
233
+ $row['identityNo'] = '';
234
+ $row['zipCode'] = '';
235
+
236
+ $row['id'] = $address->getId();
237
+ $row['addressName'] = $address->getData($addressAddressNameAttributeCode);
238
+ if (!isset($row['addressName'])) {
239
+ $row['addressName'] = $address->getData($addressStreetAttributeCode);
240
+ }
241
+ $row['name'] = $address->getData($addressNameAttributeCode);
242
+ $row['surname'] = $address->getData($addressSurnameAttributeCode);
243
+ $row['email'] = $address->getData($addressEmailAttributeCode);
244
+ $row['addressLine'] = $address->getData($addressStreetAttributeCode);
245
+ $row['country'] = '';
246
+ $row['countryCode'] = '';
247
+ $countryId = $address->getData($addressCountryIdAttributeCode);
248
+ if($countryId){
249
+ /* @var $country Mage_Directory_Model_Country */
250
+ $country = Mage::getModel('directory/country')->load($countryId);
251
+ $country->getName(); // Loading name in default locale
252
+ $row['country'] = $country->getName();
253
+ $row['countryCode'] = $country->getId();
254
+ }
255
+ $row['state'] = $address->getData($addressRegionAttributeCode);
256
+ $row['stateCode'] = $address->getData($addressRegionIdAttributeCode);
257
+ $row['city'] = $address->getData($addressCityAttributeCode);
258
+ $row['cityCode'] = $address->getData($addressCityIdAttributeCode);
259
+ $row['district'] = $address->getData($addressDistrictAttributeCode);
260
+ $row['districtCode'] = $address->getData($addressDistrictIdAttributeCode);
261
+ $row['town'] = $address->getData($addressTownAttributeCode);
262
+ $row['townCode'] = $address->getData($addressTownIdAttributeCode);
263
+ $row['corporate'] = $address->getData($addressIsCompanyAttributeCode);
264
+ $row['companyTitle'] = $address->getData($addressCompanyAttributeCode);
265
+ $row['taxDepartment'] = $address->getData($addressTaxDepartmentAttributeCode);
266
+ $row['taxNo'] = $address->getData($addressTaxNoAttributeCode);
267
+ $row['phoneNumber'] = $address->getData($addressTelephoneAttributeCode);
268
+ $row['identityNo'] = $address->getData($addressIdentityNoAttributeCode);
269
+ $row['zipCode'] = $address->getData($addressPostcodeAttributeCode);
270
+
271
+ return $row;
272
+ }
273
+
274
+ public function countryList()
275
+ {
276
+ $collection = Mage::getModel('directory/country')->getCollection();
277
+
278
+ $result = array();
279
+ foreach ($collection as $country) {
280
+ /* @var $country Mage_Directory_Model_Country */
281
+ $country->getName(); // Loading name in default locale
282
+ $location = array();
283
+ $location['code'] = $country->getId();
284
+ $location['name'] = $country->getName();
285
+ $result[] = $location;
286
+ }
287
+
288
+ return $result;
289
+ }
290
+
291
+ public function stateList($countryId)
292
+ {
293
+ try {
294
+ $country = Mage::getModel('directory/country')->load($countryId);
295
+ } catch (Mage_Core_Exception $e) {
296
+ $this->_fault('country_not_exists', $e->getMessage());
297
+ }
298
+
299
+ if (!$country->getId()) {
300
+ $this->_fault('country_not_exists');
301
+ }
302
+
303
+ $result = array();
304
+ foreach ($country->getRegions() as $region) {
305
+ $region->getName(); // Loading name in default locale
306
+ $location = array();
307
+ $location['code'] = $region->getId();
308
+ $location['name'] = $region->getName();
309
+ $result[] = $location;
310
+ }
311
+
312
+ return $result;
313
+ }
314
+
315
+ public function cityList($stateId)
316
+ {
317
+ // TODO : mcgoncu
318
+ return array();
319
+ }
320
+
321
+ public function districtList($stateId)
322
+ {
323
+ // TODO : mcgoncu
324
+ return array();
325
+ }
326
+
327
+ public function townList($stateId)
328
+ {
329
+ // TODO : mcgoncu
330
+ return array();
331
+ }
332
+ }
app/code/local/TmobLabs/Tappz/Model/Customer/Address/Api/V2.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_Customer_Address_Api_V2 extends TmobLabs_Tappz_Model_Customer_Address_Api
4
+ {
5
+
6
+ }
app/code/local/TmobLabs/Tappz/Model/Customer/Api.php ADDED
@@ -0,0 +1,206 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_Customer_Api extends Mage_Customer_Model_Api_Resource
4
+ {
5
+ protected function _prepareCustomerData($data)
6
+ {
7
+ $genderAttributeCode = Mage::getStoreConfig('tappz/customer/gender');
8
+ $emailAttributeCode = Mage::getStoreConfig('tappz/customer/email');
9
+ $phoneAttributeCode = Mage::getStoreConfig('tappz/customer/phone');
10
+ $birthDateAttributeCode = Mage::getStoreConfig('tappz/customer/birthDate');
11
+
12
+ $result = array();
13
+ $result['entity_id'] = $data->customerId;
14
+ $result['firstname'] = $data->firstName;
15
+ $result['lastname'] = $data->lastName;
16
+ $result['password'] = $data->password;
17
+ $result[$genderAttributeCode] = $data->gender;
18
+ $result['isSubscribed'] = $data->isSubscribed;
19
+ $result[$emailAttributeCode] = $data->email;
20
+ $result[$phoneAttributeCode] = $data->phone;
21
+ $result[$birthDateAttributeCode] = $data->birthDate;
22
+
23
+ return $result;
24
+ }
25
+
26
+ public function info($customerId)
27
+ {
28
+ $genderAttributeCode = Mage::getStoreConfig('tappz/customer/gender');
29
+ $emailAttributeCode = Mage::getStoreConfig('tappz/customer/email');
30
+ $phoneAttributeCode = Mage::getStoreConfig('tappz/customer/phone');
31
+ $birthDateAttributeCode = Mage::getStoreConfig('tappz/customer/birthDate');
32
+
33
+ /* @var $customer Mage_Customer_Model_Customer */
34
+ $customer = Mage::getModel('customer/customer')->load($customerId);
35
+ if (!$customer) {
36
+ $this->_fault("404.10", "Customer is not found.");
37
+ }
38
+
39
+ $result = array();
40
+ $result['customerId'] = "";
41
+ $result['fullName'] = "";
42
+ $result['firstName'] = "";
43
+ $result['lastName'] = "";
44
+ $result['gender'] = "";
45
+ $result['isSubscribed'] = false;
46
+ $result['isAccepted'] = false;
47
+ $result['email'] = "";
48
+ $result['password'] = null;
49
+ $result['phone'] = "";
50
+ $result['birthDate'] = "";
51
+ $result['points'] = 0;
52
+ $result['addresses'] = array();
53
+ $result['giftCheques'] = array();
54
+
55
+ $result['customerId'] = $customer->getId();
56
+ $result['fullName'] = $customer->getName();
57
+ $result['firstName'] = $customer->getFirstname() . ($customer->getMiddleName() ? (' ' . $customer->getMiddleName()) : '');
58
+ $result['lastName'] = $customer->getLastName();
59
+ $result['gender'] = $customer->getData($genderAttributeCode);
60
+ $result['isAccepted'] = !$customer->isConfirmationRequired();
61
+ $result['email'] = $customer->getData($emailAttributeCode);
62
+ $result['phone'] = $customer->getData($phoneAttributeCode);
63
+ $result['birthDate'] = $customer->getData($birthDateAttributeCode);
64
+
65
+ $subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($customer->getData($emailAttributeCode));
66
+ $result['isSubscribed'] = (bool)$subscriber->getId();
67
+
68
+ $points = Mage::getModel('enterprise_reward/reward');
69
+ if ($points) {
70
+ $points = $points->setCustomer($customer)
71
+ ->setWebsiteId(Mage::app()->getWebsite()->getId())
72
+ ->loadByCustomer()
73
+ ->getPointsBalance();
74
+ }
75
+ $result['points'] = $points;
76
+
77
+ $result['addresses'] = Mage::getSingleton('tappz/customer_address_api')->getList($customer->getId()); /// ??????
78
+
79
+ $result['giftCheques'] = array();
80
+ // TODO: mcgoncu - giftCheque
81
+ return $result;
82
+ }
83
+
84
+ public function login($userName, $password)
85
+ {
86
+ $storeId = Mage::getStoreConfig('tappz/general/store');
87
+ /** @var Mage_Core_Model_Store $store */
88
+ $store = Mage::getModel('core/store')->load($storeId);
89
+
90
+ $customer = Mage::getModel('customer/customer')
91
+ ->setStore($store);
92
+ /* @var $customer Mage_Customer_Model_Customer */
93
+
94
+ try {
95
+ $customer->authenticate($userName, $password);
96
+ } catch (Exception $e) {
97
+ switch ($e->getCode()) {
98
+ case Mage_Customer_Model_Customer::EXCEPTION_EMAIL_NOT_CONFIRMED:
99
+ $this->_fault('invalid_data', "Email is not confirmed.");
100
+ break;
101
+ case Mage_Customer_Model_Customer::EXCEPTION_INVALID_EMAIL_OR_PASSWORD:
102
+ $this->_fault('invalid_data', "Invalid email or password.");
103
+ break;
104
+ default:
105
+ $this->_fault('invalid_data', $e->getMessage());
106
+ break;
107
+ }
108
+ }
109
+
110
+ $customer = $customer->loadByEmail($userName);
111
+ return $this->info($customer->getId());
112
+ }
113
+
114
+ public function facebookLogin($facebookAccessToken, $facebookUserId)
115
+ {
116
+ //TODO : mcgoncu - fblogin
117
+ }
118
+
119
+ public function register($tCustomerData)
120
+ {
121
+ $storeId = Mage::getStoreConfig('tappz/general/store');
122
+ /** @var Mage_Core_Model_Store $store */
123
+ $store = Mage::getModel('core/store')->load($storeId);
124
+
125
+ $customerData = $this->_prepareCustomerData($tCustomerData);
126
+ try {
127
+ /* @var $customer Mage_Customer_Model_Customer */
128
+ $customer = Mage::getModel('customer/customer');
129
+ $customer->setData($customerData)
130
+ ->setPassword($customerData['password'])
131
+ ->setStore($store)
132
+ ->save();
133
+ } catch (Mage_Core_Exception $e) {
134
+ $this->_fault('invalid_data', $e->getMessage());
135
+ }
136
+
137
+ return $this->info($customer->getId());
138
+ }
139
+
140
+ public function update($tCustomerData)
141
+ {
142
+ $genderAttributeCode = Mage::getStoreConfig('tappz/customer/gender');
143
+ $emailAttributeCode = Mage::getStoreConfig('tappz/customer/email');
144
+ $phoneAttributeCode = Mage::getStoreConfig('tappz/customer/phone');
145
+ $birthDateAttributeCode = Mage::getStoreConfig('tappz/customer/birthDate');
146
+
147
+ $customerData = $this->_prepareCustomerData($tCustomerData);
148
+ $customer = Mage::getModel('customer/customer')->load($customerData['entity_id']);
149
+ /* @var $customer Mage_Customer_Model_Customer */
150
+
151
+ if (!$customer->getId()) {
152
+ $this->_fault('not_exists');
153
+ }
154
+
155
+ try {
156
+ $customer->setData('firstname', $customerData['firstname']);
157
+ $customer->setData('lastname', $customerData['lastname']);
158
+ $customer->setData($genderAttributeCode, $customerData[$genderAttributeCode]);
159
+ $customer->setData($emailAttributeCode, $customerData[$emailAttributeCode]);
160
+ $customer->setData($phoneAttributeCode, $customerData[$phoneAttributeCode]);
161
+ $customer->setData($birthDateAttributeCode, $customerData[$birthDateAttributeCode]);
162
+
163
+ if (isset($customerData['isSubscribed']))
164
+ $customer->setIsSubscribed($customerData['isSubscribed'] === 'true' ? true : false);
165
+
166
+ $customer->save();
167
+ } catch (Mage_Core_Exception $e) {
168
+ $this->_fault('invalid_data', $e->getMessage());
169
+ }
170
+
171
+ return $this->info($customer->getId());
172
+ }
173
+
174
+ public function lostPassword($email)
175
+ {
176
+ if (!isset($email) || trim($email) === '') {
177
+ $this->_fault("invalid_data", "Please enter a valid email address.");
178
+ }
179
+
180
+ $storeId = Mage::getStoreConfig('tappz/general/store');
181
+ /** @var Mage_Core_Model_Store $store */
182
+ $store = Mage::getModel('core/store')->load($storeId);
183
+
184
+ $customer = $customer = Mage::getModel('customer/customer')
185
+ ->setStoreId($storeId)
186
+ ->setWebsiteId($store->getWebsiteId())
187
+ ->loadByEmail($email);
188
+
189
+ if (!$customer) {
190
+ $this->_fault("invalid_data", "Customer is not found");
191
+ }
192
+ $customer = $customer->sendPasswordReminderEmail();
193
+
194
+ if (!$customer) {
195
+ $this->_fault("invalid_data", "Error occured while sending email");
196
+ }
197
+
198
+ return "Your password reminder email has been sent.";
199
+ }
200
+
201
+ public function getUserAgreement()
202
+ {
203
+ $agreement = Mage::getStoreConfig('tappz/customer/agreement');
204
+ return $agreement;
205
+ }
206
+ }
app/code/local/TmobLabs/Tappz/Model/Customer/Api/V2.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_Customer_Api_V2 extends TmobLabs_Tappz_Model_Customer_Api
4
+ {
5
+
6
+ }
app/code/local/TmobLabs/Tappz/Model/Customer/Order/Api.php ADDED
@@ -0,0 +1,145 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_Customer_Order_Api extends Mage_Sales_Model_Order_Api
4
+ {
5
+ public function getList($customerId)
6
+ {
7
+ $customer = Mage::getModel('customer/customer')->load($customerId);
8
+
9
+ if (!$customer->getId()) {
10
+ $this->_fault('not_exists');
11
+ }
12
+
13
+ $filter = array('customer_id' => $customer->getId());
14
+
15
+ $orderCollection = $this->items($filter);
16
+
17
+ $result = array();
18
+ foreach ($orderCollection as $order) {
19
+ $result[] = $this->prepareOrder($order);
20
+ }
21
+ return $result;
22
+ }
23
+
24
+ public function info($orderId)
25
+ {
26
+ $order = Mage::getModel('sales/order');
27
+
28
+ /* @var $order Mage_Sales_Model_Order */
29
+
30
+ $order->loadByIncrementId($orderId);
31
+
32
+ if (!$order->getId()) {
33
+ $this->_fault('not_exists');
34
+ }
35
+
36
+ $result = $this->_getAttributes($order, 'order');
37
+ /** @var $addressApi TmobLabs_Tappz_Model_Customer_Address_Api */
38
+ $addressApi = Mage::getSingleton('tappz/Customer_Address_Api');
39
+
40
+
41
+ $result['items'] = array();
42
+
43
+ foreach ($order->getAllItems() as $item) {
44
+ if ($item->getGiftMessageId() > 0) {
45
+ $item->setGiftMessage(
46
+ Mage::getSingleton('giftmessage/message')->load($item->getGiftMessageId())->getMessage()
47
+ );
48
+ }
49
+
50
+ $result['items'][] = $this->_getAttributes($item, 'order_item');
51
+ }
52
+
53
+ $result['payment'] = $this->_getAttributes($order->getPayment(), 'order_payment');
54
+
55
+ $result['status_history'] = array();
56
+
57
+ foreach ($order->getAllStatusHistory() as $history) {
58
+ $result['status_history'][] = $this->_getAttributes($history, 'order_status_history');
59
+ }
60
+
61
+ $result['currency'] = $order->getOrderCurrency()->getCode();
62
+ $result['shipping_address'] = $addressApi->get($order->getShippingAddress()->getCustomerAddressId());
63
+ $result['billing_address'] = $addressApi->get($order->getBillingAddress()->getCustomerAddressId());
64
+ return $this->prepareOrder($result);
65
+ }
66
+
67
+ protected function prepareOrder($order)
68
+ {
69
+ $decimalDivider = Mage::getStoreConfig('tappz/general/decimalSeparator');
70
+ $thousandDivider = Mage::getStoreConfig('tappz/general/groupSeparator');
71
+ $lineAverageDeliveryDaysAttributeCode = Mage::getStoreConfig('tappz/basket/averagedeliverydaysattributecode');
72
+ $catalogApi = Mage::getSingleton('tappz/Catalog_Api');
73
+
74
+ $result = array();
75
+ $result['id'] = null;
76
+ $result['currency'] = null;
77
+ $result['orderDate'] = null;
78
+ $result['shippingStatus'] = null;
79
+ $result['paymentStatus'] = null;
80
+ $result['ipAddress'] = null;
81
+ $result['itemsPriceTotal'] = null;
82
+ $result['discountTotal'] = null;
83
+ $result['subTotal'] = null;
84
+ $result['shippingTotal'] = null;
85
+ $result['total'] = null;
86
+ $result['delivery'] = array();
87
+ $result['delivery']['shippingAddress'] = $order['shipping_address'] ? $order['shipping_address'] : null;
88
+ $result['delivery']['billingAddress'] = $order['billing_address'] ? $order['billing_address'] : null;
89
+ $result['delivery']['shippingMethod'] = array();
90
+ $result['delivery']['shippingMethod']['id'] = null;
91
+ $result['delivery']['shippingMethod']['displayName'] = null;
92
+ $result['delivery']['shippingMethod']['price'] = null;
93
+ $result['payment'] = array();
94
+ $result['payment']['accountNumber'] = null;
95
+ $result['payment']['bankCode'] = null;
96
+ $result['payment']['type'] = null;
97
+ $result['payment']['cashOnDelivery'] = null;
98
+ $result['payment']['creditCard'] = null;
99
+ $result['lines'] = array();
100
+
101
+ $result['id'] = $order['increment_id'];
102
+ $result['orderDate'] = date_format(date_create($order['created_at']), 'd/m/Y');
103
+ $result['shippingStatus'] = $order['status'];
104
+ $result['ipAddress'] = $order['remote_ip'];
105
+ $result['itemsPriceTotal'] = number_format($order['base_subtotal'], 2, $decimalDivider, $thousandDivider);
106
+ $result['discountTotal'] = number_format($order['discount_amount'], 2, $decimalDivider, $thousandDivider);
107
+ $result['subTotal'] = number_format($order['subtotal'], 2, $decimalDivider, $thousandDivider);
108
+ $result['shippingTotal'] = number_format($order['shipping_amount'], 2, $decimalDivider, $thousandDivider);
109
+ $result['total'] = number_format($order['grand_total'], 2, $decimalDivider, $thousandDivider);
110
+ $result['delivery']['shippingMethod']['id'] = $order['shipping_method'];
111
+ $result['delivery']['shippingMethod']['displayName'] = $order['shipping_description'];
112
+ $result['delivery']['shippingMethod']['price'] = $order['shipping_amount'];
113
+ $result['payment']['methodType'] = $order['payment']['method']; // TODO : methodu bul
114
+ $result['payment']['accountNumber'] = '**** **** **** ' . $order['payment']['cc_last4'];
115
+ $result['payment']['bankCode'] = $order['payment']['cc_type'];
116
+ $result['payment']['type'] = $order['payment']['method'];
117
+
118
+ if ($result['payment']['methodType'] == 'paypal_express') {
119
+ $result['payment']['methodType'] = 'PayPal';
120
+ } elseif ($result['payment']['methodType'] == 'checkmo') {
121
+ $result['payment']['methodType'] = 'MoneyTransfer';
122
+ } elseif ($result['payment']['methodType'] == 'cashondelivery') {
123
+ $result['payment']['methodType'] = 'CashOnDelivery';
124
+ } else {
125
+ $result['payment']['methodType'] = 'CreditCard';
126
+ }
127
+
128
+ foreach ($order['items'] as $item){
129
+ $line = array();
130
+ $line['productId'] = $item['product_id'];
131
+ $line['product'] = $catalogApi->getProduct($item['product_id']);
132
+ $line['quantity'] = $item['qty_ordered'];
133
+ $line['price'] = number_format($item['price_incl_tax'], 2, $decimalDivider, $thousandDivider);
134
+ $line['priceTotal'] = number_format($item['row_total_incl_tax'], 2, $decimalDivider, $thousandDivider);
135
+ $line['averageDeliveryDays'] = $item[$lineAverageDeliveryDaysAttributeCode];
136
+ $line['variants'] = array();// $item->getData('');
137
+
138
+ $result['lines'][] = $line;
139
+ }
140
+
141
+ $result['currency'] = $order['currency'];
142
+
143
+ return $result;
144
+ }
145
+ }
app/code/local/TmobLabs/Tappz/Model/Customer/Order/Api/V2.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_Customer_Order_Api_V2 extends TmobLabs_Tappz_Model_Customer_Order_Api
4
+ {
5
+
6
+ }
app/code/local/TmobLabs/Tappz/Model/System/Config/Action.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_System_Config_Action
4
+ {
5
+ /**
6
+ * get option array for system config
7
+ *
8
+ * @return array
9
+ */
10
+ public function toOptionArray()
11
+ {
12
+ $options = array();
13
+ $options[] = array('value' => 'search', 'label' => 'Search a phrase');
14
+ $options[] = array('value' => 'product', 'label' => 'Go to a Product');
15
+ $options[] = array('value' => 'webview', 'label' => 'Open a Url');
16
+ return $options;
17
+ }
18
+ }
app/code/local/TmobLabs/Tappz/Model/System/Config/Address.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_System_Config_Address
4
+ {
5
+
6
+ /**
7
+ * get option array for system config
8
+ *
9
+ * @return array
10
+ */
11
+ public function toOptionArray()
12
+ {
13
+ $options = array();
14
+ $options[] = array('value' => ' ', 'label' => ' ');
15
+
16
+ $attributes = Mage::getModel('customer/address')->getAttributes();
17
+ foreach ($attributes as $attribute) {
18
+ if($attribute->getIsVisible()) {
19
+ $options[] = array('value' => $attribute->getAttributeCode(), 'label' => $attribute->getFrontendLabel());
20
+ }
21
+ }
22
+
23
+ return $options;
24
+ }
25
+ }
app/code/local/TmobLabs/Tappz/Model/System/Config/Category.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_System_Config_Category
4
+ {
5
+ protected $categoryList;
6
+
7
+ /**
8
+ * get option array for system config
9
+ *
10
+ * @return array
11
+ */
12
+ public function toOptionArray()
13
+ {
14
+ $this->categoryList = array();
15
+
16
+ $storeId = (int) Mage::getStoreConfig('tappz/general/store');
17
+ if($storeId <= 0){
18
+ $storeId = 1;
19
+ }
20
+
21
+ /** @var Mage_Core_Model_Store $store */
22
+ $store = Mage::getModel('core/store')->load($storeId);
23
+
24
+ $list = Mage::getModel('catalog/category')
25
+ ->load($store->getRootCategoryId())
26
+ ->getChildrenCategories();
27
+
28
+ foreach ($list as $cat) {
29
+ /** @var Mage_Catalog_Model_Category $category */
30
+ $category = Mage::getModel('catalog/category')->load($cat->getId());
31
+ $this->_getChildrenText($category, '');
32
+ }
33
+
34
+ return $this->categoryList;
35
+ }
36
+
37
+ /**
38
+ * @param $category Mage_Catalog_Model_Category
39
+ * @param $text string
40
+ * @return array $array
41
+ */
42
+ protected function _getChildrenText($category, $text)
43
+ {
44
+ $text = $text . '/' . $category->getName();
45
+ $text = trim($text, '/');
46
+ $this->categoryList[] = array('value' => $category->getId(), 'label' => $text);
47
+ foreach ($category->getChildrenCategories() as $cat) {
48
+ $this->_getChildrenText($cat, $text);
49
+ }
50
+ }
51
+ }
app/code/local/TmobLabs/Tappz/Model/System/Config/Customer.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_System_Config_Customer
4
+ {
5
+
6
+ /**
7
+ * get option array for system config
8
+ *
9
+ * @return array
10
+ */
11
+ public function toOptionArray()
12
+ {
13
+ $options = array();
14
+ $options[] = array('value' => ' ', 'label' => ' ');
15
+
16
+ $attributes = Mage::getModel('customer/customer')->getAttributes();
17
+ foreach ($attributes as $attribute) {
18
+ if ($attribute->getIsVisible()) {
19
+ $options[] = array('value' => $attribute->getAttributeCode(), 'label' => $attribute->getFrontendLabel());
20
+ }
21
+ }
22
+
23
+ return $options;
24
+ }
25
+ }
app/code/local/TmobLabs/Tappz/Model/System/Config/Divider.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_System_Config_Divider
4
+ {
5
+ /**
6
+ * get option array for system config
7
+ *
8
+ * @return array
9
+ */
10
+ public function toOptionArray()
11
+ {
12
+ $options = array();
13
+ $options[] = array('value' => '.', 'label' => '. (Dot)');
14
+ $options[] = array('value' => ',', 'label' => ', (Comma)');
15
+ return $options;
16
+ }
17
+ }
app/code/local/TmobLabs/Tappz/Model/System/Config/Enabled.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_System_Config_Enabled
4
+ {
5
+ /**
6
+ * get option array for system config
7
+ *
8
+ * @return array
9
+ */
10
+ public function toOptionArray()
11
+ {
12
+ $options = array();
13
+ $options[] = array('value' => true, 'label' => 'True ');
14
+ $options[] = array('value' => false, 'label' => 'False ');
15
+ return $options;
16
+ }
17
+ }
app/code/local/TmobLabs/Tappz/Model/System/Config/Payment.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_System_Config_Payment
4
+ {
5
+ /**
6
+ * get option array for system config
7
+ *
8
+ * @return array
9
+ */
10
+ public function toOptionArray()
11
+ {
12
+ $options = array();
13
+ $collection = Mage::helper('payment')->getStoreMethods();
14
+
15
+ foreach ($collection as $method) {
16
+ /** @var $method Mage_Payment_Model_Method_Abstract */
17
+ array_push(
18
+ $options,
19
+ array(
20
+ 'value' => $method->getCode(),
21
+ 'label' => $method->getTitle()
22
+ )
23
+ );
24
+ }
25
+ return $options;
26
+ }
27
+ }
app/code/local/TmobLabs/Tappz/Model/System/Config/Product/Attribute.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_System_Config_Product_Attribute
4
+ {
5
+ /**
6
+ * get option array for system config
7
+ *
8
+ * @return array
9
+ */
10
+ public function toOptionArray()
11
+ {
12
+ $options = array();
13
+ $options[] = array('value' => ' ', 'label' => ' ');
14
+ /** @var Mage_Catalog_Model_Product $product */
15
+ $product = Mage::getModel('catalog/product');
16
+ $attributes = $product->getAttributes();
17
+
18
+ /** @var Mage_Catalog_Model_Resource_Eav_Attribute $attribute */
19
+ foreach ($attributes as $attribute) {
20
+ foreach ($attribute->getEntityType()->getAttributeCodes() as $code) {
21
+ /** @var Mage_Eav_Model_Entity_Attribute $attributeModel */
22
+ $attributeModel = Mage::getModel('eav/entity_attribute')->loadByCode($attribute->getEntityType(), $code);
23
+ $options[] = array('value' => $code, 'label' => $attributeModel->getFrontendLabel());
24
+ }
25
+ break;
26
+ }
27
+
28
+ return $options;
29
+ }
30
+ }
app/code/local/TmobLabs/Tappz/Model/System/Config/Store.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TmobLabs_Tappz_Model_System_Config_Store
4
+ {
5
+ /**
6
+ * get option array for system config
7
+ *
8
+ * @return array
9
+ */
10
+ public function toOptionArray()
11
+ {
12
+ $options = array();
13
+
14
+ $collection = Mage::getModel('core/store_group')->getCollection();
15
+
16
+ foreach ($collection as $group) {
17
+ /** @var Mage_Core_Model_Store_Group $group */
18
+ foreach ($group->getStores() as $store) {
19
+ /** @var Mage_Core_Model_Store $store */
20
+ array_push(
21
+ $options,
22
+ array(
23
+ 'value' => $store->getId(),
24
+ 'label' => $group->getName() . " : " . $store->getName()
25
+ )
26
+ );
27
+ }
28
+ }
29
+
30
+ return $options;
31
+ }
32
+ }
app/code/local/TmobLabs/Tappz/etc/adminhtml.xml ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+
3
+ <config>
4
+ <acl>
5
+ <resources>
6
+ <all>
7
+ <title>Allow Everything</title>
8
+ </all>
9
+ <admin>
10
+ <children>
11
+ <system>
12
+ <children>
13
+ <config>
14
+ <children>
15
+ <tappz>
16
+ <title>t-appz</title>
17
+ </tappz>
18
+ </children>
19
+ </config>
20
+ </children>
21
+ </system>
22
+ </children>
23
+ </admin>
24
+ </resources>
25
+ </acl>
26
+ </config>
app/code/local/TmobLabs/Tappz/etc/api.xml ADDED
@@ -0,0 +1,276 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <config>
3
+ <api>
4
+ <resources>
5
+ <tappz_basket translate="title" module="tappz">
6
+ <title>Tappz Adapter Basket API</title>
7
+ <model>tappz/basket_api</model>
8
+ <methods>
9
+ <get translate="title" module="tappz">
10
+ <method>get</method>
11
+ </get>
12
+ <merge translate="title" module="tappz">
13
+ <method>merge</method>
14
+ </merge>
15
+ <updateItems translate="title" module="tappz">
16
+ <method>updateItems</method>
17
+ </updateItems>
18
+ <setAddress translate="title" module="tappz">
19
+ <method>setAddress</method>
20
+ </setAddress>
21
+ <setGiftWrapping translate="title" module="tappz">
22
+ <method>setGiftWrapping</method>
23
+ </setGiftWrapping>
24
+ <useDiscount translate="title" module="tappz">
25
+ <method>useDiscount</method>
26
+ </useDiscount>
27
+ <deleteDiscount translate="title" module="tappz">
28
+ <method>deleteDiscount</method>
29
+ </deleteDiscount>
30
+ <useGiftCheques translate="title" module="tappz">
31
+ <method>useGiftCheques</method>
32
+ </useGiftCheques>
33
+ <deleteGiftCheques translate="title" module="tappz">
34
+ <method>deleteGiftCheques</method>
35
+ </deleteGiftCheques>
36
+ <useUserPoints translate="title" module="tappz">
37
+ <method>useUserPoints</method>
38
+ </useUserPoints>
39
+ <selectPaymentMethod translate="title" module="tappz">
40
+ <method>selectPaymentMethod</method>
41
+ </selectPaymentMethod>
42
+ <getContract translate="title" module="tappz">
43
+ <method>getContract</method>
44
+ </getContract>
45
+ <purchaseCreditCard translate="title" module="tappz">
46
+ <method>purchaseCreditCard</method>
47
+ </purchaseCreditCard>
48
+ <purchaseMoneyOrder translate="title" module="tappz">
49
+ <method>purchaseMoneyOrder</method>
50
+ </purchaseMoneyOrder>
51
+ <purchaseCashOnDelivery translate="title" module="tappz">
52
+ <method>purchaseCashOnDelivery</method>
53
+ </purchaseCashOnDelivery>
54
+ <purchaseWithPayPal translate="title" module="tappz">
55
+ <method>purchaseWithPayPal</method>
56
+ </purchaseWithPayPal>
57
+ <purchaseWithApplePay translate="title" module="tappz">
58
+ <method>purchaseWithApplePay</method>
59
+ </purchaseWithApplePay>
60
+
61
+ <getTaksitSecenekleri translate="title" module="tappz">
62
+ <method>getTaksitSecenekleri</method>
63
+ </getTaksitSecenekleri>
64
+ <getSupplyDate translate="title" module="tappz">
65
+ <method>getSupplyDate</method>
66
+ </getSupplyDate>
67
+ </methods>
68
+ <faults module="tappz">
69
+ <project_not_exists>
70
+ <code>101</code>
71
+ <message>Requested project does not exist.</message>
72
+ </project_not_exists>
73
+ <invalid_data>
74
+ <code>102</code>
75
+ <message>Provided data is invalid.</message>
76
+ </invalid_data>
77
+ <save_error>
78
+ <code>103</code>
79
+ <message>Error while saving project. Details in error message.</message>
80
+ </save_error>
81
+ <remove_error>
82
+ <code>104</code>
83
+ <message>Error while removing project. Details in error message.</message>
84
+ </remove_error>
85
+ </faults>
86
+ </tappz_basket>
87
+ <tappz_catalog translate="title" module="tappz">
88
+ <title>Tappz Adapter Catalog API</title>
89
+ <model>tappz/catalog_api</model>
90
+ <methods>
91
+ <getFrontPage translate="title" module="tappz">
92
+ <title>Gets front page banner and product lists</title>
93
+ </getFrontPage>
94
+ <getCategories translate="title" module="tappz">
95
+ <title>Get root category list</title>
96
+ </getCategories>
97
+ <getCategory translate="title" module="tappz">
98
+ <title>Get a category with children</title>
99
+ </getCategory>
100
+ <getProductList translate="title" module="tappz">
101
+ <title>Get product list</title>
102
+ </getProductList>
103
+ <getProduct translate="title" module="tappz">
104
+ <title>Get product details</title>
105
+ </getProduct>
106
+ <getRelatedProducts translate="title" module="tappz">
107
+ <title>Get related products</title>
108
+ </getRelatedProducts>
109
+ <getChildProductId translate="title" module="tappz">
110
+ <title>Get child product id of a configurable product</title>
111
+ </getChildProductId>
112
+ </methods>
113
+ <faults module="tmoblabs_tappz">
114
+ <project_not_exists>
115
+ <code>101</code>
116
+ <message>Requested project does not exist.</message>
117
+ </project_not_exists>
118
+ <invalid_data>
119
+ <code>102</code>
120
+ <message>Provided data is invalid.</message>
121
+ </invalid_data>
122
+ <save_error>
123
+ <code>103</code>
124
+ <message>Error while saving project. Details in error message.</message>
125
+ </save_error>
126
+ <remove_error>
127
+ <code>104</code>
128
+ <message>Error while removing project. Details in error message.</message>
129
+ </remove_error>
130
+ </faults>
131
+ </tappz_catalog>
132
+ <tappz_customer>
133
+ <title>Tappz Adapter Customer API</title>
134
+ <model>tappz/customer_api</model>
135
+ <methods>
136
+ <info translate="title" module="tappz">
137
+ <title>Retrieve Customer</title>
138
+ </info>
139
+ <login translate="title" module="tappz">
140
+ <title>Login a Customer</title>
141
+ </login>
142
+ <facebookLogin translate="title" module="tappz">
143
+ <title>Login with Facebook</title>
144
+ </facebookLogin>
145
+ <register translate="title" module="tappz">
146
+ <title>Register a Customer</title>
147
+ </register>
148
+ <update translate="title" module="tappz">
149
+ <title>Update Customer Info</title>
150
+ </update>
151
+ <lostPassword translate="title" module="tappz">
152
+ <title>Send Password Reset E-mail</title>
153
+ </lostPassword>
154
+ <getUserAgreement translate="title" module="tappz">
155
+ <title>Retrieve User Agreement</title>
156
+ </getUserAgreement>
157
+ </methods>
158
+ <faults module="tappz">
159
+ <project_not_exists>
160
+ <code>101</code>
161
+ <message>Requested project does not exist.</message>
162
+ </project_not_exists>
163
+ <invalid_data>
164
+ <code>102</code>
165
+ <message>Provided data is invalid.</message>
166
+ </invalid_data>
167
+ <save_error>
168
+ <code>103</code>
169
+ <message>Error while saving project. Details in error message.</message>
170
+ </save_error>
171
+ <remove_error>
172
+ <code>104</code>
173
+ <message>Error while removing project. Details in error message.</message>
174
+ </remove_error>
175
+ </faults>
176
+ </tappz_customer>
177
+ <tappz_customer_address>
178
+ <title>Tappz Adapter Customer Address API</title>
179
+ <model>tappz/customer_address_api</model>
180
+ <methods>
181
+ <getList translate="title" module="tappz">
182
+ <title>Get Customer Address List</title>
183
+ </getList>
184
+ <create translate="title" module="tappz">
185
+ <title>Create Customer Address</title>
186
+ </create>
187
+ <update translate="title" module="tappz">
188
+ <title>Update Customer Address</title>
189
+ </update>
190
+ <delete translate="title" module="tappz">
191
+ <title>Delete Customer Address</title>
192
+ </delete>
193
+ <countryList translate="title" module="tappz">
194
+ <title>Get Country List</title>
195
+ </countryList>
196
+ <stateList translate="title" module="tappz">
197
+ <title>Get State List</title>
198
+ </stateList>
199
+ <cityList translate="title" module="tappz">
200
+ <title>Get City List</title>
201
+ </cityList>
202
+ <districtList translate="title" module="tappz">
203
+ <title>Get District List</title>
204
+ </districtList>
205
+ <townList translate="title" module="tappz">
206
+ <title>Get Town List</title>
207
+ </townList>
208
+ </methods>
209
+ <faults module="tappz">
210
+ <project_not_exists>
211
+ <code>101</code>
212
+ <message>Requested project does not exist.</message>
213
+ </project_not_exists>
214
+ <invalid_data>
215
+ <code>102</code>
216
+ <message>Provided data is invalid.</message>
217
+ </invalid_data>
218
+ <save_error>
219
+ <code>103</code>
220
+ <message>Error while saving project. Details in error message.</message>
221
+ </save_error>
222
+ <remove_error>
223
+ <code>104</code>
224
+ <message>Error while removing project. Details in error message.</message>
225
+ </remove_error>
226
+ </faults>
227
+ </tappz_customer_address>
228
+ <tappz_customer_order>
229
+ <title>Tappz Adapter Customer Order API</title>
230
+ <model>tappz/customer_order_api</model>
231
+ <methods>
232
+ <getList translate="title" module="tappz">
233
+ <title>Get Customer Order List</title>
234
+ </getList>
235
+ <info translate="title" module="tappz">
236
+ <title>Get Order Info</title>
237
+ </info>
238
+ </methods>
239
+ <faults module="tappz">
240
+ <project_not_exists>
241
+ <code>101</code>
242
+ <message>Requested project does not exist.</message>
243
+ </project_not_exists>
244
+ <invalid_data>
245
+ <code>102</code>
246
+ <message>Provided data is invalid.</message>
247
+ </invalid_data>
248
+ <save_error>
249
+ <code>103</code>
250
+ <message>Error while saving project. Details in error message.</message>
251
+ </save_error>
252
+ <remove_error>
253
+ <code>104</code>
254
+ <message>Error while removing project. Details in error message.</message>
255
+ </remove_error>
256
+ </faults>
257
+ </tappz_customer_order>
258
+ </resources>
259
+ <resources_alias>
260
+ <basket>tappz_basket</basket>
261
+ <catalog>tappz_catalog</catalog>
262
+ <customer>tappz_customer</customer>
263
+ <customer_address>tappz_customer_address</customer_address>
264
+ <customer_order>tappz_customer_order</customer_order>
265
+ </resources_alias>
266
+ <v2>
267
+ <resources_function_prefix>
268
+ <basket>tappzBasket</basket>
269
+ <catalog>tappzCatalog</catalog>
270
+ <customer>tappzCustomer</customer>
271
+ <customer_address>tappzCustomerAddress</customer_address>
272
+ <customer_order>tappzCustomerOrder</customer_order>
273
+ </resources_function_prefix>
274
+ </v2>
275
+ </api>
276
+ </config>
app/code/local/TmobLabs/Tappz/etc/config.xml ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" ?>
2
+ <config>
3
+ <modules>
4
+ <TmobLabs_Tappz>
5
+ <version>1.0.8</version>
6
+ </TmobLabs_Tappz>
7
+ </modules>
8
+ <global>
9
+ <helpers>
10
+ <tappz>
11
+ <class>TmobLabs_Tappz_Helper</class>
12
+ </tappz>
13
+ </helpers>
14
+ <blocks>
15
+ <tappz>
16
+ <class>TmobLabs_Tappz_Block</class>
17
+ </tappz>
18
+ </blocks>
19
+ <models>
20
+ <tappz>
21
+ <class>TmobLabs_Tappz_Model</class>
22
+ </tappz>
23
+ </models>
24
+ </global>
25
+ </config>
app/code/local/TmobLabs/Tappz/etc/system.xml ADDED
@@ -0,0 +1,644 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+
3
+ <config>
4
+ <tabs>
5
+ <tappz translate="label" module="tappz">
6
+ <label>t-Appz</label>
7
+ <sort_order>1</sort_order>
8
+ </tappz>
9
+ </tabs>
10
+ <sections>
11
+ <tappz translate="label" module="tappz">
12
+ <label>Configuration</label>
13
+ <class>tappz-info</class>
14
+ <tab>tappz</tab>
15
+ <sort_order>10</sort_order>
16
+ <show_in_default>1</show_in_default>
17
+ <show_in_website>1</show_in_website>
18
+ <show_in_store>1</show_in_store>
19
+ <groups>
20
+ <info>
21
+ <frontend_model>tappz/info</frontend_model>
22
+ <sort_order>10</sort_order>
23
+ <show_in_default>1</show_in_default>
24
+ <show_in_website>1</show_in_website>
25
+ <show_in_store>1</show_in_store>
26
+ </info>
27
+ <general translate="label">
28
+ <label>General</label>
29
+ <sort_order>15</sort_order>
30
+ <show_in_default>1</show_in_default>
31
+ <show_in_website>1</show_in_website>
32
+ <show_in_store>1</show_in_store>
33
+ <fields>
34
+ <store translate="label">
35
+ <label>Store</label>
36
+ <tooltip>Choose your store for tappz.</tooltip>
37
+ <!--<comment>lsdfdslafkhalsdkjfl</comment>-->
38
+ <frontend_type>select</frontend_type>
39
+ <source_model>tappz/system_config_store</source_model>
40
+ <sort_order>10</sort_order>
41
+ <show_in_default>1</show_in_default>
42
+ <show_in_website>1</show_in_website>
43
+ <show_in_store>1</show_in_store>
44
+ </store>
45
+ <groupSeparator translate="label">
46
+ <label>Price Group Separator</label>
47
+ <tooltip>Choose group separator for prices.</tooltip>
48
+ <frontend_type>select</frontend_type>
49
+ <source_model>tappz/system_config_divider</source_model>
50
+ <sort_order>30</sort_order>
51
+ <show_in_default>1</show_in_default>
52
+ <show_in_website>1</show_in_website>
53
+ <show_in_store>1</show_in_store>
54
+ </groupSeparator>
55
+ <decimalSeparator translate="label">
56
+ <label>Price Decimal Separator</label>
57
+ <tooltip>Choose decimal separator for prices.</tooltip>
58
+ <frontend_type>select</frontend_type>
59
+ <source_model>tappz/system_config_divider</source_model>
60
+ <sort_order>20</sort_order>
61
+ <show_in_default>1</show_in_default>
62
+ <show_in_website>1</show_in_website>
63
+ <show_in_store>1</show_in_store>
64
+ </decimalSeparator>
65
+ </fields>
66
+ </general>
67
+ <catalog translate="label">
68
+ <label>Catalog</label>
69
+ <sort_order>20</sort_order>
70
+ <show_in_default>1</show_in_default>
71
+ <show_in_website>1</show_in_website>
72
+ <show_in_store>1</show_in_store>
73
+ <fields>
74
+ <bannerImage1 translate="label tooltip">
75
+ <label>Banner 1 - Image</label>
76
+ <tooltip>Choose an image for the first banner.</tooltip>
77
+ <frontend_type>image</frontend_type>
78
+ <backend_model>adminhtml/system_config_backend_image</backend_model>
79
+ <upload_dir config="system/filesystem/media" scope_info="1">tappz</upload_dir>
80
+ <base_url type="media" scope_info="1">tappz</base_url>
81
+ <sort_order>10</sort_order>
82
+ <show_in_default>1</show_in_default>
83
+ <show_in_website>1</show_in_website>
84
+ <show_in_store>1</show_in_store>
85
+ </bannerImage1>
86
+ <bannerActionType1>
87
+ <label>Banner 1 - Action Type</label>
88
+ <tooltip>Choose an action type for the first banner.</tooltip>
89
+ <frontend_type>select</frontend_type>
90
+ <source_model>tappz/system_config_action</source_model>
91
+ <sort_order>11</sort_order>
92
+ <show_in_default>1</show_in_default>
93
+ <show_in_website>1</show_in_website>
94
+ <show_in_store>1</show_in_store>
95
+ </bannerActionType1>
96
+ <bannerActionValue1>
97
+ <label>Banner 1 - Action Value</label>
98
+ <tooltip>Choose an action value for the first banner.</tooltip>
99
+ <frontend_type>text</frontend_type>
100
+ <sort_order>12</sort_order>
101
+ <show_in_default>1</show_in_default>
102
+ <show_in_website>1</show_in_website>
103
+ <show_in_store>1</show_in_store>
104
+ <validate>validate-length
105
+ minimum-length-1
106
+ </validate>
107
+ </bannerActionValue1>
108
+
109
+ <bannerImage2 translate="label tooltip">
110
+ <label>Banner 2 - Image</label>
111
+ <tooltip>Choose an image for the second banner.</tooltip>
112
+ <frontend_type>image</frontend_type>
113
+ <backend_model>adminhtml/system_config_backend_image</backend_model>
114
+ <upload_dir config="system/filesystem/media" scope_info="1">tappz</upload_dir>
115
+ <base_url type="media" scope_info="1">tappz</base_url>
116
+ <sort_order>20</sort_order>
117
+ <show_in_default>1</show_in_default>
118
+ <show_in_website>1</show_in_website>
119
+ <show_in_store>1</show_in_store>
120
+ </bannerImage2>
121
+ <bannerActionType2>
122
+ <label>Banner 2 - Action Type</label>
123
+ <tooltip>Choose an action type for the second banner.</tooltip>
124
+ <frontend_type>select</frontend_type>
125
+ <source_model>tappz/system_config_action</source_model>
126
+ <sort_order>21</sort_order>
127
+ <show_in_default>1</show_in_default>
128
+ <show_in_website>1</show_in_website>
129
+ <show_in_store>1</show_in_store>
130
+ </bannerActionType2>
131
+ <bannerActionValue2>
132
+ <label>Banner 2 - Action Value</label>
133
+ <tooltip>Choose an action value for the second banner.</tooltip>
134
+ <frontend_type>text</frontend_type>
135
+ <sort_order>22</sort_order>
136
+ <show_in_default>1</show_in_default>
137
+ <show_in_website>1</show_in_website>
138
+ <show_in_store>1</show_in_store>
139
+ <validate>validate-length
140
+ minimum-length-1
141
+ </validate>
142
+ </bannerActionValue2>
143
+
144
+ <bannerImage3 translate="label tooltip">
145
+ <label>Banner 3 - Image</label>
146
+ <tooltip>Choose an image for the third banner.</tooltip>
147
+ <frontend_type>image</frontend_type>
148
+ <backend_model>adminhtml/system_config_backend_image</backend_model>
149
+ <upload_dir config="system/filesystem/media" scope_info="1">tappz</upload_dir>
150
+ <base_url type="media" scope_info="1">tappz</base_url>
151
+ <sort_order>30</sort_order>
152
+ <show_in_default>1</show_in_default>
153
+ <show_in_website>1</show_in_website>
154
+ <show_in_store>1</show_in_store>
155
+ </bannerImage3>
156
+ <bannerActionType3>
157
+ <label>Banner 3 - Action Type</label>
158
+ <tooltip>Choose an action type for the third banner.</tooltip>
159
+ <frontend_type>select</frontend_type>
160
+ <source_model>tappz/system_config_action</source_model>
161
+ <sort_order>31</sort_order>
162
+ <show_in_default>1</show_in_default>
163
+ <show_in_website>1</show_in_website>
164
+ <show_in_store>1</show_in_store>
165
+ </bannerActionType3>
166
+ <bannerActionValue3>
167
+ <label>Banner 3 - Action Value</label>
168
+ <tooltip>Choose an action value for the third banner.</tooltip>
169
+ <frontend_type>text</frontend_type>
170
+ <sort_order>32</sort_order>
171
+ <show_in_default>1</show_in_default>
172
+ <show_in_website>1</show_in_website>
173
+ <show_in_store>1</show_in_store>
174
+ <validate>validate-length
175
+ minimum-length-1
176
+ </validate>
177
+ </bannerActionValue3>
178
+
179
+ <bannerImage4 translate="label tooltip">
180
+ <label>Banner 4 - Image</label>
181
+ <tooltip>Choose an image for the fourth banner.</tooltip>
182
+ <frontend_type>image</frontend_type>
183
+ <backend_model>adminhtml/system_config_backend_image</backend_model>
184
+ <upload_dir config="system/filesystem/media" scope_info="1">tappz</upload_dir>
185
+ <base_url type="media" scope_info="1">tappz</base_url>
186
+ <sort_order>40</sort_order>
187
+ <show_in_default>1</show_in_default>
188
+ <show_in_website>1</show_in_website>
189
+ <show_in_store>1</show_in_store>
190
+ </bannerImage4>
191
+ <bannerActionType4>
192
+ <label>Banner 4 - Action Type</label>
193
+ <tooltip>Choose an action type for the fourth banner.</tooltip>
194
+ <frontend_type>select</frontend_type>
195
+ <source_model>tappz/system_config_action</source_model>
196
+ <sort_order>41</sort_order>
197
+ <show_in_default>1</show_in_default>
198
+ <show_in_website>1</show_in_website>
199
+ <show_in_store>1</show_in_store>
200
+ </bannerActionType4>
201
+ <bannerActionValue4>
202
+ <label>Banner 4 - Action Value</label>
203
+ <tooltip>Choose an action value for the fourth banner.</tooltip>
204
+ <frontend_type>text</frontend_type>
205
+ <sort_order>42</sort_order>
206
+ <show_in_default>1</show_in_default>
207
+ <show_in_website>1</show_in_website>
208
+ <show_in_store>1</show_in_store>
209
+ <validate>validate-length
210
+ minimum-length-1
211
+ </validate>
212
+ </bannerActionValue4>
213
+
214
+ <catalog1 translate="label tooltip">
215
+ <label>Front Page - Product List 1</label>
216
+ <tooltip>Choose a category for the first front page rayon.</tooltip>
217
+ <frontend_type>select</frontend_type>
218
+ <source_model>tappz/system_config_category</source_model>
219
+ <sort_order>50</sort_order>
220
+ <show_in_default>1</show_in_default>
221
+ <show_in_website>1</show_in_website>
222
+ <show_in_store>1</show_in_store>
223
+ <!--<validate>validate-alphanum validate-length-->
224
+ <!--minimum-length-20 maximum-length-20-->
225
+ <!--</validate>-->
226
+ </catalog1>
227
+ <catalog2 translate="label tooltip">
228
+ <label>Front Page - Product List 2</label>
229
+ <tooltip>Choose a category for the second front page rayon.</tooltip>
230
+ <frontend_type>select</frontend_type>
231
+ <source_model>tappz/system_config_category</source_model>
232
+ <sort_order>60</sort_order>
233
+ <show_in_default>1</show_in_default>
234
+ <show_in_website>1</show_in_website>
235
+ <show_in_store>1</show_in_store>
236
+ </catalog2>
237
+ <catalog3 translate="label tooltip">
238
+ <label>Front Page - Product List 3</label>
239
+ <tooltip>Choose a category for the third front page rayon.</tooltip>
240
+ <frontend_type>select</frontend_type>
241
+ <source_model>tappz/system_config_category</source_model>
242
+ <sort_order>70</sort_order>
243
+ <show_in_default>1</show_in_default>
244
+ <show_in_website>1</show_in_website>
245
+ <show_in_store>1</show_in_store>
246
+ </catalog3>
247
+ <catalog4 translate="label tooltip">
248
+ <label>Front Page - Product List 4</label>
249
+ <tooltip>Choose a category for the fourth front page rayon.</tooltip>
250
+ <frontend_type>select</frontend_type>
251
+ <source_model>tappz/system_config_category</source_model>
252
+ <sort_order>80</sort_order>
253
+ <show_in_default>1</show_in_default>
254
+ <show_in_website>1</show_in_website>
255
+ <show_in_store>1</show_in_store>
256
+ </catalog4>
257
+ <productAttributeCodeShippingInfo>
258
+ <label>Product Shipping Info Attribute</label>
259
+ <tooltip>Choose a product attribute for shipping info of a product.</tooltip>
260
+ <frontend_type>select</frontend_type>
261
+ <source_model>tappz/system_config_product_attribute</source_model>
262
+ <sort_order>90</sort_order>
263
+ <show_in_default>1</show_in_default>
264
+ <show_in_website>1</show_in_website>
265
+ <show_in_store>1</show_in_store>
266
+ </productAttributeCodeShippingInfo>
267
+ <productAttributeCodeIsShippingFree>
268
+ <label>Product Free Shipping Attribute</label>
269
+ <tooltip>Choose a product attribute for free shipping information.</tooltip>
270
+ <frontend_type>select</frontend_type>
271
+ <source_model>tappz/system_config_product_attribute</source_model>
272
+ <sort_order>100</sort_order>
273
+ <show_in_default>1</show_in_default>
274
+ <show_in_website>1</show_in_website>
275
+ <show_in_store>1</show_in_store>
276
+ </productAttributeCodeIsShippingFree>
277
+ </fields>
278
+ </catalog>
279
+ <customer translate="label">
280
+ <label>Customer</label>
281
+ <sort_order>30</sort_order>
282
+ <show_in_default>1</show_in_default>
283
+ <show_in_website>1</show_in_website>
284
+ <show_in_store>1</show_in_store>
285
+ <fields>
286
+ <gender>
287
+ <label>Gender Attribute</label>
288
+ <tooltip>Choose customer gender attribute.</tooltip>
289
+ <frontend_type>select</frontend_type>
290
+ <source_model>tappz/system_config_customer</source_model>
291
+ <sort_order>10</sort_order>
292
+ <show_in_default>1</show_in_default>
293
+ <show_in_website>1</show_in_website>
294
+ <show_in_store>1</show_in_store>
295
+ </gender>
296
+ <email>
297
+ <label>Email Attribute</label>
298
+ <tooltip>Choose customer email attribute.</tooltip>
299
+ <frontend_type>select</frontend_type>
300
+ <source_model>tappz/system_config_customer</source_model>
301
+ <sort_order>20</sort_order>
302
+ <show_in_default>1</show_in_default>
303
+ <show_in_website>1</show_in_website>
304
+ <show_in_store>1</show_in_store>
305
+ </email>
306
+ <phone>
307
+ <label>Phone Attribute</label>
308
+ <tooltip>Choose customer phone attribute.</tooltip>
309
+ <frontend_type>select</frontend_type>
310
+ <source_model>tappz/system_config_customer</source_model>
311
+ <sort_order>40</sort_order>
312
+ <show_in_default>1</show_in_default>
313
+ <show_in_website>1</show_in_website>
314
+ <show_in_store>1</show_in_store>
315
+ </phone>
316
+ <birthDate>
317
+ <label>Birth Date Attribute</label>
318
+ <tooltip>Choose customer birth date attribute.</tooltip>
319
+ <frontend_type>select</frontend_type>
320
+ <source_model>tappz/system_config_customer</source_model>
321
+ <sort_order>50</sort_order>
322
+ <show_in_default>1</show_in_default>
323
+ <show_in_website>1</show_in_website>
324
+ <show_in_store>1</show_in_store>
325
+ </birthDate>
326
+ <agreement>
327
+ <label>User Agreement</label>
328
+ <tooltip>Enter user agreement.</tooltip>
329
+ <frontend_type>textarea</frontend_type>
330
+ <sort_order>60</sort_order>
331
+ <show_in_default>1</show_in_default>
332
+ <show_in_website>1</show_in_website>
333
+ <show_in_store>1</show_in_store>
334
+ </agreement>
335
+ </fields>
336
+ </customer>
337
+ <address translate="label">
338
+ <label>Address</label>
339
+ <sort_order>40</sort_order>
340
+ <show_in_default>1</show_in_default>
341
+ <show_in_website>1</show_in_website>
342
+ <show_in_store>1</show_in_store>
343
+ <fields>
344
+ <name>
345
+ <label>Address Name Attribute</label>
346
+ <tooltip>Choose customer address name attribute.</tooltip>
347
+ <frontend_type>select</frontend_type>
348
+ <source_model>tappz/system_config_address</source_model>
349
+ <sort_order>10</sort_order>
350
+ <show_in_default>1</show_in_default>
351
+ <show_in_website>1</show_in_website>
352
+ <show_in_store>1</show_in_store>
353
+ </name>
354
+ <firstname>
355
+ <label>First Name Attribute</label>
356
+ <tooltip>Choose customer's first name attribute.</tooltip>
357
+ <frontend_type>select</frontend_type>
358
+ <source_model>tappz/system_config_address</source_model>
359
+ <sort_order>20</sort_order>
360
+ <show_in_default>1</show_in_default>
361
+ <show_in_website>1</show_in_website>
362
+ <show_in_store>1</show_in_store>
363
+ </firstname>
364
+ <lastname>
365
+ <label>Last Name Attribute</label>
366
+ <tooltip>Choose customer's last name attribute.</tooltip>
367
+ <frontend_type>select</frontend_type>
368
+ <source_model>tappz/system_config_address</source_model>
369
+ <sort_order>30</sort_order>
370
+ <show_in_default>1</show_in_default>
371
+ <show_in_website>1</show_in_website>
372
+ <show_in_store>1</show_in_store>
373
+ </lastname>
374
+ <email>
375
+ <label>E-mail Attribute</label>
376
+ <tooltip>Choose customer's e-mail attribute.</tooltip>
377
+ <frontend_type>select</frontend_type>
378
+ <source_model>tappz/system_config_address</source_model>
379
+ <sort_order>40</sort_order>
380
+ <show_in_default>1</show_in_default>
381
+ <show_in_website>1</show_in_website>
382
+ <show_in_store>1</show_in_store>
383
+ </email>
384
+ <street>
385
+ <label>Street Attribute</label>
386
+ <tooltip>Choose street attribute.</tooltip>
387
+ <frontend_type>select</frontend_type>
388
+ <source_model>tappz/system_config_address</source_model>
389
+ <sort_order>50</sort_order>
390
+ <show_in_default>1</show_in_default>
391
+ <show_in_website>1</show_in_website>
392
+ <show_in_store>1</show_in_store>
393
+ </street>
394
+ <country_id>
395
+ <label>Country Attribute</label>
396
+ <tooltip>Choose country attribute.</tooltip>
397
+ <frontend_type>select</frontend_type>
398
+ <source_model>tappz/system_config_address</source_model>
399
+ <sort_order>60</sort_order>
400
+ <show_in_default>1</show_in_default>
401
+ <show_in_website>1</show_in_website>
402
+ <show_in_store>1</show_in_store>
403
+ </country_id>
404
+ <region>
405
+ <label>State/Province Attribute</label>
406
+ <tooltip>Choose state-province attribute.</tooltip>
407
+ <frontend_type>select</frontend_type>
408
+ <source_model>tappz/system_config_address</source_model>
409
+ <sort_order>70</sort_order>
410
+ <show_in_default>1</show_in_default>
411
+ <show_in_website>1</show_in_website>
412
+ <show_in_store>1</show_in_store>
413
+ </region>
414
+ <region_id>
415
+ <label>State/Province Id Attribute</label>
416
+ <tooltip>Choose state-province Id attribute.</tooltip>
417
+ <frontend_type>select</frontend_type>
418
+ <source_model>tappz/system_config_address</source_model>
419
+ <sort_order>80</sort_order>
420
+ <show_in_default>1</show_in_default>
421
+ <show_in_website>1</show_in_website>
422
+ <show_in_store>1</show_in_store>
423
+ </region_id>
424
+ <city>
425
+ <label>City Attribute</label>
426
+ <tooltip>Choose city attribute.</tooltip>
427
+ <frontend_type>select</frontend_type>
428
+ <source_model>tappz/system_config_address</source_model>
429
+ <sort_order>90</sort_order>
430
+ <show_in_default>1</show_in_default>
431
+ <show_in_website>1</show_in_website>
432
+ <show_in_store>1</show_in_store>
433
+ </city>
434
+ <city_id>
435
+ <label>City Id Attribute</label>
436
+ <tooltip>Choose city id attribute.</tooltip>
437
+ <frontend_type>select</frontend_type>
438
+ <source_model>tappz/system_config_address</source_model>
439
+ <sort_order>100</sort_order>
440
+ <show_in_default>1</show_in_default>
441
+ <show_in_website>1</show_in_website>
442
+ <show_in_store>1</show_in_store>
443
+ </city_id>
444
+ <district>
445
+ <label>District Attribute</label>
446
+ <tooltip>Choose district attribute.</tooltip>
447
+ <frontend_type>select</frontend_type>
448
+ <source_model>tappz/system_config_address</source_model>
449
+ <sort_order>110</sort_order>
450
+ <show_in_default>1</show_in_default>
451
+ <show_in_website>1</show_in_website>
452
+ <show_in_store>1</show_in_store>
453
+ </district>
454
+ <district_id>
455
+ <label>District Id Attribute</label>
456
+ <tooltip>Choose district id attribute.</tooltip>
457
+ <frontend_type>select</frontend_type>
458
+ <source_model>tappz/system_config_address</source_model>
459
+ <sort_order>120</sort_order>
460
+ <show_in_default>1</show_in_default>
461
+ <show_in_website>1</show_in_website>
462
+ <show_in_store>1</show_in_store>
463
+ </district_id>
464
+ <town>
465
+ <label>Town Attribute</label>
466
+ <tooltip>Choose town attribute.</tooltip>
467
+ <frontend_type>select</frontend_type>
468
+ <source_model>tappz/system_config_address</source_model>
469
+ <sort_order>130</sort_order>
470
+ <show_in_default>1</show_in_default>
471
+ <show_in_website>1</show_in_website>
472
+ <show_in_store>1</show_in_store>
473
+ </town>
474
+ <town_id>
475
+ <label>Town Id Attribute</label>
476
+ <tooltip>Choose town id attribute.</tooltip>
477
+ <frontend_type>select</frontend_type>
478
+ <source_model>tappz/system_config_address</source_model>
479
+ <sort_order>140</sort_order>
480
+ <show_in_default>1</show_in_default>
481
+ <show_in_website>1</show_in_website>
482
+ <show_in_store>1</show_in_store>
483
+ </town_id>
484
+ <isCompany>
485
+ <label>Is Company Attribute</label>
486
+ <tooltip>Choose if an address is a company address attribute.</tooltip>
487
+ <frontend_type>select</frontend_type>
488
+ <source_model>tappz/system_config_address</source_model>
489
+ <sort_order>150</sort_order>
490
+ <show_in_default>1</show_in_default>
491
+ <show_in_website>1</show_in_website>
492
+ <show_in_store>1</show_in_store>
493
+ </isCompany>
494
+ <company>
495
+ <label>Company Name Attribute</label>
496
+ <tooltip>Choose company name attribute.</tooltip>
497
+ <frontend_type>select</frontend_type>
498
+ <source_model>tappz/system_config_address</source_model>
499
+ <sort_order>160</sort_order>
500
+ <show_in_default>1</show_in_default>
501
+ <show_in_website>1</show_in_website>
502
+ <show_in_store>1</show_in_store>
503
+ </company>
504
+ <taxDepartment>
505
+ <label>Tax Department Attribute</label>
506
+ <tooltip>Choose tax department attribute.</tooltip>
507
+ <frontend_type>select</frontend_type>
508
+ <source_model>tappz/system_config_address</source_model>
509
+ <sort_order>170</sort_order>
510
+ <show_in_default>1</show_in_default>
511
+ <show_in_website>1</show_in_website>
512
+ <show_in_store>1</show_in_store>
513
+ </taxDepartment>
514
+ <vatNo>
515
+ <label>Tax No Attribute</label>
516
+ <tooltip>Choose tax no attribute.</tooltip>
517
+ <frontend_type>select</frontend_type>
518
+ <source_model>tappz/system_config_address</source_model>
519
+ <sort_order>180</sort_order>
520
+ <show_in_default>1</show_in_default>
521
+ <show_in_website>1</show_in_website>
522
+ <show_in_store>1</show_in_store>
523
+ </vatNo>
524
+ <phone>
525
+ <label>Phone Attribute</label>
526
+ <tooltip>Choose phone attribute.</tooltip>
527
+ <frontend_type>select</frontend_type>
528
+ <source_model>tappz/system_config_address</source_model>
529
+ <sort_order>190</sort_order>
530
+ <show_in_default>1</show_in_default>
531
+ <show_in_website>1</show_in_website>
532
+ <show_in_store>1</show_in_store>
533
+ </phone>
534
+ <idNo>
535
+ <label>Identity Number Attribute</label>
536
+ <tooltip>Choose identity number attribute.</tooltip>
537
+ <frontend_type>select</frontend_type>
538
+ <source_model>tappz/system_config_address</source_model>
539
+ <sort_order>200</sort_order>
540
+ <show_in_default>1</show_in_default>
541
+ <show_in_website>1</show_in_website>
542
+ <show_in_store>1</show_in_store>
543
+ </idNo>
544
+ <postcode>
545
+ <label>Postal Code Attribute</label>
546
+ <tooltip>Choose postal code or zipcode attribute.</tooltip>
547
+ <frontend_type>select</frontend_type>
548
+ <source_model>tappz/system_config_address</source_model>
549
+ <sort_order>210</sort_order>
550
+ <show_in_default>1</show_in_default>
551
+ <show_in_website>1</show_in_website>
552
+ <show_in_store>1</show_in_store>
553
+ </postcode>
554
+ </fields>
555
+ </address>
556
+ <basket translate="label">
557
+ <label>Basket</label>
558
+ <sort_order>50</sort_order>
559
+ <show_in_default>1</show_in_default>
560
+ <show_in_website>1</show_in_website>
561
+ <show_in_store>1</show_in_store>
562
+ <fields>
563
+ <averagedeliverydaysattributecode translate="label">
564
+ <label>Product Average Delivery Days Attribute</label>
565
+ <tooltip>Choose delivery time attribute for a product.</tooltip>
566
+ <frontend_type>select</frontend_type>
567
+ <source_model>tappz/system_config_product_attribute</source_model>
568
+ <sort_order>10</sort_order>
569
+ <show_in_default>1</show_in_default>
570
+ <show_in_website>1</show_in_website>
571
+ <show_in_store>1</show_in_store>
572
+ </averagedeliverydaysattributecode>
573
+ <creditcardpaymenttype>
574
+ <label>Credit Card Payment Type</label>
575
+ <tooltip>Choose credit card payment type.</tooltip>
576
+ <frontend_type>select</frontend_type>
577
+ <source_model>tappz/system_config_payment</source_model>
578
+ <sort_order>15</sort_order>
579
+ <show_in_default>1</show_in_default>
580
+ <show_in_website>1</show_in_website>
581
+ <show_in_store>1</show_in_store>
582
+ </creditcardpaymenttype>
583
+ <paypalissandbox translate="label">
584
+ <label>Paypal Sandbox</label>
585
+ <tooltip>Choose if paypal is on test.</tooltip>
586
+ <frontend_type>select</frontend_type>
587
+ <source_model>tappz/system_config_enabled</source_model>
588
+ <sort_order>20</sort_order>
589
+ <show_in_default>1</show_in_default>
590
+ <show_in_website>1</show_in_website>
591
+ <show_in_store>1</show_in_store>
592
+ </paypalissandbox>
593
+ <paypalclientid translate="label">
594
+ <label>Paypal Client Id</label>
595
+ <tooltip>Enter your paypal client id.</tooltip>
596
+ <frontend_type>text</frontend_type>
597
+ <sort_order>30</sort_order>
598
+ <show_in_default>1</show_in_default>
599
+ <show_in_website>1</show_in_website>
600
+ <show_in_store>1</show_in_store>
601
+ </paypalclientid>
602
+ <paypalSecret translate="label">
603
+ <label>Paypal Secret</label>
604
+ <tooltip>Enter your paypal secret.</tooltip>
605
+ <frontend_type>text</frontend_type>
606
+ <sort_order>40</sort_order>
607
+ <show_in_default>1</show_in_default>
608
+ <show_in_website>1</show_in_website>
609
+ <show_in_store>1</show_in_store>
610
+ </paypalSecret>
611
+ <stripeistest translate="label">
612
+ <label>Stripe Test</label>
613
+ <tooltip>Choose if stripe is on test.</tooltip>
614
+ <frontend_type>select</frontend_type>
615
+ <source_model>tappz/system_config_enabled</source_model>
616
+ <sort_order>50</sort_order>
617
+ <show_in_default>1</show_in_default>
618
+ <show_in_website>1</show_in_website>
619
+ <show_in_store>1</show_in_store>
620
+ </stripeistest>
621
+ <stripetestsecret translate="label">
622
+ <label>Stripe Test Secret</label>
623
+ <tooltip>Enter your stripe test secret.</tooltip>
624
+ <frontend_type>text</frontend_type>
625
+ <sort_order>60</sort_order>
626
+ <show_in_default>1</show_in_default>
627
+ <show_in_website>1</show_in_website>
628
+ <show_in_store>1</show_in_store>
629
+ </stripetestsecret>
630
+ <stripelivesecret translate="label">
631
+ <label>Stripe Live Secret</label>
632
+ <tooltip>Enter your stripe live secret.</tooltip>
633
+ <frontend_type>text</frontend_type>
634
+ <sort_order>70</sort_order>
635
+ <show_in_default>1</show_in_default>
636
+ <show_in_website>1</show_in_website>
637
+ <show_in_store>1</show_in_store>
638
+ </stripelivesecret>
639
+ </fields>
640
+ </basket>
641
+ </groups>
642
+ </tappz>
643
+ </sections>
644
+ </config>
app/code/local/TmobLabs/Tappz/etc/wsdl.xml ADDED
@@ -0,0 +1,1650 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <definitions xmlns:typens="urn:{{var wsdl.name}}" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
3
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
4
+ xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
5
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
6
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
7
+ name="{{var wsdl.name}}" targetNamespace="urn:{{var wsdl.name}}"
8
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9
+ xsi:schemaLocation="http://schemas.xmlsoap.org/wsdl/ ">
10
+ <types>
11
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:Magento">
12
+ <import namespace="http://schemas.xmlsoap.org/soap/encoding/"
13
+ schemaLocation="http://schemas.xmlsoap.org/soap/encoding/"/>
14
+
15
+
16
+ <complexType name="taksits">
17
+ <all>
18
+ <element name="bankOption" type="xsd:string"/>
19
+ <element name="totalPrice" type="xsd:string"/>
20
+ </all>
21
+ </complexType>
22
+
23
+ <complexType name="taksitList">
24
+ <complexContent>
25
+ <restriction base="soapenc:Array">
26
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:taksits[]"/>
27
+ </restriction>
28
+ </complexContent>
29
+ </complexType>
30
+
31
+ <complexType name="taksitServiceDetailsList">
32
+ <all>
33
+ <element name="bankName" type="xsd:string"/>
34
+ <element name="bankValues" type="typens:taksitList"/>
35
+ </all>
36
+ </complexType>
37
+
38
+ <complexType name="taksitServiceList">
39
+ <complexContent>
40
+ <restriction base="soapenc:Array">
41
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:taksitServiceDetailsList[]"/>
42
+ </restriction>
43
+ </complexContent>
44
+ </complexType>
45
+
46
+ <complexType name="taksitDets">
47
+ <all>
48
+ <element name="purchaseOptions" type="typens:taksitServiceList"/>
49
+ </all>
50
+ </complexType>
51
+
52
+ <complexType name="basketContract">
53
+ <all>
54
+ <element name="termOfUse" type="xsd:string"/>
55
+ <element name="salesContact" type="xsd:string"/>
56
+ </all>
57
+ </complexType>
58
+
59
+ <complexType name="creditCardInfo">
60
+ <all>
61
+ <element name="owner" type="xsd:string"/>
62
+ <element name="number" type="xsd:string"/>
63
+ <element name="month" type="xsd:string"/>
64
+ <element name="year" type="xsd:string"/>
65
+ <element name="cvv" type="xsd:string"/>
66
+ <element name="type" type="xsd:string"/>
67
+ </all>
68
+ </complexType>
69
+
70
+ <complexType name="basketUpdate">
71
+ <all>
72
+ <element name="productId" type="xsd:string"/>
73
+ <element name="qty" type="xsd:string"/>
74
+ </all>
75
+ </complexType>
76
+
77
+ <complexType name="basketUpdateList">
78
+ <complexContent>
79
+ <restriction base="soapenc:Array">
80
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:basketUpdate[]"/>
81
+ </restriction>
82
+ </complexContent>
83
+ </complexType>
84
+
85
+ <complexType name="installment">
86
+ <all>
87
+ <element name="installmentNumber" type="xsd:string"/>
88
+ <element name="installmentPayment" type="xsd:string"/>
89
+ <element name="total" type="xsd:string"/>
90
+ </all>
91
+ </complexType>
92
+
93
+ <complexType name="installmentList">
94
+ <complexContent>
95
+ <restriction base="soapenc:Array">
96
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:installment[]"/>
97
+ </restriction>
98
+ </complexContent>
99
+ </complexType>
100
+
101
+ <complexType name="creditCard">
102
+ <all>
103
+ <element name="image" type="xsd:string"/>
104
+ <element name="displayName" type="xsd:string"/>
105
+ <element name="type" type="xsd:string"/>
106
+ <element name="installmentNumber" type="xsd:string"/>
107
+ <element name="installments" type="typens:installmentList"/>
108
+ </all>
109
+ </complexType>
110
+
111
+ <complexType name="creditCardList">
112
+ <complexContent>
113
+ <restriction base="soapenc:Array">
114
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:creditCard[]"/>
115
+ </restriction>
116
+ </complexContent>
117
+ </complexType>
118
+
119
+ <complexType name="moneyTransfer">
120
+ <all>
121
+ <element name="id" type="xsd:string"/>
122
+ <element name="displayName" type="xsd:string"/>
123
+ <element name="code" type="xsd:string"/>
124
+ <element name="branch" type="xsd:string"/>
125
+ <element name="accountNumber" type="xsd:string"/>
126
+ <element name="iban" type="xsd:string"/>
127
+ <element name="imageUrl" type="xsd:string"/>
128
+ </all>
129
+ </complexType>
130
+
131
+ <complexType name="moneyTransferList">
132
+ <complexContent>
133
+ <restriction base="soapenc:Array">
134
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:moneyTransfer[]"/>
135
+ </restriction>
136
+ </complexContent>
137
+ </complexType>
138
+
139
+ <complexType name="paypal">
140
+ <all>
141
+ <element name="clientId" type="xsd:string"/>
142
+ <element name="displayName" type="xsd:string"/>
143
+ <element name="isSandbox" type="xsd:boolean"/>
144
+ </all>
145
+ </complexType>
146
+
147
+ <complexType name="paymentOptions">
148
+ <all>
149
+ <element name="creditCards" type="typens:creditCardList"/>
150
+ <element name="moneyTransfers" type="typens:moneyTransferList"/>
151
+ <element name="cashOnDelivery" type="typens:cashOnDelivery"/>
152
+ <element name="paypal" type="typens:paypal"/>
153
+ </all>
154
+ </complexType>
155
+
156
+ <complexType name="discount">
157
+ <all>
158
+ <element name="displayName" type="xsd:string"/>
159
+ <element name="discountTotal" type="xsd:string"/>
160
+ <element name="promoCode" type="xsd:string"/>
161
+ </all>
162
+ </complexType>
163
+
164
+ <complexType name="discountList">
165
+ <complexContent>
166
+ <restriction base="soapenc:Array">
167
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:discount[]"/>
168
+ </restriction>
169
+ </complexContent>
170
+ </complexType>
171
+
172
+ <complexType name="errorList">
173
+ <complexContent>
174
+ <restriction base="soapenc:Array">
175
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
176
+ </restriction>
177
+ </complexContent>
178
+ </complexType>
179
+
180
+ <complexType name="shippingMethodList">
181
+ <complexContent>
182
+ <restriction base="soapenc:Array">
183
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:shippingMethod[]"/>
184
+ </restriction>
185
+ </complexContent>
186
+ </complexType>
187
+
188
+ <complexType name="giftWrapping">
189
+ <all>
190
+ <element name="isSelected" type="xsd:boolean"/>
191
+ <element name="giftWrappingFee" type="xsd:string"/>
192
+ <element name="maxCharackter" type="xsd:string"/>
193
+ <element name="message" type="xsd:string"/>
194
+ </all>
195
+ </complexType>
196
+
197
+ <complexType name="basket">
198
+ <all>
199
+ <element name="id" type="xsd:string"/>
200
+ <element name="lines" type="typens:lineList"/>
201
+ <element name="currency" type="xsd:string"/>
202
+ <element name="discounts" type="typens:discountList"/>
203
+ <element name="delivery" type="typens:delivery"/>
204
+ <element name="payment" type="typens:payment"/>
205
+ <element name="itemsPriceTotal" type="xsd:string"/>
206
+ <element name="discountTotal" type="xsd:string"/>
207
+ <element name="subTotal" type="xsd:string"/>
208
+ <element name="beforeTaxTotal" type="xsd:string"/>
209
+ <element name="taxTotal" type="xsd:string"/>
210
+ <element name="shippingTotal" type="xsd:string"/>
211
+ <element name="total" type="xsd:string"/>
212
+ <element name="paymentOptions" type="typens:paymentOptions"/>
213
+ <element name="shippingMethods" type="typens:shippingMethodList"/>
214
+ <element name="errors" type="typens:errorList"/>
215
+ <element name="giftCheques" type="typens:giftChequeList"/>
216
+ <element name="spentGiftChequeTotal" type="xsd:string"/>
217
+ <element name="usedPoints" type="xsd:string"/>
218
+ <element name="usedPointsAmount" type="xsd:string"/>
219
+ <element name="rewardPoints" type="xsd:string"/>
220
+ <element name="paymentFee" type="xsd:string"/>
221
+ <element name="estimatedSupplyDate" type="xsd:string"/>
222
+ <element name="isGiftWrappingEnabled" type="xsd:boolean"/>
223
+ <element name="giftWrapping" type="typens:giftWrapping"/>
224
+ </all>
225
+ </complexType>
226
+
227
+ <complexType name="line">
228
+ <all>
229
+ <element name="productId" type="xsd:string"/>
230
+ <element name="product" type="typens:product"/>
231
+ <element name="quantity" type="xsd:string"/>
232
+ <element name="price" type="xsd:string"/>
233
+ <element name="priceTotal" type="xsd:string"/>
234
+ <element name="averageDeliveryDays" type="xsd:string"/>
235
+ <element name="variants" type="typens:groupList"/>
236
+ </all>
237
+ </complexType>
238
+
239
+ <complexType name="lineList">
240
+ <complexContent>
241
+ <restriction base="soapenc:Array">
242
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:line[]"/>
243
+ </restriction>
244
+ </complexContent>
245
+ </complexType>
246
+
247
+ <complexType name="shippingMethod">
248
+ <all>
249
+ <element name="id" type="xsd:string" minOccurs="0"/>
250
+ <element name="displayName" type="xsd:string" minOccurs="0"/>
251
+ <element name="trackingAddress" type="xsd:string" minOccurs="0"/>
252
+ <element name="price" type="xsd:string" minOccurs="0"/>
253
+ <element name="priceForYou" type="xsd:string" minOccurs="0"/>
254
+ <element name="shippingMethodType" type="xsd:string" minOccurs="0"/>
255
+ <element name="imageUrl" type="xsd:string" minOccurs="0"/>
256
+ </all>
257
+ </complexType>
258
+
259
+ <complexType name="delivery">
260
+ <all>
261
+ <element name="shippingAddress" type="typens:address" minOccurs="0"/>
262
+ <element name="billingAddress" type="typens:address" minOccurs="0"/>
263
+ <element name="shippingMethod" type="typens:shippingMethod" minOccurs="0"/>
264
+ </all>
265
+ </complexType>
266
+
267
+ <complexType name="cashOnDelivery">
268
+ <all>
269
+ <element name="type" type="xsd:string" minOccurs="0"/>
270
+ <element name="displayName" type="xsd:string" minOccurs="0"/>
271
+ <element name="additionalFee" type="xsd:string" minOccurs="0"/>
272
+ <element name="description" type="xsd:string" minOccurs="0"/>
273
+ <element name="isSMSVerification" type="xsd:boolean" minOccurs="0"/>
274
+ <element name="SMSCode" type="xsd:string" minOccurs="0"/>
275
+ <element name="PhoneNumber" type="xsd:string" minOccurs="0"/>
276
+ </all>
277
+ </complexType>
278
+
279
+ <complexType name="payment">
280
+ <all>
281
+ <element name="methodType" type="xsd:string" minOccurs="0"/>
282
+ <element name="type" type="xsd:string" minOccurs="0"/>
283
+ <element name="displayName" type="xsd:string" minOccurs="0"/>
284
+ <element name="bankCode" type="xsd:string" minOccurs="0"/>
285
+ <element name="installment" type="xsd:string" minOccurs="0"/>
286
+ <element name="accountNumber" type="xsd:string" minOccurs="0"/>
287
+ <element name="branch" type="xsd:string" minOccurs="0"/>
288
+ <element name="iban" type="xsd:string" minOccurs="0"/>
289
+ <element name="cashOnDelivery" type="typens:cashOnDelivery" minOccurs="0"/>
290
+ <element name="creditCard" type="typens:creditCardInfo"/>
291
+ </all>
292
+ </complexType>
293
+
294
+ <complexType name="order">
295
+ <all>
296
+ <element name="id" type="xsd:string" minOccurs="0"/>
297
+ <element name="orderDate" type="xsd:string" minOccurs="0"/>
298
+ <element name="shippingStatus" type="xsd:string" minOccurs="0"/>
299
+ <element name="paymentStatus" type="xsd:string" minOccurs="0"/>
300
+ <element name="ipAddress" type="xsd:string" minOccurs="0"/>
301
+ <element name="itemsPriceTotal" type="xsd:string" minOccurs="0"/>
302
+ <element name="discountTotal" type="xsd:string" minOccurs="0"/>
303
+ <element name="subTotal" type="xsd:string" minOccurs="0"/>
304
+ <element name="shippingTotal" type="xsd:string" minOccurs="0"/>
305
+ <element name="total" type="xsd:string" minOccurs="0"/>
306
+ <element name="delivery" type="typens:delivery" minOccurs="0"/>
307
+ <element name="payment" type="typens:payment" minOccurs="0"/>
308
+ <element name="lines" type="typens:lineList" minOccurs="0"/>
309
+ <element name="currency" type="string"/>
310
+ </all>
311
+ </complexType>
312
+
313
+ <complexType name="orderList">
314
+ <complexContent>
315
+ <restriction base="soapenc:Array">
316
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:order[]"/>
317
+ </restriction>
318
+ </complexContent>
319
+ </complexType>
320
+
321
+ <complexType name="location">
322
+ <all>
323
+ <element name="code" type="xsd:string"/>
324
+ <element name="name" type="xsd:string"/>
325
+ </all>
326
+ </complexType>
327
+
328
+ <complexType name="locationList">
329
+ <complexContent>
330
+ <restriction base="soapenc:Array">
331
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:location[]"/>
332
+ </restriction>
333
+ </complexContent>
334
+ </complexType>
335
+
336
+ <complexType name="giftCheque">
337
+ <all>
338
+ <element name="chequeNumber" type="xsd:string"/>
339
+ <element name="expireDate" type="xsd:string"/>
340
+ <element name="amount" type="xsd:string"/>
341
+ <element name="code" type="xsd:string"/>
342
+ <element name="status" type="xsd:string"/>
343
+ <element name="type" type="xsd:string"/>
344
+ <element name="activationDate" type="xsd:string"/>
345
+ <element name="legalText" type="xsd:string"/>
346
+ </all>
347
+ </complexType>
348
+
349
+ <complexType name="giftChequeList">
350
+ <complexContent>
351
+ <restriction base="soapenc:Array">
352
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:giftCheque[]"/>
353
+ </restriction>
354
+ </complexContent>
355
+ </complexType>
356
+
357
+ <complexType name="address">
358
+ <all>
359
+ <element name="id" type="xsd:string"/>
360
+ <element name="addressName" type="xsd:string"/>
361
+ <element name="name" type="xsd:string"/>
362
+ <element name="surname" type="xsd:string"/>
363
+ <element name="email" type="xsd:string"/>
364
+ <element name="addressLine" type="xsd:string"/>
365
+ <element name="country" type="xsd:string"/>
366
+ <element name="countryCode" type="xsd:string"/>
367
+ <element name="state" type="xsd:string"/>
368
+ <element name="stateCode" type="xsd:string"/>
369
+ <element name="city" type="xsd:string"/>
370
+ <element name="cityCode" type="xsd:string"/>
371
+ <element name="district" type="xsd:string"/>
372
+ <element name="districtCode" type="xsd:string"/>
373
+ <element name="town" type="xsd:string"/>
374
+ <element name="townCode" type="xsd:string"/>
375
+ <element name="corporate" type="xsd:string"/>
376
+ <element name="companyTitle" type="xsd:string"/>
377
+ <element name="taxDepartment" type="xsd:string"/>
378
+ <element name="taxNo" type="xsd:string"/>
379
+ <element name="phoneNumber" type="xsd:string"/>
380
+ <element name="identityNo" type="xsd:string"/>
381
+ <element name="zipCode" type="xsd:string"/>
382
+ </all>
383
+ </complexType>
384
+
385
+ <complexType name="addressList">
386
+ <complexContent>
387
+ <restriction base="soapenc:Array">
388
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:address[]"/>
389
+ </restriction>
390
+ </complexContent>
391
+ </complexType>
392
+
393
+ <complexType name="customer">
394
+ <all>
395
+ <element name="customerId" type="xsd:string"/>
396
+ <element name="fullName" type="xsd:string"/>
397
+ <element name="firstName" type="xsd:string"/>
398
+ <element name="lastName" type="xsd:string"/>
399
+ <element name="gender" type="xsd:string"/>
400
+ <element name="isSubscribed" type="xsd:boolean"/>
401
+ <element name="isAccepted" type="xsd:boolean"/>
402
+ <element name="email" type="xsd:string"/>
403
+ <element name="password" type="xsd:string"/>
404
+ <element name="phone" type="xsd:string"/>
405
+ <element name="birthDate" type="xsd:string"/>
406
+ <element name="points" type="xsd:integer"/>
407
+ <element name="addresses" type="typens:addressList"/>
408
+ <element name="giftCheques" type="typens:giftChequeList"/>
409
+ </all>
410
+ </complexType>
411
+
412
+ <complexType name="pictures">
413
+ <all>
414
+ <element name="url" type="xsd:string"/>
415
+ </all>
416
+ </complexType>
417
+
418
+ <complexType name="pictureList">
419
+ <complexContent>
420
+ <restriction base="soapenc:Array">
421
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:pictures[]"/>
422
+ </restriction>
423
+ </complexContent>
424
+ </complexType>
425
+
426
+ <complexType name="feature">
427
+ <all>
428
+ <element name="id" type="xsd:string"/>
429
+ <element name="name" type="xsd:string"/>
430
+ </all>
431
+ </complexType>
432
+
433
+ <complexType name="featureList">
434
+ <complexContent>
435
+ <restriction base="soapenc:Array">
436
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:feature[]"/>
437
+ </restriction>
438
+ </complexContent>
439
+ </complexType>
440
+
441
+ <complexType name="group">
442
+ <all>
443
+ <element name="id" type="xsd:string"/>
444
+ <element name="name" type="xsd:string"/>
445
+ <element name="selected" type="xsd:string"/>
446
+ <element name="values" type="typens:featureList"/>
447
+ </all>
448
+ </complexType>
449
+
450
+ <complexType name="groupList">
451
+ <complexContent>
452
+ <restriction base="soapenc:Array">
453
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:group[]"/>
454
+ </restriction>
455
+ </complexContent>
456
+ </complexType>
457
+
458
+ <complexType name="price">
459
+ <all>
460
+ <element name="amount" type="xsd:double"/>
461
+ <element name="amountDefaultCurrency" type="xsd:string"/>
462
+ <element name="currency" type="xsd:string"/>
463
+ </all>
464
+ </complexType>
465
+
466
+ <complexType name="product">
467
+ <all>
468
+ <element name="id" type="xsd:string"/>
469
+ <element name="inStock" type="xsd:boolean"/>
470
+ <element name="isShipmentFree" type="xsd:boolean"/>
471
+ <element name="listPrice" type="typens:price"/>
472
+ <element name="picture" type="xsd:string"/>
473
+ <element name="pictures" type="typens:pictureList"/>
474
+ <element name="productDetailUrl" type="xsd:string"/>
475
+ <element name="additionalDetail" type="xsd:string"/>
476
+ <element name="productName" type="xsd:string"/>
477
+ <element name="productUrl" type="xsd:string"/>
478
+ <element name="shipmentInformation" type="xsd:string"/>
479
+ <element name="strikeoutPrice" type="typens:price"/>
480
+ <element name="isCampaign" type="xsd:boolean"/>
481
+ <element name="headline" type="xsd:string"/>
482
+ <!--<element name="feature" type="typens:groupList"/>-->
483
+ <element name="actions" type="typens:featureList"/>
484
+ <!--<element name="creditCardInstallments" type="typens:featureList"/>-->
485
+ <element name="variants" type="typens:groupList"/>
486
+ </all>
487
+ </complexType>
488
+
489
+ <complexType name="productList">
490
+ <complexContent>
491
+ <restriction base="soapenc:Array">
492
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:product[]"/>
493
+ </restriction>
494
+ </complexContent>
495
+ </complexType>
496
+
497
+ <complexType name="searchResult">
498
+ <all>
499
+ <element name="total" type="xsd:integer"/>
500
+ <element name="filters" type="typens:groupList"/>
501
+ <element name="sortList" type="typens:featureList"/>
502
+ <element name="products" type="typens:productList"/>
503
+ </all>
504
+ </complexType>
505
+
506
+ <complexType name="productGroup">
507
+ <all>
508
+ <element name="partName" type="xsd:string"/>
509
+ <element name="products" type="typens:productList"/>
510
+ </all>
511
+ </complexType>
512
+
513
+ <complexType name="productGroupList">
514
+ <complexContent>
515
+ <restriction base="soapenc:Array">
516
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:productGroup[]"/>
517
+ </restriction>
518
+ </complexContent>
519
+ </complexType>
520
+
521
+ <complexType name="ad">
522
+ <all>
523
+ <element name="name" type="xsd:string"/>
524
+ <element name="image" type="xsd:string"/>
525
+ <element name="type" type="xsd:string"/>
526
+ <element name="value" type="xsd:string"/>
527
+ </all>
528
+ </complexType>
529
+
530
+ <complexType name="adList">
531
+ <complexContent>
532
+ <restriction base="soapenc:Array">
533
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:ad[]"/>
534
+ </restriction>
535
+ </complexContent>
536
+ </complexType>
537
+
538
+ <complexType name="frontPage">
539
+ <all>
540
+ <element name="ads" type="typens:adList"/>
541
+ <element name="groups" type="typens:productGroupList"/>
542
+ </all>
543
+ </complexType>
544
+
545
+ <complexType name="category">
546
+ <all>
547
+ <element name="id" type="xsd:string"/>
548
+ <element name="name" type="xsd:string"/>
549
+ <element name="isRoot" type="xsd:boolean"/>
550
+ <element name="isLeaf" type="xsd:boolean"/>
551
+ <element name="parentCategoryId" type="xsd:string"/>
552
+ <element name="children" type="typens:categoryList"/>
553
+ </all>
554
+ </complexType>
555
+
556
+ <complexType name="categoryList">
557
+ <complexContent>
558
+ <restriction base="soapenc:Array">
559
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:category[]"/>
560
+ </restriction>
561
+ </complexContent>
562
+ </complexType>
563
+
564
+ </schema>
565
+ </types>
566
+
567
+
568
+ <!--catalog -->
569
+ <message name="tappzCatalogGetFrontPageRequest">
570
+ <part name="sessionId" type="xsd:string"/>
571
+ </message>
572
+ <message name="tappzCatalogGetFrontPageResponse">
573
+ <part name="frontPage" type="typens:frontPage"/>
574
+ </message>
575
+
576
+ <message name="tappzCatalogGetCategoriesRequest">
577
+ <part name="sessionId" type="xsd:string"/>
578
+ </message>
579
+ <message name="tappzCatalogGetCategoriesResponse">
580
+ <part name="category" type="typens:categoryList"/>
581
+ </message>
582
+
583
+ <message name="tappzCatalogGetCategoryRequest">
584
+ <part name="sessionId" type="xsd:string"/>
585
+ <part name="categoryId" type="xsd:string"/>
586
+ </message>
587
+ <message name="tappzCatalogGetCategoryResponse">
588
+ <part name="category" type="typens:category"/>
589
+ </message>
590
+
591
+ <message name="tappzCatalogGetProductListRequest">
592
+ <part name="sessionId" type="xsd:string"/>
593
+ <part name="phrase" type="xsd:string"/>
594
+ <part name="categoryId" type="xsd:string"/>
595
+ <part name="pageNumber" type="xsd:integer"/>
596
+ <part name="pageSize" type="xsd:integer"/>
597
+ <part name="filterQuery" type="xsd:string"/>
598
+ <part name="sort" type="xsd:string"/>
599
+ </message>
600
+ <message name="tappzCatalogGetProductListResponse">
601
+ <part name="category" type="typens:searchResult"/>
602
+ </message>
603
+
604
+ <message name="tappzCatalogGetProductRequest">
605
+ <part name="sessionId" type="xsd:string"/>
606
+ <part name="productId" type="xsd:string"/>
607
+ </message>
608
+ <message name="tappzCatalogGetProductResponse">
609
+ <part name="product" type="typens:product"/>
610
+ </message>
611
+
612
+ <message name="tappzCatalogGetRelatedProductsRequest">
613
+ <part name="sessionId" type="xsd:string"/>
614
+ <part name="productId" type="xsd:string"/>
615
+ </message>
616
+ <message name="tappzCatalogGetRelatedProductsResponse">
617
+ <part name="productList" type="typens:productList"/>
618
+ </message>
619
+
620
+ <message name="tappzCatalogGetChildProductIdRequest">
621
+ <part name="sessionId" type="xsd:string"/>
622
+ <part name="parentProductId" type="xsd:string"/>
623
+ <part name="variant" type="typens:groupList"/>
624
+ </message>
625
+ <message name="tappzCatalogGetChildProductIdResponse">
626
+ <part name="childProductId" type="xsd:string"/>
627
+ </message>
628
+ <!--catalog -->
629
+
630
+ <!--customer-->
631
+ <message name="tappzCustomerInfoRequest">
632
+ <part name="sessionId" type="xsd:string"/>
633
+ <part name="customerId" type="xsd:string"/>
634
+ </message>
635
+ <message name="tappzCustomerInfoResponse">
636
+ <part name="customer" type="typens:customer"/>
637
+ </message>
638
+
639
+ <message name="tappzCustomerLoginRequest">
640
+ <part name="sessionId" type="xsd:string"/>
641
+ <part name="username" type="xsd:string"/>
642
+ <part name="password" type="xsd:string"/>
643
+ </message>
644
+ <message name="tappzCustomerLoginResponse">
645
+ <part name="customer" type="typens:customer"/>
646
+ </message>
647
+
648
+ <message name="tappzCustomerFacebookLoginRequest">
649
+ <part name="sessionId" type="xsd:string"/>
650
+ <part name="facebookAccessToken" type="xsd:string"/>
651
+ <part name="facebookUserId" type="xsd:string"/>
652
+ </message>
653
+ <message name="tappzCustomerFacebookLoginResponse">
654
+ <part name="customer" type="typens:customer"/>
655
+ </message>
656
+
657
+ <message name="tappzCustomerRegisterRequest">
658
+ <part name="sessionId" type="xsd:string"/>
659
+ <part name="customer" type="typens:customer"/>
660
+ </message>
661
+ <message name="tappzCustomerRegisterResponse">
662
+ <part name="customer" type="typens:customer"/>
663
+ </message>
664
+
665
+ <message name="tappzCustomerUpdateRequest">
666
+ <part name="sessionId" type="xsd:string"/>
667
+ <part name="customer" type="typens:customer"/>
668
+ </message>
669
+ <message name="tappzCustomerUpdateResponse">
670
+ <part name="customer" type="typens:customer"/>
671
+ </message>
672
+
673
+ <message name="tappzCustomerLostPasswordRequest">
674
+ <part name="sessionId" type="xsd:string"/>
675
+ <part name="email" type="xsd:string"/>
676
+ </message>
677
+ <message name="tappzCustomerLostPasswordResponse">
678
+ <part name="result" type="xsd:string"/>
679
+ </message>
680
+
681
+ <message name="tappzCustomerGetUserAgreementRequest">
682
+ <part name="sessionId" type="xsd:string"/>
683
+ </message>
684
+ <message name="tappzCustomerGetUserAgreementResponse">
685
+ <part name="agreement" type="xsd:string"/>
686
+ </message>
687
+ <!--customer-->
688
+
689
+ <!--customer_address-->
690
+ <message name="tappzCustomerAddressGetListRequest">
691
+ <part name="sessionId" type="xsd:string"/>
692
+ <part name="customerId" type="xsd:string"/>
693
+ </message>
694
+ <message name="tappzCustomerAddressGetListResponse">
695
+ <part name="list" type="typens:addressList"/>
696
+ </message>
697
+
698
+ <message name="tappzCustomerAddressCreateRequest">
699
+ <part name="sessionId" type="xsd:string"/>
700
+ <part name="customerId" type="xsd:string"/>
701
+ <part name="address" type="typens:address"/>
702
+ </message>
703
+ <message name="tappzCustomerAddressCreateResponse">
704
+ <part name="address" type="typens:address"/>
705
+ </message>
706
+
707
+ <message name="tappzCustomerAddressUpdateRequest">
708
+ <part name="sessionId" type="xsd:string"/>
709
+ <part name="address" type="typens:address"/>
710
+ </message>
711
+ <message name="tappzCustomerAddressUpdateResponse">
712
+ <part name="address" type="typens:address"/>
713
+ </message>
714
+
715
+ <message name="tappzCustomerAddressDeleteRequest">
716
+ <part name="sessionId" type="xsd:string"/>
717
+ <part name="address" type="typens:address"/>
718
+ </message>
719
+ <message name="tappzCustomerAddressDeleteResponse">
720
+ <part name="addressId" type="xsd:string"/>
721
+ </message>
722
+
723
+ <message name="tappzCustomerAddressCountryListRequest">
724
+ <part name="sessionId" type="xsd:string"/>
725
+ </message>
726
+ <message name="tappzCustomerAddressCountryListResponse">
727
+ <part name="list" type="typens:locationList"/>
728
+ </message>
729
+
730
+ <message name="tappzCustomerAddressStateListRequest">
731
+ <part name="sessionId" type="xsd:string"/>
732
+ <part name="countryCode" type="xsd:string"/>
733
+ </message>
734
+ <message name="tappzCustomerAddressStateListResponse">
735
+ <part name="list" type="typens:locationList"/>
736
+ </message>
737
+
738
+ <message name="tappzCustomerAddressCityListRequest">
739
+ <part name="sessionId" type="xsd:string"/>
740
+ <part name="stateCode" type="xsd:string"/>
741
+ </message>
742
+ <message name="tappzCustomerAddressCityListResponse">
743
+ <part name="list" type="typens:locationList"/>
744
+ </message>
745
+
746
+ <message name="tappzCustomerAddressDistrictListRequest">
747
+ <part name="sessionId" type="xsd:string"/>
748
+ <part name="districtCode" type="xsd:string"/>
749
+ </message>
750
+ <message name="tappzCustomerAddressDistrictListResponse">
751
+ <part name="list" type="typens:locationList"/>
752
+ </message>
753
+
754
+ <message name="tappzCustomerAddressTownListRequest">
755
+ <part name="sessionId" type="xsd:string"/>
756
+ <part name="districtCode" type="xsd:string"/>
757
+ </message>
758
+ <message name="tappzCustomerAddressTownListResponse">
759
+ <part name="list" type="typens:locationList"/>
760
+ </message>
761
+ <!--customer_address-->
762
+
763
+ <!--customer_order-->
764
+ <message name="tappzCustomerOrderGetListRequest">
765
+ <part name="sessionId" type="xsd:string"/>
766
+ <part name="customerId" type="xsd:string"/>
767
+ </message>
768
+ <message name="tappzCustomerOrderGetListResponse">
769
+ <part name="list" type="typens:orderList"/>
770
+ </message>
771
+
772
+ <message name="tappzCustomerOrderInfoRequest">
773
+ <part name="sessionId" type="xsd:string"/>
774
+ <part name="orderId" type="xsd:string"/>
775
+ </message>
776
+ <message name="tappzCustomerOrderInfoResponse">
777
+ <part name="order" type="typens:order"/>
778
+ </message>
779
+ <!--customer_order-->
780
+
781
+ <!--basket-->
782
+ <message name="tappzBasketGetRequest">
783
+ <part name="sessionId" type="xsd:string"/>
784
+ <part name="quoteId" type="xsd:string"/>
785
+ <part name="customerId" type="xsd:string"/>
786
+ </message>
787
+ <message name="tappzBasketGetResponse">
788
+ <part name="basket" type="typens:basket"/>
789
+ </message>
790
+
791
+ <message name="tappzBasketMergeRequest">
792
+ <part name="sessionId" type="xsd:string"/>
793
+ <part name="anonymousQuoteId" type="xsd:string"/>
794
+ <part name="customerId" type="xsd:string"/>
795
+ </message>
796
+ <message name="tappzBasketMergeResponse">
797
+ <part name="basket" type="typens:basket"/>
798
+ </message>
799
+
800
+ <message name="tappzBasketUpdateItemsRequest">
801
+ <part name="sessionId" type="xsd:string"/>
802
+ <part name="quoteId" type="xsd:string"/>
803
+ <part name="update" type="typens:basketUpdateList"/>
804
+ </message>
805
+ <message name="tappzBasketUpdateItemsResponse">
806
+ <part name="basket" type="typens:basket"/>
807
+ </message>
808
+
809
+ <message name="tappzBasketSetAddressRequest">
810
+ <part name="sessionId" type="xsd:string"/>
811
+ <part name="quoteId" type="xsd:string"/>
812
+ <part name="shippingAddressId" type="xsd:string"/>
813
+ <part name="billingAddressId" type="xsd:string"/>
814
+ <part name="shippingMethodId" type="xsd:string"/>
815
+ </message>
816
+ <message name="tappzBasketSetAddressResponse">
817
+ <part name="basket" type="typens:basket"/>
818
+ </message>
819
+
820
+ <message name="tappzBasketSetGiftWrappingRequest">
821
+ <part name="sessionId" type="xsd:string"/>
822
+ <part name="quoteId" type="xsd:string"/>
823
+ <part name="isSelected" type="xsd:boolean"/>
824
+ <part name="message" type="xsd:string"/>
825
+ </message>
826
+ <message name="tappzBasketSetGiftWrappingResponse">
827
+ <part name="basket" type="typens:basket"/>
828
+ </message>
829
+
830
+ <message name="tappzBasketUseDiscountRequest">
831
+ <part name="sessionId" type="xsd:string"/>
832
+ <part name="quoteId" type="xsd:string"/>
833
+ <part name="promoCode" type="xsd:string"/>
834
+ </message>
835
+ <message name="tappzBasketUseDiscountResponse">
836
+ <part name="basket" type="typens:basket"/>
837
+ </message>
838
+
839
+ <message name="tappzBasketDeleteDiscountRequest">
840
+ <part name="sessionId" type="xsd:string"/>
841
+ <part name="quoteId" type="xsd:string"/>
842
+ </message>
843
+ <message name="tappzBasketDeleteDiscountResponse">
844
+ <part name="basket" type="typens:basket"/>
845
+ </message>
846
+
847
+ <message name="tappzBasketUseGiftChequesRequest">
848
+ <part name="sessionId" type="xsd:string"/>
849
+ <part name="quoteId" type="xsd:string"/>
850
+ <part name="code" type="xsd:string"/>
851
+ </message>
852
+ <message name="tappzBasketUseGiftChequesResponse">
853
+ <part name="basket" type="typens:basket"/>
854
+ </message>
855
+
856
+ <message name="tappzBasketDeleteGiftChequesRequest">
857
+ <part name="sessionId" type="xsd:string"/>
858
+ <part name="quoteId" type="xsd:string"/>
859
+ </message>
860
+ <message name="tappzBasketDeleteGiftChequesResponse">
861
+ <part name="basket" type="typens:basket"/>
862
+ </message>
863
+
864
+ <message name="tappzBasketUseUserPointsRequest">
865
+ <part name="sessionId" type="xsd:string"/>
866
+ <part name="quoteId" type="xsd:string"/>
867
+ <part name="points" type="xsd:string"/>
868
+ </message>
869
+ <message name="tappzBasketUseUserPointsResponse">
870
+ <part name="basket" type="typens:basket"/>
871
+ </message>
872
+
873
+ <message name="tappzBasketSelectPaymentMethodRequest">
874
+ <part name="sessionId" type="xsd:string"/>
875
+ <part name="quoteId" type="xsd:string"/>
876
+ <part name="payment" type="typens:payment"/>
877
+ </message>
878
+ <message name="tappzBasketSelectPaymentMethodResponse">
879
+ <part name="basket" type="typens:basket"/>
880
+ </message>
881
+
882
+ <message name="tappzBasketGetContractRequest">
883
+ <part name="sessionId" type="xsd:string"/>
884
+ <part name="quoteId" type="xsd:string"/>
885
+ </message>
886
+ <message name="tappzBasketGetContractResponse">
887
+ <part name="contract" type="typens:basketContract"/>
888
+ </message>
889
+
890
+ <message name="tappzBasketPurchaseCreditCardRequest">
891
+ <part name="sessionId" type="xsd:string"/>
892
+ <part name="quoteId" type="xsd:string"/>
893
+ </message>
894
+ <message name="tappzBasketPurchaseCreditCardResponse">
895
+ <part name="order" type="typens:order"/>
896
+ </message>
897
+
898
+ <message name="tappzBasketPurchaseMoneyOrderRequest">
899
+ <part name="sessionId" type="xsd:string"/>
900
+ <part name="quoteId" type="xsd:string"/>
901
+ <part name="moneyOrderType" type="xsd:string"/>
902
+ </message>
903
+ <message name="tappzBasketPurchaseMoneyOrderResponse">
904
+ <part name="order" type="typens:order"/>
905
+ </message>
906
+
907
+ <message name="tappzBasketPurchaseCashOnDeliveryRequest">
908
+ <part name="sessionId" type="xsd:string"/>
909
+ <part name="quoteId" type="xsd:string"/>
910
+ <part name="cashOnDelivery" type="typens:cashOnDelivery"/>
911
+ </message>
912
+ <message name="tappzBasketPurchaseCashOnDeliveryResponse">
913
+ <part name="order" type="typens:order"/>
914
+ </message>
915
+
916
+ <message name="tappzBasketPurchaseWithPayPalRequest">
917
+ <part name="sessionId" type="xsd:string"/>
918
+ <part name="quoteId" type="xsd:string"/>
919
+ <part name="transactionId" type="xsd:string"/>
920
+ </message>
921
+ <message name="tappzBasketPurchaseWithPayPalResponse">
922
+ <part name="order" type="typens:order"/>
923
+ </message>
924
+
925
+ <message name="tappzBasketPurchaseWithApplePayRequest">
926
+ <part name="sessionId" type="xsd:string"/>
927
+ <part name="quoteId" type="xsd:string"/>
928
+ <part name="tokenId" type="xsd:string"/>
929
+ </message>
930
+ <message name="tappzBasketPurchaseWithApplePayResponse">
931
+ <part name="order" type="typens:order"/>
932
+ </message>
933
+ <!--basket-->
934
+
935
+ <portType name="{{var wsdl.handler}}PortType">
936
+
937
+ <!-- catalog -->
938
+ <operation name="tappzCatalogGetFrontPage">
939
+ <documentation>Get front page banner and product lists</documentation>
940
+ <input message="typens:tappzCatalogGetFrontPageRequest"/>
941
+ <output message="typens:tappzCatalogGetFrontPageResponse"/>
942
+ </operation>
943
+ <operation name="tappzCatalogGetCategories">
944
+ <documentation>Get root category list</documentation>
945
+ <input message="typens:tappzCatalogGetCategoriesRequest"/>
946
+ <output message="typens:tappzCatalogGetCategoriesResponse"/>
947
+ </operation>
948
+ <operation name="tappzCatalogGetCategory">
949
+ <documentation>Get a category with children</documentation>
950
+ <input message="typens:tappzCatalogGetCategoryRequest"/>
951
+ <output message="typens:tappzCatalogGetCategoryResponse"/>
952
+ </operation>
953
+ <operation name="tappzCatalogGetProductList">
954
+ <documentation>Get product list</documentation>
955
+ <input message="typens:tappzCatalogGetProductListRequest"/>
956
+ <output message="typens:tappzCatalogGetProductListResponse"/>
957
+ </operation>
958
+ <operation name="tappzCatalogGetProduct">
959
+ <documentation>Get product details</documentation>
960
+ <input message="typens:tappzCatalogGetProductRequest"/>
961
+ <output message="typens:tappzCatalogGetProductResponse"/>
962
+ </operation>
963
+ <operation name="tappzCatalogGetRelatedProducts">
964
+ <documentation>Get related products</documentation>
965
+ <input message="typens:tappzCatalogGetRelatedProductsRequest"/>
966
+ <output message="typens:tappzCatalogGetRelatedProductsResponse"/>
967
+ </operation>
968
+ <operation name="tappzCatalogGetChildProductId">
969
+ <documentation>Get related products</documentation>
970
+ <input message="typens:tappzCatalogGetChildProductIdRequest"/>
971
+ <output message="typens:tappzCatalogGetChildProductIdResponse"/>
972
+ </operation>
973
+ <!-- catalog -->
974
+
975
+ <!--customer-->
976
+ <operation name="tappzCustomerInfo">
977
+ <documentation>Retrieve customer info</documentation>
978
+ <input message="typens:tappzCustomerInfoRequest"/>
979
+ <output message="typens:tappzCustomerInfoResponse"/>
980
+ </operation>
981
+ <operation name="tappzCustomerLogin">
982
+ <documentation>Customer login</documentation>
983
+ <input message="typens:tappzCustomerLoginRequest"/>
984
+ <output message="typens:tappzCustomerLoginResponse"/>
985
+ </operation>
986
+ <operation name="tappzCustomerFacebookLogin">
987
+ <documentation>Login with Facebook</documentation>
988
+ <input message="typens:tappzCustomerFacebookLoginRequest"/>
989
+ <output message="typens:tappzCustomerFacebookLoginResponse"/>
990
+ </operation>
991
+ <operation name="tappzCustomerRegister">
992
+ <documentation>Customer registration</documentation>
993
+ <input message="typens:tappzCustomerRegisterRequest"/>
994
+ <output message="typens:tappzCustomerRegisterResponse"/>
995
+ </operation>
996
+ <operation name="tappzCustomerUpdate">
997
+ <documentation>Customer update</documentation>
998
+ <input message="typens:tappzCustomerUpdateRequest"/>
999
+ <output message="typens:tappzCustomerUpdateResponse"/>
1000
+ </operation>
1001
+ <operation name="tappzCustomerLostPassword">
1002
+ <documentation>Send lost password email</documentation>
1003
+ <input message="typens:tappzCustomerLostPasswordRequest"/>
1004
+ <output message="typens:tappzCustomerLostPasswordResponse"/>
1005
+ </operation>
1006
+ <operation name="tappzCustomerGetUserAgreement">
1007
+ <documentation>Retrieve User Agreement</documentation>
1008
+ <input message="typens:tappzCustomerGetUserAgreementRequest"/>
1009
+ <output message="typens:tappzCustomerGetUserAgreementResponse"/>
1010
+ </operation>
1011
+ <!--customer-->
1012
+
1013
+ <!--customer_address-->
1014
+ <operation name="tappzCustomerAddressGetList">
1015
+ <documentation>Retrieve User Agreement</documentation>
1016
+ <input message="typens:tappzCustomerAddressGetListRequest"/>
1017
+ <output message="typens:tappzCustomerAddressGetListResponse"/>
1018
+ </operation>
1019
+ <operation name="tappzCustomerAddressCreate">
1020
+ <documentation>Retrieve User Agreement</documentation>
1021
+ <input message="typens:tappzCustomerAddressCreateRequest"/>
1022
+ <output message="typens:tappzCustomerAddressCreateResponse"/>
1023
+ </operation>
1024
+ <operation name="tappzCustomerAddressUpdate">
1025
+ <documentation>Retrieve User Agreement</documentation>
1026
+ <input message="typens:tappzCustomerAddressUpdateRequest"/>
1027
+ <output message="typens:tappzCustomerAddressUpdateResponse"/>
1028
+ </operation>
1029
+ <operation name="tappzCustomerAddressDelete">
1030
+ <documentation>Retrieve User Agreement</documentation>
1031
+ <input message="typens:tappzCustomerAddressDeleteRequest"/>
1032
+ <output message="typens:tappzCustomerAddressDeleteResponse"/>
1033
+ </operation>
1034
+ <operation name="tappzCustomerAddressCountryList">
1035
+ <documentation>Retrieve User Agreement</documentation>
1036
+ <input message="typens:tappzCustomerAddressCountryListRequest"/>
1037
+ <output message="typens:tappzCustomerAddressCountryListResponse"/>
1038
+ </operation>
1039
+ <operation name="tappzCustomerAddressStateList">
1040
+ <documentation>Retrieve User Agreement</documentation>
1041
+ <input message="typens:tappzCustomerAddressStateListRequest"/>
1042
+ <output message="typens:tappzCustomerAddressStateListResponse"/>
1043
+ </operation>
1044
+ <operation name="tappzCustomerAddressCityList">
1045
+ <documentation>Retrieve User Agreement</documentation>
1046
+ <input message="typens:tappzCustomerAddressCityListRequest"/>
1047
+ <output message="typens:tappzCustomerAddressCityListResponse"/>
1048
+ </operation>
1049
+ <operation name="tappzCustomerAddressDistrictList">
1050
+ <documentation>Retrieve User Agreement</documentation>
1051
+ <input message="typens:tappzCustomerAddressDistrictListRequest"/>
1052
+ <output message="typens:tappzCustomerAddressDistrictListResponse"/>
1053
+ </operation>
1054
+ <operation name="tappzCustomerAddressTownList">
1055
+ <documentation>Retrieve User Agreement</documentation>
1056
+ <input message="typens:tappzCustomerAddressTownListRequest"/>
1057
+ <output message="typens:tappzCustomerAddressTownListResponse"/>
1058
+ </operation>
1059
+ <!--customer_address-->
1060
+
1061
+ <!--customer_order-->
1062
+ <operation name="tappzCustomerOrderGetList">
1063
+ <documentation>Retrieve User Agreement</documentation>
1064
+ <input message="typens:tappzCustomerOrderGetListRequest"/>
1065
+ <output message="typens:tappzCustomerOrderGetListResponse"/>
1066
+ </operation>
1067
+ <operation name="tappzCustomerOrderInfo">
1068
+ <documentation>Retrieve User Agreement</documentation>
1069
+ <input message="typens:tappzCustomerOrderInfoRequest"/>
1070
+ <output message="typens:tappzCustomerOrderInfoResponse"/>
1071
+ </operation>
1072
+ <!--customer_order-->
1073
+
1074
+ <!--basket-->
1075
+ <operation name="tappzBasketGet">
1076
+ <documentation>Get a basket</documentation>
1077
+ <input message="typens:tappzBasketGetRequest"/>
1078
+ <output message="typens:tappzBasketGetResponse"/>
1079
+ </operation>
1080
+ <operation name="tappzBasketMerge">
1081
+ <documentation>Retrieve User Agreement</documentation>
1082
+ <input message="typens:tappzBasketMergeRequest"/>
1083
+ <output message="typens:tappzBasketMergeResponse"/>
1084
+ </operation>
1085
+ <operation name="tappzBasketUpdateItems">
1086
+ <documentation>Retrieve User Agreement</documentation>
1087
+ <input message="typens:tappzBasketUpdateItemsRequest"/>
1088
+ <output message="typens:tappzBasketUpdateItemsResponse"/>
1089
+ </operation>
1090
+ <operation name="tappzBasketSetAddress">
1091
+ <documentation>Set basket shipping, billing address and shipping method</documentation>
1092
+ <input message="typens:tappzBasketSetAddressRequest"/>
1093
+ <output message="typens:tappzBasketSetAddressResponse"/>
1094
+ </operation>
1095
+ <operation name="tappzBasketSetGiftWrapping">
1096
+ <documentation>Set basket gift wrapping properties</documentation>
1097
+ <input message="typens:tappzBasketSetGiftWrappingRequest"/>
1098
+ <output message="typens:tappzBasketSetGiftWrappingResponse"/>
1099
+ </operation>
1100
+ <operation name="tappzBasketUseDiscount">
1101
+ <documentation>Set promo code to basket</documentation>
1102
+ <input message="typens:tappzBasketUseDiscountRequest"/>
1103
+ <output message="typens:tappzBasketUseDiscountResponse"/>
1104
+ </operation>
1105
+ <operation name="tappzBasketDeleteDiscount">
1106
+ <documentation>Delete promo code of a basket</documentation>
1107
+ <input message="typens:tappzBasketDeleteDiscountRequest"/>
1108
+ <output message="typens:tappzBasketDeleteDiscountResponse"/>
1109
+ </operation>
1110
+ <operation name="tappzBasketUseGiftCheques">
1111
+ <documentation>Set a gift check to a basket</documentation>
1112
+ <input message="typens:tappzBasketUseGiftChequesRequest"/>
1113
+ <output message="typens:tappzBasketUseGiftChequesResponse"/>
1114
+ </operation>
1115
+ <operation name="tappzBasketDeleteGiftCheques">
1116
+ <documentation>Delete gift cheques of a basket</documentation>
1117
+ <input message="typens:tappzBasketDeleteGiftChequesRequest"/>
1118
+ <output message="typens:tappzBasketDeleteGiftChequesResponse"/>
1119
+ </operation>
1120
+ <operation name="tappzBasketUseUserPoints">
1121
+ <documentation>User points in a basket</documentation>
1122
+ <input message="typens:tappzBasketUseUserPointsRequest"/>
1123
+ <output message="typens:tappzBasketUseUserPointsResponse"/>
1124
+ </operation>
1125
+ <operation name="tappzBasketSelectPaymentMethod">
1126
+ <documentation>Set payment type of a basket</documentation>
1127
+ <input message="typens:tappzBasketSelectPaymentMethodRequest"/>
1128
+ <output message="typens:tappzBasketSelectPaymentMethodResponse"/>
1129
+ </operation>
1130
+ <operation name="tappzBasketGetContract">
1131
+ <documentation>Retrieve Basket Agreement</documentation>
1132
+ <input message="typens:tappzBasketGetContractRequest"/>
1133
+ <output message="typens:tappzBasketGetContractResponse"/>
1134
+ </operation>
1135
+ <operation name="tappzBasketPurchaseCreditCard">
1136
+ <documentation>Purchase basket with credit card</documentation>
1137
+ <input message="typens:tappzBasketPurchaseCreditCardRequest"/>
1138
+ <output message="typens:tappzBasketPurchaseCreditCardResponse"/>
1139
+ </operation>
1140
+ <operation name="tappzBasketPurchaseMoneyOrder">
1141
+ <documentation>Purchase basket with money order</documentation>
1142
+ <input message="typens:tappzBasketPurchaseMoneyOrderRequest"/>
1143
+ <output message="typens:tappzBasketPurchaseMoneyOrderResponse"/>
1144
+ </operation>
1145
+ <operation name="tappzBasketPurchaseCashOnDelivery">
1146
+ <documentation>Purchase basket with cash on delivery</documentation>
1147
+ <input message="typens:tappzBasketPurchaseCashOnDeliveryRequest"/>
1148
+ <output message="typens:tappzBasketPurchaseCashOnDeliveryResponse"/>
1149
+ </operation>
1150
+ <operation name="tappzBasketPurchaseWithPayPal">
1151
+ <documentation>Purchase basket with paypal</documentation>
1152
+ <input message="typens:tappzBasketPurchaseWithPayPalRequest"/>
1153
+ <output message="typens:tappzBasketPurchaseWithPayPalResponse"/>
1154
+ </operation>
1155
+ <operation name="tappzBasketPurchaseWithApplePay">
1156
+ <documentation>Purchase basket with credit card</documentation>
1157
+ <input message="typens:tappzBasketPurchaseWithApplePayRequest"/>
1158
+ <output message="typens:tappzBasketPurchaseWithApplePayResponse"/>
1159
+ </operation>
1160
+ <!--basket-->
1161
+ </portType>
1162
+
1163
+ <binding name="{{var wsdl.handler}}Binding" type="typens:{{var wsdl.handler}}PortType">
1164
+ <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
1165
+
1166
+ <!-- catalog -->
1167
+ <operation name="tappzCatalogGetFrontPage">
1168
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1169
+ <input>
1170
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1171
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1172
+ </input>
1173
+ <output>
1174
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1175
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1176
+ </output>
1177
+ </operation>
1178
+ <operation name="tappzCatalogGetCategories">
1179
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1180
+ <input>
1181
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1182
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1183
+ </input>
1184
+ <output>
1185
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1186
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1187
+ </output>
1188
+ </operation>
1189
+ <operation name="tappzCatalogGetCategory">
1190
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1191
+ <input>
1192
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1193
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1194
+ </input>
1195
+ <output>
1196
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1197
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1198
+ </output>
1199
+ </operation>
1200
+ <operation name="tappzCatalogGetProductList">
1201
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1202
+ <input>
1203
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1204
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1205
+ </input>
1206
+ <output>
1207
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1208
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1209
+ </output>
1210
+ </operation>
1211
+ <operation name="tappzCatalogGetProduct">
1212
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1213
+ <input>
1214
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1215
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1216
+ </input>
1217
+ <output>
1218
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1219
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1220
+ </output>
1221
+ </operation>
1222
+ <operation name="tappzCatalogGetRelatedProducts">
1223
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1224
+ <input>
1225
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1226
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1227
+ </input>
1228
+ <output>
1229
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1230
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1231
+ </output>
1232
+ </operation>
1233
+ <operation name="tappzCatalogGetChildProductId">
1234
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1235
+ <input>
1236
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1237
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1238
+ </input>
1239
+ <output>
1240
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1241
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1242
+ </output>
1243
+ </operation>
1244
+ <!-- catalog -->
1245
+
1246
+ <!--customer-->
1247
+ <operation name="tappzCustomerInfo">
1248
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1249
+ <input>
1250
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1251
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1252
+ </input>
1253
+ <output>
1254
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1255
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1256
+ </output>
1257
+ </operation>
1258
+ <operation name="tappzCustomerLogin">
1259
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1260
+ <input>
1261
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1262
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1263
+ </input>
1264
+ <output>
1265
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1266
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1267
+ </output>
1268
+ </operation>
1269
+ <operation name="tappzCustomerFacebookLogin">
1270
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1271
+ <input>
1272
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1273
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1274
+ </input>
1275
+ <output>
1276
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1277
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1278
+ </output>
1279
+ </operation>
1280
+ <operation name="tappzCustomerRegister">
1281
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1282
+ <input>
1283
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1284
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1285
+ </input>
1286
+ <output>
1287
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1288
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1289
+ </output>
1290
+ </operation>
1291
+ <operation name="tappzCustomerUpdate">
1292
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1293
+ <input>
1294
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1295
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1296
+ </input>
1297
+ <output>
1298
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1299
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1300
+ </output>
1301
+ </operation>
1302
+ <operation name="tappzCustomerLostPassword">
1303
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1304
+ <input>
1305
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1306
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1307
+ </input>
1308
+ <output>
1309
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1310
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1311
+ </output>
1312
+ </operation>
1313
+ <operation name="tappzCustomerGetUserAgreement">
1314
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1315
+ <input>
1316
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1317
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1318
+ </input>
1319
+ <output>
1320
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1321
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1322
+ </output>
1323
+ </operation>
1324
+ <!--customer-->
1325
+
1326
+ <!--customer_address-->
1327
+ <operation name="tappzCustomerAddressGetList">
1328
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1329
+ <input>
1330
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1331
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1332
+ </input>
1333
+ <output>
1334
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1335
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1336
+ </output>
1337
+ </operation>
1338
+ <operation name="tappzCustomerAddressCreate">
1339
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1340
+ <input>
1341
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1342
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1343
+ </input>
1344
+ <output>
1345
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1346
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1347
+ </output>
1348
+ </operation>
1349
+ <operation name="tappzCustomerAddressUpdate">
1350
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1351
+ <input>
1352
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1353
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1354
+ </input>
1355
+ <output>
1356
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1357
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1358
+ </output>
1359
+ </operation>
1360
+ <operation name="tappzCustomerAddressDelete">
1361
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1362
+ <input>
1363
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1364
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1365
+ </input>
1366
+ <output>
1367
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1368
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1369
+ </output>
1370
+ </operation>
1371
+ <operation name="tappzCustomerAddressCountryList">
1372
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1373
+ <input>
1374
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1375
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1376
+ </input>
1377
+ <output>
1378
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1379
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1380
+ </output>
1381
+ </operation>
1382
+ <operation name="tappzCustomerAddressStateList">
1383
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1384
+ <input>
1385
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1386
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1387
+ </input>
1388
+ <output>
1389
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1390
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1391
+ </output>
1392
+ </operation>
1393
+ <operation name="tappzCustomerAddressCityList">
1394
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1395
+ <input>
1396
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1397
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1398
+ </input>
1399
+ <output>
1400
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1401
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1402
+ </output>
1403
+ </operation>
1404
+ <operation name="tappzCustomerAddressDistrictList">
1405
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1406
+ <input>
1407
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1408
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1409
+ </input>
1410
+ <output>
1411
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1412
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1413
+ </output>
1414
+ </operation>
1415
+ <operation name="tappzCustomerAddressTownList">
1416
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1417
+ <input>
1418
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1419
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1420
+ </input>
1421
+ <output>
1422
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1423
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1424
+ </output>
1425
+ </operation>
1426
+ <!--customer_address-->
1427
+
1428
+ <!--customer_order-->
1429
+ <operation name="tappzCustomerOrderGetList">
1430
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1431
+ <input>
1432
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1433
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1434
+ </input>
1435
+ <output>
1436
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1437
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1438
+ </output>
1439
+ </operation>
1440
+ <operation name="tappzCustomerOrderInfo">
1441
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1442
+ <input>
1443
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1444
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1445
+ </input>
1446
+ <output>
1447
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1448
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1449
+ </output>
1450
+ </operation>
1451
+ <!--customer_order-->
1452
+
1453
+ <!--basket-->
1454
+ <operation name="tappzBasketGet">
1455
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1456
+ <input>
1457
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1458
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1459
+ </input>
1460
+ <output>
1461
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1462
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1463
+ </output>
1464
+ </operation>
1465
+ <operation name="tappzBasketMerge">
1466
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1467
+ <input>
1468
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1469
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1470
+ </input>
1471
+ <output>
1472
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1473
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1474
+ </output>
1475
+ </operation>
1476
+ <operation name="tappzBasketUpdateItems">
1477
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1478
+ <input>
1479
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1480
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1481
+ </input>
1482
+ <output>
1483
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1484
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1485
+ </output>
1486
+ </operation>
1487
+ <operation name="tappzBasketSetAddress">
1488
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1489
+ <input>
1490
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1491
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1492
+ </input>
1493
+ <output>
1494
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1495
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1496
+ </output>
1497
+ </operation>
1498
+ <operation name="tappzBasketSetGiftWrapping">
1499
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1500
+ <input>
1501
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1502
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1503
+ </input>
1504
+ <output>
1505
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1506
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1507
+ </output>
1508
+ </operation>
1509
+ <operation name="tappzBasketUseDiscount">
1510
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1511
+ <input>
1512
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1513
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1514
+ </input>
1515
+ <output>
1516
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1517
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1518
+ </output>
1519
+ </operation>
1520
+ <operation name="tappzBasketDeleteDiscount">
1521
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1522
+ <input>
1523
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1524
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1525
+ </input>
1526
+ <output>
1527
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1528
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1529
+ </output>
1530
+ </operation>
1531
+ <operation name="tappzBasketUseGiftCheques">
1532
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1533
+ <input>
1534
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1535
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1536
+ </input>
1537
+ <output>
1538
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1539
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1540
+ </output>
1541
+ </operation>
1542
+ <operation name="tappzBasketDeleteGiftCheques">
1543
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1544
+ <input>
1545
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1546
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1547
+ </input>
1548
+ <output>
1549
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1550
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1551
+ </output>
1552
+ </operation>
1553
+ <operation name="tappzBasketUseUserPoints">
1554
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1555
+ <input>
1556
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1557
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1558
+ </input>
1559
+ <output>
1560
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1561
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1562
+ </output>
1563
+ </operation>
1564
+ <operation name="tappzBasketSelectPaymentMethod">
1565
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1566
+ <input>
1567
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1568
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1569
+ </input>
1570
+ <output>
1571
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1572
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1573
+ </output>
1574
+ </operation>
1575
+ <operation name="tappzBasketGetContract">
1576
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1577
+ <input>
1578
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1579
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1580
+ </input>
1581
+ <output>
1582
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1583
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1584
+ </output>
1585
+ </operation>
1586
+ <operation name="tappzBasketPurchaseCreditCard">
1587
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1588
+ <input>
1589
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1590
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1591
+ </input>
1592
+ <output>
1593
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1594
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1595
+ </output>
1596
+ </operation>
1597
+ <operation name="tappzBasketPurchaseMoneyOrder">
1598
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1599
+ <input>
1600
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1601
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1602
+ </input>
1603
+ <output>
1604
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1605
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1606
+ </output>
1607
+ </operation>
1608
+ <operation name="tappzBasketPurchaseCashOnDelivery">
1609
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1610
+ <input>
1611
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1612
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1613
+ </input>
1614
+ <output>
1615
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1616
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1617
+ </output>
1618
+ </operation>
1619
+ <operation name="tappzBasketPurchaseWithPayPal">
1620
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1621
+ <input>
1622
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1623
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1624
+ </input>
1625
+ <output>
1626
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1627
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1628
+ </output>
1629
+ </operation>
1630
+ <operation name="tappzBasketPurchaseWithApplePay">
1631
+ <soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
1632
+ <input>
1633
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1634
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1635
+ </input>
1636
+ <output>
1637
+ <soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
1638
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
1639
+ </output>
1640
+ </operation>
1641
+ <!--basket-->
1642
+ </binding>
1643
+
1644
+ <service name="{{var wsdl.name}}Service">
1645
+ <port name="{{var wsdl.handler}}Port" binding="typens:{{var wsdl.handler}}Binding">
1646
+ <soap:address location="{{var wsdl.url}}"/>
1647
+ </port>
1648
+ </service>
1649
+
1650
+ </definitions>
package.xml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>Tmob_Tappz</name>
4
+ <version>1.0.8</version>
5
+ <stability>stable</stability>
6
+ <license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL)</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>t-appz Adapter for Magento</summary>
10
+ <description>t-appz Adapter for Magento</description>
11
+ <notes>t-appz Adapter for Magento</notes>
12
+ <authors><author><name>tmobtech </name><user>tmobLabs</user><email>info@tmobtech.com</email></author></authors>
13
+ <date>2015-10-09</date>
14
+ <time>22:19:58</time>
15
+ <contents><target name="magelocal"><dir name="TmobLabs"><dir name="Tappz"><dir name="Block"><file name="Info.php" hash="f656ba90ea77040abb27cf8858a5e8bb"/></dir><dir name="Helper"><file name="Data.php" hash="8587ca8f702e61ae1b57dd7739a674e6"/></dir><dir name="Model"><dir name="Basket"><dir name="Api"><file name="V2.php" hash="e5860165902a6e3f0e29e238397d40f3"/></dir><file name="Api.php" hash="aad5e348bdb3b7667255f8f3bda5c5a4"/></dir><dir name="Catalog"><dir name="Api"><file name="V2.php" hash="d28a03e359966fa0a0a9c48940ff4b2b"/></dir><file name="Api.php" hash="27fabfd66c1fd314e21697cda624b35c"/></dir><dir name="Customer"><dir name="Address"><dir name="Api"><file name="V2.php" hash="9a3ca989261966e5d9195274311db0e6"/></dir><file name="Api.php" hash="cd8b41365f3bb1ab0dc8ef779f01cfeb"/></dir><dir name="Api"><file name="V2.php" hash="5089c4a89f24f09ff6ed41903d04d210"/></dir><file name="Api.php" hash="43be089a8ac5944c8c5919c062588283"/><dir name="Order"><dir name="Api"><file name="V2.php" hash="9a4d34b33c98d7931c86a3af64718a88"/></dir><file name="Api.php" hash="10e9ead5309d4927663d2348444873e3"/></dir></dir><dir name="System"><dir name="Config"><file name="Action.php" hash="696379a81774cc7022565d3d22c263e6"/><file name="Address.php" hash="d7aed1d204c8fa4bbf833c22ee643bc4"/><file name="Category.php" hash="eb4af019ee4494bd305195442378957e"/><file name="Customer.php" hash="14e8962dc72e73319e632e751c009193"/><file name="Divider.php" hash="3a3b599ba29e053ec9b804975cab5b21"/><file name="Enabled.php" hash="8db7b92b36d79a153fab01ceee8c53bd"/><file name="Payment.php" hash="0216068de66b431fba037923ee30a81a"/><dir name="Product"><file name="Attribute.php" hash="62800e9eed8a06444560c351a25de6e3"/></dir><file name="Store.php" hash="ac29ff3d2a9b915ed3e78e8ac4eca999"/></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="35aaf132195e63f958f33b59bd981b3e"/><file name="api.xml" hash="f2812af730d2d3f4ce92ef164f3b693c"/><file name="config.xml" hash="93b957b86d745252c3e9746c0df9c3c6"/><file name="system.xml" hash="9613da2141caa6a716c3e7e6d06ef16c"/><file name="wsdl.xml" hash="ee6f0a1af3cebe17f7f63fa2284ec40a"/></dir></dir></dir></target></contents>
16
+ <compatible/>
17
+ <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
18
+ </package>