Version Notes
1.0.2
Download this release
Release Info
Developer | Techtwo Webdevelopment B.V. |
Extension | Transsmart_Shipping |
Version | 1.0.2 |
Comparing to | |
See all releases |
Code changes from version 1.0.1 to 1.0.2
app/code/community/Transsmart/Shipping/Helper/Shipment.php
CHANGED
@@ -1,774 +1,781 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* @category Transsmart
|
5 |
-
* @package Transsmart_Shipping
|
6 |
-
* @copyright Copyright (c) 2016 Techtwo Webdevelopment B.V. (http://www.techtwo.nl)
|
7 |
-
*/
|
8 |
-
class Transsmart_Shipping_Helper_Shipment extends Mage_Core_Helper_Abstract
|
9 |
-
{
|
10 |
-
const XML_PATH_DEFAULT_CARRIERPROFILE = 'transsmart_shipping/default_shipment/carrierprofile';
|
11 |
-
const XML_PATH_DEFAULT_SHIPMENTLOCATION = 'transsmart_shipping/default_shipment/shipmentlocation';
|
12 |
-
const XML_PATH_DEFAULT_EMAILTYPE = 'transsmart_shipping/default_shipment/emailtype';
|
13 |
-
const XML_PATH_DEFAULT_INCOTERM = 'transsmart_shipping/default_shipment/incoterm';
|
14 |
-
const XML_PATH_DEFAULT_COSTCENTER = 'transsmart_shipping/default_shipment/costcenter';
|
15 |
-
const XML_PATH_DEFAULT_PACKAGETYPE = 'transsmart_shipping/default_shipment/packagetype';
|
16 |
-
|
17 |
-
const XML_PATH_MAPPING_STREET = 'transsmart_shipping/mapping/street';
|
18 |
-
const XML_PATH_MAPPING_STREETNO = 'transsmart_shipping/mapping/streetno';
|
19 |
-
const XML_PATH_MAPPING_STREET2 = 'transsmart_shipping/mapping/street2';
|
20 |
-
const XML_PATH_MAPPING_COUNTRY_OF_ORIGIN = 'transsmart_shipping/mapping/country_of_origin';
|
21 |
-
const XML_PATH_MAPPING_HS_CODE = 'transsmart_shipping/mapping/hs_code';
|
22 |
-
const XML_PATH_MAPPING_REASON_OF_EXPORT = 'transsmart_shipping/mapping/reason_of_export';
|
23 |
-
|
24 |
-
// OR'ed values for the 'transsmart_flags' field in the shipment table
|
25 |
-
const FLAG_BOOK_ON_CREATE = 1;
|
26 |
-
const FLAG_BOOKANDPRINT_ON_CREATE = 2;
|
27 |
-
|
28 |
-
/**
|
29 |
-
* Get all possible Transsmart shipment statuses.
|
30 |
-
*
|
31 |
-
* @return array
|
32 |
-
*/
|
33 |
-
public function getShipmentStatuses()
|
34 |
-
{
|
35 |
-
return array(
|
36 |
-
'NONE' => $this->__('NONE'),
|
37 |
-
'NEW' => $this->__('NEW'),
|
38 |
-
'BOOK' => $this->__('BOOK'),
|
39 |
-
'LABL' => $this->__('LABL'),
|
40 |
-
'MANI' => $this->__('MANI'),
|
41 |
-
'ACCEP' => $this->__('ACCEP'),
|
42 |
-
'TRNS' => $this->__('TRNS'),
|
43 |
-
'DONE' => $this->__('DONE'),
|
44 |
-
'APOD' => $this->__('APOD'),
|
45 |
-
'REFU' => $this->__('REFU'),
|
46 |
-
'ERR' => $this->__('ERR'),
|
47 |
-
'DEL' => $this->__('DEL'),
|
48 |
-
'ONHOLD' => $this->__('ONHOLD'),
|
49 |
-
);
|
50 |
-
}
|
51 |
-
|
52 |
-
/**
|
53 |
-
* Get configured default carrierprofile for the given shipment or store.
|
54 |
-
*
|
55 |
-
* @param Mage_Sales_Model_Order_Shipment|null $shipment
|
56 |
-
* @param null $store
|
57 |
-
* @return int
|
58 |
-
*/
|
59 |
-
public function getDefaultCarrierprofileId($shipment = null, $store = null)
|
60 |
-
{
|
61 |
-
$defaultValue = false;
|
62 |
-
if ($shipment instanceof Mage_Sales_Model_Order_Shipment) {
|
63 |
-
$shippingMethod = $shipment->getOrder()->getShippingMethod(false);
|
64 |
-
$carrierprofile = Mage::getModel('transsmart_shipping/carrierprofile')
|
65 |
-
->loadByShippingMethodCode($shippingMethod);
|
66 |
-
$defaultValue = $carrierprofile->getId();
|
67 |
-
if (!$defaultValue) {
|
68 |
-
$defaultValue = Mage::getStoreConfig(self::XML_PATH_DEFAULT_CARRIERPROFILE, $shipment->getStore());
|
69 |
-
}
|
70 |
-
}
|
71 |
-
if (!$defaultValue) {
|
72 |
-
$defaultValue = Mage::getStoreConfig(self::XML_PATH_DEFAULT_CARRIERPROFILE, $store);
|
73 |
-
}
|
74 |
-
return $defaultValue;
|
75 |
-
}
|
76 |
-
|
77 |
-
/**
|
78 |
-
* Get configured default shipmentlocation for the given store.
|
79 |
-
*
|
80 |
-
* @param null $store
|
81 |
-
* @return int
|
82 |
-
*/
|
83 |
-
public function getDefaultShipmentlocationId($store = null)
|
84 |
-
{
|
85 |
-
$defaultValue = Mage::getStoreConfig(self::XML_PATH_DEFAULT_SHIPMENTLOCATION, $store);
|
86 |
-
if (!$defaultValue) {
|
87 |
-
$ids = Mage::getResourceModel('transsmart_shipping/shipmentlocation_collection')
|
88 |
-
->addFieldToFilter('is_default', array('eq' => 1))
|
89 |
-
->setPageSize(1)
|
90 |
-
->getAllIds();
|
91 |
-
if (count($ids)) {
|
92 |
-
$defaultValue = $ids[0];
|
93 |
-
}
|
94 |
-
}
|
95 |
-
return $defaultValue;
|
96 |
-
}
|
97 |
-
|
98 |
-
/**
|
99 |
-
* Get configured default emailtype for the given store.
|
100 |
-
*
|
101 |
-
* @param null $store
|
102 |
-
* @return int
|
103 |
-
*/
|
104 |
-
public function getDefaultEmailtypeId($store = null)
|
105 |
-
{
|
106 |
-
$defaultValue = Mage::getStoreConfig(self::XML_PATH_DEFAULT_EMAILTYPE, $store);
|
107 |
-
if (!$defaultValue) {
|
108 |
-
$ids = Mage::getResourceModel('transsmart_shipping/emailtype_collection')
|
109 |
-
->addFieldToFilter('is_default', array('eq' => 1))
|
110 |
-
->setPageSize(1)
|
111 |
-
->getAllIds();
|
112 |
-
if (count($ids)) {
|
113 |
-
$defaultValue = $ids[0];
|
114 |
-
}
|
115 |
-
}
|
116 |
-
return $defaultValue;
|
117 |
-
}
|
118 |
-
|
119 |
-
/**
|
120 |
-
* Get configured default incoterm for the given store.
|
121 |
-
*
|
122 |
-
* @param null $store
|
123 |
-
* @return int
|
124 |
-
*/
|
125 |
-
public function getDefaultIncotermId($store = null)
|
126 |
-
{
|
127 |
-
$defaultValue = Mage::getStoreConfig(self::XML_PATH_DEFAULT_INCOTERM, $store);
|
128 |
-
if (!$defaultValue) {
|
129 |
-
$ids = Mage::getResourceModel('transsmart_shipping/incoterm_collection')
|
130 |
-
->addFieldToFilter('is_default', array('eq' => 1))
|
131 |
-
->setPageSize(1)
|
132 |
-
->getAllIds();
|
133 |
-
if (count($ids)) {
|
134 |
-
$defaultValue = $ids[0];
|
135 |
-
}
|
136 |
-
}
|
137 |
-
return $defaultValue;
|
138 |
-
}
|
139 |
-
|
140 |
-
/**
|
141 |
-
* Get configured default costcenter for the given store.
|
142 |
-
*
|
143 |
-
* @param null $store
|
144 |
-
* @return int
|
145 |
-
*/
|
146 |
-
public function getDefaultCostcenterId($store = null)
|
147 |
-
{
|
148 |
-
$defaultValue = Mage::getStoreConfig(self::XML_PATH_DEFAULT_COSTCENTER, $store);
|
149 |
-
if (!$defaultValue) {
|
150 |
-
$ids = Mage::getResourceModel('transsmart_shipping/costcenter_collection')
|
151 |
-
->addFieldToFilter('is_default', array('eq' => 1))
|
152 |
-
->setPageSize(1)
|
153 |
-
->getAllIds();
|
154 |
-
if (count($ids)) {
|
155 |
-
$defaultValue = $ids[0];
|
156 |
-
}
|
157 |
-
}
|
158 |
-
return $defaultValue;
|
159 |
-
}
|
160 |
-
|
161 |
-
/**
|
162 |
-
* Get configured default packagetype for the given store.
|
163 |
-
*
|
164 |
-
* @param null $store
|
165 |
-
* @return int
|
166 |
-
*/
|
167 |
-
public function getDefaultPackagetypeId($store = null)
|
168 |
-
{
|
169 |
-
$defaultValue = Mage::getStoreConfig(self::XML_PATH_DEFAULT_PACKAGETYPE, $store);
|
170 |
-
if (!$defaultValue) {
|
171 |
-
$ids = Mage::getResourceModel('transsmart_shipping/packagetype_collection')
|
172 |
-
->addFieldToFilter('is_default', array('eq' => 1))
|
173 |
-
->setPageSize(1)
|
174 |
-
->getAllIds();
|
175 |
-
if (count($ids)) {
|
176 |
-
$defaultValue = $ids[0];
|
177 |
-
}
|
178 |
-
}
|
179 |
-
return $defaultValue;
|
180 |
-
}
|
181 |
-
|
182 |
-
/**
|
183 |
-
* Get the street and housenumber from the given address. If there's only one street field, try to split it into
|
184 |
-
* separate fields.
|
185 |
-
*
|
186 |
-
* @param Mage_Sales_Model_Order_Address $address
|
187 |
-
* @param mixed $store
|
188 |
-
* @return array
|
189 |
-
*/
|
190 |
-
protected function _getStreetFields($address, $store = null)
|
191 |
-
{
|
192 |
-
if ($address->hasTranssmartServicepointId()) {
|
193 |
-
// for addresses from the location selector, always use predetermined fields
|
194 |
-
$street = $address->getStreet(1);
|
195 |
-
$streetNo = $address->getStreet(2);
|
196 |
-
$street2 = $address->getStreet(3);
|
197 |
-
}
|
198 |
-
else {
|
199 |
-
// read config settings for street fields mapping
|
200 |
-
$mappingStreet = Mage::getStoreConfig(self::XML_PATH_MAPPING_STREET, $store);
|
201 |
-
$mappingStreetNo = Mage::getStoreConfig(self::XML_PATH_MAPPING_STREETNO, $store);
|
202 |
-
$mappingStreet2 = Mage::getStoreConfig(self::XML_PATH_MAPPING_STREET2, $store);
|
203 |
-
|
204 |
-
// get street value
|
205 |
-
switch ($mappingStreet) {
|
206 |
-
case Transsmart_Shipping_Model_Adminhtml_System_Config_Source_Mapping_Street::NONE:
|
207 |
-
$street = '';
|
208 |
-
break;
|
209 |
-
case Transsmart_Shipping_Model_Adminhtml_System_Config_Source_Mapping_Street::FULL:
|
210 |
-
$street = trim(implode(' ', $address->getStreet()));
|
211 |
-
break;
|
212 |
-
default:
|
213 |
-
$street = $address->getStreet($mappingStreet);
|
214 |
-
}
|
215 |
-
|
216 |
-
// get streetno value
|
217 |
-
switch ($mappingStreetNo) {
|
218 |
-
case Transsmart_Shipping_Model_Adminhtml_System_Config_Source_Mapping_Street::NONE:
|
219 |
-
$streetNo = '';
|
220 |
-
break;
|
221 |
-
case Transsmart_Shipping_Model_Adminhtml_System_Config_Source_Mapping_Street::FULL:
|
222 |
-
$streetNo = trim(implode(' ', $address->getStreet()));
|
223 |
-
break;
|
224 |
-
default:
|
225 |
-
$streetNo = $address->getStreet($mappingStreetNo);
|
226 |
-
}
|
227 |
-
|
228 |
-
// get street2 value
|
229 |
-
switch ($mappingStreet2) {
|
230 |
-
case Transsmart_Shipping_Model_Adminhtml_System_Config_Source_Mapping_Street::NONE:
|
231 |
-
$street2 = '';
|
232 |
-
break;
|
233 |
-
case Transsmart_Shipping_Model_Adminhtml_System_Config_Source_Mapping_Street::FULL:
|
234 |
-
$street2 = trim(implode(' ', $address->getStreet()));
|
235 |
-
break;
|
236 |
-
default:
|
237 |
-
$street2 = $address->getStreet($mappingStreet2);
|
238 |
-
}
|
239 |
-
|
240 |
-
// automatic house number detection
|
241 |
-
if ($mappingStreet == $mappingStreetNo) {
|
242 |
-
$streetNo = '';
|
243 |
-
|
244 |
-
if (preg_match('/^(.*) ([0-9]+ .*)$/', $street, $matches)) {
|
245 |
-
$street = $matches[1];
|
246 |
-
$streetNo = $matches[2];
|
247 |
-
}
|
248 |
-
elseif (preg_match('/^(.*) ([0-9]+.*)$/', $street, $matches)) {
|
249 |
-
$street = $matches[1];
|
250 |
-
$streetNo = $matches[2];
|
251 |
-
}
|
252 |
-
elseif (preg_match('/^(.*) ([0-9]+.*)$/', $street, $matches)) {
|
253 |
-
$street = $matches[1];
|
254 |
-
$streetNo = $matches[2];
|
255 |
-
}
|
256 |
-
}
|
257 |
-
}
|
258 |
-
|
259 |
-
// house number cannot be empty
|
260 |
-
if ($streetNo === '') {
|
261 |
-
$streetNo = '.';
|
262 |
-
}
|
263 |
-
|
264 |
-
return array($street, $streetNo, $street2);
|
265 |
-
}
|
266 |
-
|
267 |
-
/**
|
268 |
-
* Export the given shipment to the Transsmart API.
|
269 |
-
*
|
270 |
-
* @param Mage_Sales_Model_Order_Shipment $shipment
|
271 |
-
* @param bool $allowPrint
|
272 |
-
*/
|
273 |
-
public function doExport($shipment, $allowPrint = true)
|
274 |
-
{
|
275 |
-
// is it already exported?
|
276 |
-
if ($shipment->getTranssmartDocumentId()) {
|
277 |
-
return;
|
278 |
-
}
|
279 |
-
|
280 |
-
/** @var Transsmart_Shipping_Model_Carrierprofile $carrierprofile */
|
281 |
-
$carrierprofile = Mage::getModel('transsmart_shipping/carrierprofile')
|
282 |
-
->load($shipment->getTranssmartCarrierprofileId());
|
283 |
-
if (!$carrierprofile->getId()) {
|
284 |
-
return;
|
285 |
-
}
|
286 |
-
|
287 |
-
$store = $shipment->getStore();
|
288 |
-
$address = $shipment->getShippingAddress();
|
289 |
-
$invoiceAddress = $shipment->getBillingAddress();
|
290 |
-
|
291 |
-
// check if the order has a pickup address (location selector is used)
|
292 |
-
$pickupAddress = Mage::helper('transsmart_shipping/pickupaddress')
|
293 |
-
->getPickupAddressFromOrder($shipment->getOrder());
|
294 |
-
$servicePointId = null;
|
295 |
-
if ($pickupAddress) {
|
296 |
-
$address = $pickupAddress;
|
297 |
-
$invoiceAddress = $shipment->getShippingAddress();
|
298 |
-
$servicePointId = $pickupAddress->getTranssmartServicepointId();
|
299 |
-
}
|
300 |
-
|
301 |
-
// determine address name and contact
|
302 |
-
$addressName = $address->getCompany();
|
303 |
-
$addressContact = $address->getName();
|
304 |
-
if ($addressName == '') {
|
305 |
-
$addressName = $addressContact;
|
306 |
-
}
|
307 |
-
|
308 |
-
// determine invoice address name and contact
|
309 |
-
$invoiceAddressName = $invoiceAddress->getCompany();
|
310 |
-
$invoiceAddressContact = $invoiceAddress->getName();
|
311 |
-
if ($invoiceAddressName == '') {
|
312 |
-
$invoiceAddressName = $invoiceAddressContact;
|
313 |
-
}
|
314 |
-
|
315 |
-
// split street fields into street and house number
|
316 |
-
list($addressStreet, $addressStreetNo, $addressStreet2) =
|
317 |
-
$this->_getStreetFields($address, $store);
|
318 |
-
list($invoiceAddressStreet, $invoiceAddressStreetNo, $invoiceAddressStreet2) =
|
319 |
-
$this->_getStreetFields($invoiceAddress, $store);
|
320 |
-
|
321 |
-
|
322 |
-
$
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
'
|
337 |
-
'
|
338 |
-
'
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
'
|
343 |
-
'
|
344 |
-
'
|
345 |
-
'ReasonOfExport' =>
|
346 |
-
);
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
$
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
'
|
380 |
-
'
|
381 |
-
'
|
382 |
-
'
|
383 |
-
'
|
384 |
-
'
|
385 |
-
'
|
386 |
-
'
|
387 |
-
'
|
388 |
-
'
|
389 |
-
'
|
390 |
-
'
|
391 |
-
'
|
392 |
-
'
|
393 |
-
'
|
394 |
-
'
|
395 |
-
'
|
396 |
-
'
|
397 |
-
'
|
398 |
-
'
|
399 |
-
'
|
400 |
-
'
|
401 |
-
'
|
402 |
-
'
|
403 |
-
'
|
404 |
-
'
|
405 |
-
'
|
406 |
-
'
|
407 |
-
'
|
408 |
-
'
|
409 |
-
'
|
410 |
-
'
|
411 |
-
'
|
412 |
-
'
|
413 |
-
'
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
)
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
)
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
)
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
);
|
572 |
-
}
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
),
|
606 |
-
Mage::getStoreConfig(
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
$
|
647 |
-
|
648 |
-
$
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
}
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
)
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* @category Transsmart
|
5 |
+
* @package Transsmart_Shipping
|
6 |
+
* @copyright Copyright (c) 2016 Techtwo Webdevelopment B.V. (http://www.techtwo.nl)
|
7 |
+
*/
|
8 |
+
class Transsmart_Shipping_Helper_Shipment extends Mage_Core_Helper_Abstract
|
9 |
+
{
|
10 |
+
const XML_PATH_DEFAULT_CARRIERPROFILE = 'transsmart_shipping/default_shipment/carrierprofile';
|
11 |
+
const XML_PATH_DEFAULT_SHIPMENTLOCATION = 'transsmart_shipping/default_shipment/shipmentlocation';
|
12 |
+
const XML_PATH_DEFAULT_EMAILTYPE = 'transsmart_shipping/default_shipment/emailtype';
|
13 |
+
const XML_PATH_DEFAULT_INCOTERM = 'transsmart_shipping/default_shipment/incoterm';
|
14 |
+
const XML_PATH_DEFAULT_COSTCENTER = 'transsmart_shipping/default_shipment/costcenter';
|
15 |
+
const XML_PATH_DEFAULT_PACKAGETYPE = 'transsmart_shipping/default_shipment/packagetype';
|
16 |
+
|
17 |
+
const XML_PATH_MAPPING_STREET = 'transsmart_shipping/mapping/street';
|
18 |
+
const XML_PATH_MAPPING_STREETNO = 'transsmart_shipping/mapping/streetno';
|
19 |
+
const XML_PATH_MAPPING_STREET2 = 'transsmart_shipping/mapping/street2';
|
20 |
+
const XML_PATH_MAPPING_COUNTRY_OF_ORIGIN = 'transsmart_shipping/mapping/country_of_origin';
|
21 |
+
const XML_PATH_MAPPING_HS_CODE = 'transsmart_shipping/mapping/hs_code';
|
22 |
+
const XML_PATH_MAPPING_REASON_OF_EXPORT = 'transsmart_shipping/mapping/reason_of_export';
|
23 |
+
|
24 |
+
// OR'ed values for the 'transsmart_flags' field in the shipment table
|
25 |
+
const FLAG_BOOK_ON_CREATE = 1;
|
26 |
+
const FLAG_BOOKANDPRINT_ON_CREATE = 2;
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Get all possible Transsmart shipment statuses.
|
30 |
+
*
|
31 |
+
* @return array
|
32 |
+
*/
|
33 |
+
public function getShipmentStatuses()
|
34 |
+
{
|
35 |
+
return array(
|
36 |
+
'NONE' => $this->__('NONE'),
|
37 |
+
'NEW' => $this->__('NEW'),
|
38 |
+
'BOOK' => $this->__('BOOK'),
|
39 |
+
'LABL' => $this->__('LABL'),
|
40 |
+
'MANI' => $this->__('MANI'),
|
41 |
+
'ACCEP' => $this->__('ACCEP'),
|
42 |
+
'TRNS' => $this->__('TRNS'),
|
43 |
+
'DONE' => $this->__('DONE'),
|
44 |
+
'APOD' => $this->__('APOD'),
|
45 |
+
'REFU' => $this->__('REFU'),
|
46 |
+
'ERR' => $this->__('ERR'),
|
47 |
+
'DEL' => $this->__('DEL'),
|
48 |
+
'ONHOLD' => $this->__('ONHOLD'),
|
49 |
+
);
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Get configured default carrierprofile for the given shipment or store.
|
54 |
+
*
|
55 |
+
* @param Mage_Sales_Model_Order_Shipment|null $shipment
|
56 |
+
* @param null $store
|
57 |
+
* @return int
|
58 |
+
*/
|
59 |
+
public function getDefaultCarrierprofileId($shipment = null, $store = null)
|
60 |
+
{
|
61 |
+
$defaultValue = false;
|
62 |
+
if ($shipment instanceof Mage_Sales_Model_Order_Shipment) {
|
63 |
+
$shippingMethod = $shipment->getOrder()->getShippingMethod(false);
|
64 |
+
$carrierprofile = Mage::getModel('transsmart_shipping/carrierprofile')
|
65 |
+
->loadByShippingMethodCode($shippingMethod);
|
66 |
+
$defaultValue = $carrierprofile->getId();
|
67 |
+
if (!$defaultValue) {
|
68 |
+
$defaultValue = Mage::getStoreConfig(self::XML_PATH_DEFAULT_CARRIERPROFILE, $shipment->getStore());
|
69 |
+
}
|
70 |
+
}
|
71 |
+
if (!$defaultValue) {
|
72 |
+
$defaultValue = Mage::getStoreConfig(self::XML_PATH_DEFAULT_CARRIERPROFILE, $store);
|
73 |
+
}
|
74 |
+
return $defaultValue;
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Get configured default shipmentlocation for the given store.
|
79 |
+
*
|
80 |
+
* @param null $store
|
81 |
+
* @return int
|
82 |
+
*/
|
83 |
+
public function getDefaultShipmentlocationId($store = null)
|
84 |
+
{
|
85 |
+
$defaultValue = Mage::getStoreConfig(self::XML_PATH_DEFAULT_SHIPMENTLOCATION, $store);
|
86 |
+
if (!$defaultValue) {
|
87 |
+
$ids = Mage::getResourceModel('transsmart_shipping/shipmentlocation_collection')
|
88 |
+
->addFieldToFilter('is_default', array('eq' => 1))
|
89 |
+
->setPageSize(1)
|
90 |
+
->getAllIds();
|
91 |
+
if (count($ids)) {
|
92 |
+
$defaultValue = $ids[0];
|
93 |
+
}
|
94 |
+
}
|
95 |
+
return $defaultValue;
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Get configured default emailtype for the given store.
|
100 |
+
*
|
101 |
+
* @param null $store
|
102 |
+
* @return int
|
103 |
+
*/
|
104 |
+
public function getDefaultEmailtypeId($store = null)
|
105 |
+
{
|
106 |
+
$defaultValue = Mage::getStoreConfig(self::XML_PATH_DEFAULT_EMAILTYPE, $store);
|
107 |
+
if (!$defaultValue) {
|
108 |
+
$ids = Mage::getResourceModel('transsmart_shipping/emailtype_collection')
|
109 |
+
->addFieldToFilter('is_default', array('eq' => 1))
|
110 |
+
->setPageSize(1)
|
111 |
+
->getAllIds();
|
112 |
+
if (count($ids)) {
|
113 |
+
$defaultValue = $ids[0];
|
114 |
+
}
|
115 |
+
}
|
116 |
+
return $defaultValue;
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* Get configured default incoterm for the given store.
|
121 |
+
*
|
122 |
+
* @param null $store
|
123 |
+
* @return int
|
124 |
+
*/
|
125 |
+
public function getDefaultIncotermId($store = null)
|
126 |
+
{
|
127 |
+
$defaultValue = Mage::getStoreConfig(self::XML_PATH_DEFAULT_INCOTERM, $store);
|
128 |
+
if (!$defaultValue) {
|
129 |
+
$ids = Mage::getResourceModel('transsmart_shipping/incoterm_collection')
|
130 |
+
->addFieldToFilter('is_default', array('eq' => 1))
|
131 |
+
->setPageSize(1)
|
132 |
+
->getAllIds();
|
133 |
+
if (count($ids)) {
|
134 |
+
$defaultValue = $ids[0];
|
135 |
+
}
|
136 |
+
}
|
137 |
+
return $defaultValue;
|
138 |
+
}
|
139 |
+
|
140 |
+
/**
|
141 |
+
* Get configured default costcenter for the given store.
|
142 |
+
*
|
143 |
+
* @param null $store
|
144 |
+
* @return int
|
145 |
+
*/
|
146 |
+
public function getDefaultCostcenterId($store = null)
|
147 |
+
{
|
148 |
+
$defaultValue = Mage::getStoreConfig(self::XML_PATH_DEFAULT_COSTCENTER, $store);
|
149 |
+
if (!$defaultValue) {
|
150 |
+
$ids = Mage::getResourceModel('transsmart_shipping/costcenter_collection')
|
151 |
+
->addFieldToFilter('is_default', array('eq' => 1))
|
152 |
+
->setPageSize(1)
|
153 |
+
->getAllIds();
|
154 |
+
if (count($ids)) {
|
155 |
+
$defaultValue = $ids[0];
|
156 |
+
}
|
157 |
+
}
|
158 |
+
return $defaultValue;
|
159 |
+
}
|
160 |
+
|
161 |
+
/**
|
162 |
+
* Get configured default packagetype for the given store.
|
163 |
+
*
|
164 |
+
* @param null $store
|
165 |
+
* @return int
|
166 |
+
*/
|
167 |
+
public function getDefaultPackagetypeId($store = null)
|
168 |
+
{
|
169 |
+
$defaultValue = Mage::getStoreConfig(self::XML_PATH_DEFAULT_PACKAGETYPE, $store);
|
170 |
+
if (!$defaultValue) {
|
171 |
+
$ids = Mage::getResourceModel('transsmart_shipping/packagetype_collection')
|
172 |
+
->addFieldToFilter('is_default', array('eq' => 1))
|
173 |
+
->setPageSize(1)
|
174 |
+
->getAllIds();
|
175 |
+
if (count($ids)) {
|
176 |
+
$defaultValue = $ids[0];
|
177 |
+
}
|
178 |
+
}
|
179 |
+
return $defaultValue;
|
180 |
+
}
|
181 |
+
|
182 |
+
/**
|
183 |
+
* Get the street and housenumber from the given address. If there's only one street field, try to split it into
|
184 |
+
* separate fields.
|
185 |
+
*
|
186 |
+
* @param Mage_Sales_Model_Order_Address $address
|
187 |
+
* @param mixed $store
|
188 |
+
* @return array
|
189 |
+
*/
|
190 |
+
protected function _getStreetFields($address, $store = null)
|
191 |
+
{
|
192 |
+
if ($address->hasTranssmartServicepointId()) {
|
193 |
+
// for addresses from the location selector, always use predetermined fields
|
194 |
+
$street = $address->getStreet(1);
|
195 |
+
$streetNo = $address->getStreet(2);
|
196 |
+
$street2 = $address->getStreet(3);
|
197 |
+
}
|
198 |
+
else {
|
199 |
+
// read config settings for street fields mapping
|
200 |
+
$mappingStreet = Mage::getStoreConfig(self::XML_PATH_MAPPING_STREET, $store);
|
201 |
+
$mappingStreetNo = Mage::getStoreConfig(self::XML_PATH_MAPPING_STREETNO, $store);
|
202 |
+
$mappingStreet2 = Mage::getStoreConfig(self::XML_PATH_MAPPING_STREET2, $store);
|
203 |
+
|
204 |
+
// get street value
|
205 |
+
switch ($mappingStreet) {
|
206 |
+
case Transsmart_Shipping_Model_Adminhtml_System_Config_Source_Mapping_Street::NONE:
|
207 |
+
$street = '';
|
208 |
+
break;
|
209 |
+
case Transsmart_Shipping_Model_Adminhtml_System_Config_Source_Mapping_Street::FULL:
|
210 |
+
$street = trim(implode(' ', $address->getStreet()));
|
211 |
+
break;
|
212 |
+
default:
|
213 |
+
$street = $address->getStreet($mappingStreet);
|
214 |
+
}
|
215 |
+
|
216 |
+
// get streetno value
|
217 |
+
switch ($mappingStreetNo) {
|
218 |
+
case Transsmart_Shipping_Model_Adminhtml_System_Config_Source_Mapping_Street::NONE:
|
219 |
+
$streetNo = '';
|
220 |
+
break;
|
221 |
+
case Transsmart_Shipping_Model_Adminhtml_System_Config_Source_Mapping_Street::FULL:
|
222 |
+
$streetNo = trim(implode(' ', $address->getStreet()));
|
223 |
+
break;
|
224 |
+
default:
|
225 |
+
$streetNo = $address->getStreet($mappingStreetNo);
|
226 |
+
}
|
227 |
+
|
228 |
+
// get street2 value
|
229 |
+
switch ($mappingStreet2) {
|
230 |
+
case Transsmart_Shipping_Model_Adminhtml_System_Config_Source_Mapping_Street::NONE:
|
231 |
+
$street2 = '';
|
232 |
+
break;
|
233 |
+
case Transsmart_Shipping_Model_Adminhtml_System_Config_Source_Mapping_Street::FULL:
|
234 |
+
$street2 = trim(implode(' ', $address->getStreet()));
|
235 |
+
break;
|
236 |
+
default:
|
237 |
+
$street2 = $address->getStreet($mappingStreet2);
|
238 |
+
}
|
239 |
+
|
240 |
+
// automatic house number detection
|
241 |
+
if ($mappingStreet == $mappingStreetNo) {
|
242 |
+
$streetNo = '';
|
243 |
+
|
244 |
+
if (preg_match('/^(.*) ([0-9]+ .*)$/', $street, $matches)) {
|
245 |
+
$street = $matches[1];
|
246 |
+
$streetNo = $matches[2];
|
247 |
+
}
|
248 |
+
elseif (preg_match('/^(.*) ([0-9]+.*)$/', $street, $matches)) {
|
249 |
+
$street = $matches[1];
|
250 |
+
$streetNo = $matches[2];
|
251 |
+
}
|
252 |
+
elseif (preg_match('/^(.*) ([0-9]+.*)$/', $street, $matches)) {
|
253 |
+
$street = $matches[1];
|
254 |
+
$streetNo = $matches[2];
|
255 |
+
}
|
256 |
+
}
|
257 |
+
}
|
258 |
+
|
259 |
+
// house number cannot be empty
|
260 |
+
if ($streetNo === '') {
|
261 |
+
$streetNo = '.';
|
262 |
+
}
|
263 |
+
|
264 |
+
return array($street, $streetNo, $street2);
|
265 |
+
}
|
266 |
+
|
267 |
+
/**
|
268 |
+
* Export the given shipment to the Transsmart API.
|
269 |
+
*
|
270 |
+
* @param Mage_Sales_Model_Order_Shipment $shipment
|
271 |
+
* @param bool $allowPrint
|
272 |
+
*/
|
273 |
+
public function doExport($shipment, $allowPrint = true)
|
274 |
+
{
|
275 |
+
// is it already exported?
|
276 |
+
if ($shipment->getTranssmartDocumentId()) {
|
277 |
+
return;
|
278 |
+
}
|
279 |
+
|
280 |
+
/** @var Transsmart_Shipping_Model_Carrierprofile $carrierprofile */
|
281 |
+
$carrierprofile = Mage::getModel('transsmart_shipping/carrierprofile')
|
282 |
+
->load($shipment->getTranssmartCarrierprofileId());
|
283 |
+
if (!$carrierprofile->getId()) {
|
284 |
+
return;
|
285 |
+
}
|
286 |
+
|
287 |
+
$store = $shipment->getStore();
|
288 |
+
$address = $shipment->getShippingAddress();
|
289 |
+
$invoiceAddress = $shipment->getBillingAddress();
|
290 |
+
|
291 |
+
// check if the order has a pickup address (location selector is used)
|
292 |
+
$pickupAddress = Mage::helper('transsmart_shipping/pickupaddress')
|
293 |
+
->getPickupAddressFromOrder($shipment->getOrder());
|
294 |
+
$servicePointId = null;
|
295 |
+
if ($pickupAddress) {
|
296 |
+
$address = $pickupAddress;
|
297 |
+
$invoiceAddress = $shipment->getShippingAddress();
|
298 |
+
$servicePointId = $pickupAddress->getTranssmartServicepointId();
|
299 |
+
}
|
300 |
+
|
301 |
+
// determine address name and contact
|
302 |
+
$addressName = $address->getCompany();
|
303 |
+
$addressContact = $address->getName();
|
304 |
+
if ($addressName == '') {
|
305 |
+
$addressName = $addressContact;
|
306 |
+
}
|
307 |
+
|
308 |
+
// determine invoice address name and contact
|
309 |
+
$invoiceAddressName = $invoiceAddress->getCompany();
|
310 |
+
$invoiceAddressContact = $invoiceAddress->getName();
|
311 |
+
if ($invoiceAddressName == '') {
|
312 |
+
$invoiceAddressName = $invoiceAddressContact;
|
313 |
+
}
|
314 |
+
|
315 |
+
// split street fields into street and house number
|
316 |
+
list($addressStreet, $addressStreetNo, $addressStreet2) =
|
317 |
+
$this->_getStreetFields($address, $store);
|
318 |
+
list($invoiceAddressStreet, $invoiceAddressStreetNo, $invoiceAddressStreet2) =
|
319 |
+
$this->_getStreetFields($invoiceAddress, $store);
|
320 |
+
|
321 |
+
/** @var Mage_Core_Helper_String $stringHelper */
|
322 |
+
$stringHelper = Mage::helper('core/string');
|
323 |
+
|
324 |
+
// calculate shipment value and prepare delivery note lines
|
325 |
+
$shipmentValue = 0.0;
|
326 |
+
$deliveryNoteInfoLines = array();
|
327 |
+
/** @var Mage_Sales_Model_Order_Shipment_Item $_item */
|
328 |
+
foreach ($shipment->getAllItems() as $_item) {
|
329 |
+
if ($_item->getOrderItem()->getParentItem()) {
|
330 |
+
continue;
|
331 |
+
}
|
332 |
+
|
333 |
+
$shipmentValue += $_item->getPrice() * $_item->getQty();
|
334 |
+
|
335 |
+
$_line = array(
|
336 |
+
'ArticleId' => $_item->getSku(),
|
337 |
+
'ArticleName' => $stringHelper->substr($_item->getName(), 0, 45),
|
338 |
+
'Description' => $stringHelper->substr($_item->getDescription(), 0, 510),
|
339 |
+
'Price' => $_item->getPrice(),
|
340 |
+
'Currency' => $store->getCurrentCurrencyCode(),
|
341 |
+
'Quantity' => $_item->getQty(),
|
342 |
+
'QuantityBackorder' => floatval($_item->getOrderItem()->getQtyBackordered()),
|
343 |
+
'QuantityOrder' => $_item->getOrderItem()->getQtyOrdered(),
|
344 |
+
'CountryOfOrigin' => Mage::getStoreConfig('shipping/origin/country_id', $store),
|
345 |
+
'ReasonOfExport' => 'Sale',
|
346 |
+
);
|
347 |
+
|
348 |
+
$_additionalFields = array(
|
349 |
+
'Description' => 'description',
|
350 |
+
'CountryOfOrigin' => Mage::getStoreConfig(self::XML_PATH_MAPPING_COUNTRY_OF_ORIGIN, $store),
|
351 |
+
'HSCode' => Mage::getStoreConfig(self::XML_PATH_MAPPING_HS_CODE, $store),
|
352 |
+
'ReasonOfExport' => Mage::getStoreConfig(self::XML_PATH_MAPPING_REASON_OF_EXPORT, $store),
|
353 |
+
);
|
354 |
+
$_product = $_item->getOrderItem()->getProduct();
|
355 |
+
foreach ($_additionalFields as $_field => $_attributeCode) {
|
356 |
+
if (empty($_attributeCode)) {
|
357 |
+
continue;
|
358 |
+
}
|
359 |
+
if ($_attribute = $_product->getResource()->getAttribute($_attributeCode)) {
|
360 |
+
if ($_attribute->getBackendType() == 'int' && $_attribute->getFrontendInput() == 'select') {
|
361 |
+
// dropdown or multiselect field; use the frontend label
|
362 |
+
$_attribute->setStoreId($store->getId());
|
363 |
+
$_value = $_attribute->getFrontend()->getValue($_product);
|
364 |
+
}
|
365 |
+
else {
|
366 |
+
$_value = $_product->getData($_attributeCode);
|
367 |
+
}
|
368 |
+
if ($_value) {
|
369 |
+
$_line[$_field] = $_value;
|
370 |
+
}
|
371 |
+
}
|
372 |
+
}
|
373 |
+
|
374 |
+
$deliveryNoteInfoLines[] = $_line;
|
375 |
+
}
|
376 |
+
|
377 |
+
// prepare the document
|
378 |
+
$document = array(
|
379 |
+
'Reference' => $shipment->getIncrementId(),
|
380 |
+
'CarrierProfileId' => $carrierprofile->getId(),
|
381 |
+
//'CarrierId' => $carrierprofile->getCarrierId(),
|
382 |
+
//'ServiceLevelTimeId' => $carrierprofile->getServicelevelTimeId(),
|
383 |
+
//'ServiceLevelOtherId' => $carrierprofile->getServicelevelOtherId(),
|
384 |
+
'ShipmentLocationId' => $shipment->getTranssmartShipmentlocationId(),
|
385 |
+
'MailTypeId' => $shipment->getTranssmartEmailtypeId(),
|
386 |
+
'IncotermId' => $shipment->getTranssmartIncotermId(),
|
387 |
+
'CostCenterId' => $shipment->getTranssmartCostcenterId(),
|
388 |
+
'RefOrder' => $shipment->getOrder()->getIncrementId(),
|
389 |
+
'RefServicePoint' => $servicePointId,
|
390 |
+
'ShipmentValue' => $shipmentValue,
|
391 |
+
'AddressEmailPickup' => Mage::getStoreConfig('trans_email/ident_general/email', $store),
|
392 |
+
'AddressName' => $addressName,
|
393 |
+
'AddressContact' => $addressContact,
|
394 |
+
'AddressStreet' => $addressStreet,
|
395 |
+
'AddressStreetNo' => $addressStreetNo,
|
396 |
+
'AddressStreet2' => $addressStreet2,
|
397 |
+
'AddressZipcode' => $address->getPostcode(),
|
398 |
+
'AddressCity' => $address->getCity(),
|
399 |
+
'AddressState' => $address->getRegionCode(),
|
400 |
+
'AddressCountry' => $address->getCountry(),
|
401 |
+
'AddressPhone' => $address->getTelephone(),
|
402 |
+
'AddressFax' => $address->getFax(),
|
403 |
+
'AddressEmail' => $shipment->getShippingAddress()->getEmail(),
|
404 |
+
'AddressCustomerNo' => $address->getCustomerId(),
|
405 |
+
'AddressNameInvoice' => $invoiceAddressName,
|
406 |
+
'AddressContactInvoice' => $invoiceAddressContact,
|
407 |
+
'AddressStreetInvoice' => $invoiceAddressStreet,
|
408 |
+
'AddressStreetNoInvoice' => $invoiceAddressStreetNo,
|
409 |
+
'AddressStreet2Invoice' => $invoiceAddressStreet2,
|
410 |
+
'AddressZipcodeInvoice' => $invoiceAddress->getPostcode(),
|
411 |
+
'AddressCityInvoice' => $invoiceAddress->getCity(),
|
412 |
+
'AddressStateInvoice' => $invoiceAddress->getRegionCode(),
|
413 |
+
'AddressCountryInvoice' => $invoiceAddress->getCountry(),
|
414 |
+
'AddressPhoneInvoice' => $invoiceAddress->getTelephone(),
|
415 |
+
'AddressFaxInvoice' => $invoiceAddress->getFax(),
|
416 |
+
'AddressEmailInvoice' => $invoiceAddress->getEmail(),
|
417 |
+
'AddressCustomerNoInvoice' => $invoiceAddress->getCustomerId(),
|
418 |
+
'AddressVatNumberInvoice' => $shipment->getOrder()->getCustomerTaxvat(),
|
419 |
+
'ColliInformation' => unserialize($shipment->getTranssmartPackages()),
|
420 |
+
'DeliveryNoteInfo' => array(
|
421 |
+
array(
|
422 |
+
'DeliveryNoteInfoLines' => $deliveryNoteInfoLines
|
423 |
+
)
|
424 |
+
)
|
425 |
+
);
|
426 |
+
|
427 |
+
// dispatch event so other extensions can update the document
|
428 |
+
$transport = new Varien_Object(array('document' => $document));
|
429 |
+
Mage::dispatchEvent('transsmart_shipping_shipment_export_before', array(
|
430 |
+
'shipment' => $shipment,
|
431 |
+
'transport' => $transport
|
432 |
+
));
|
433 |
+
$document = $transport->getDocument();
|
434 |
+
|
435 |
+
// send the document to Transsmart
|
436 |
+
$response = Mage::helper('transsmart_shipping')->getApiClient()->createDocument($document);
|
437 |
+
|
438 |
+
// save document ID and status into shipment record
|
439 |
+
if (isset($response['Id']) && isset($response['Status'])) {
|
440 |
+
$shipment->setTranssmartDocumentId($response['Id']);
|
441 |
+
$shipment->setTranssmartStatus($response['Status']);
|
442 |
+
|
443 |
+
$shipment->getResource()->saveAttribute($shipment, array(
|
444 |
+
'transsmart_document_id',
|
445 |
+
'transsmart_status'
|
446 |
+
));
|
447 |
+
|
448 |
+
// book and print if flags indicate so
|
449 |
+
$flags = (int)$shipment->getTranssmartFlags();
|
450 |
+
try {
|
451 |
+
if (($flags & Transsmart_Shipping_Helper_Shipment::FLAG_BOOKANDPRINT_ON_CREATE)) {
|
452 |
+
if ($allowPrint) {
|
453 |
+
$this->doBookAndPrint($shipment);
|
454 |
+
}
|
455 |
+
else {
|
456 |
+
$this->doBooking($shipment);
|
457 |
+
}
|
458 |
+
}
|
459 |
+
elseif (($flags & Transsmart_Shipping_Helper_Shipment::FLAG_BOOK_ON_CREATE)) {
|
460 |
+
$this->doBooking($shipment);
|
461 |
+
}
|
462 |
+
}
|
463 |
+
catch (Exception $exception) {
|
464 |
+
Mage::logException($exception);
|
465 |
+
}
|
466 |
+
}
|
467 |
+
}
|
468 |
+
|
469 |
+
/**
|
470 |
+
* Create Transsmart API documents for all shipments that need to be exported.
|
471 |
+
*/
|
472 |
+
public function doMassExport()
|
473 |
+
{
|
474 |
+
/** @var Mage_Sales_Model_Resource_Order_Shipment_Collection $shipmentCollection */
|
475 |
+
$shipmentCollection = Mage::getResourceModel('sales/order_shipment_collection');
|
476 |
+
|
477 |
+
// we need only valid Transsmart shipments without document ID
|
478 |
+
$shipmentCollection
|
479 |
+
->addFieldToFilter('transsmart_carrierprofile_id', array('notnull' => true))
|
480 |
+
->addFieldToFilter('transsmart_shipmentlocation_id', array('notnull' => true))
|
481 |
+
->addFieldToFilter('transsmart_emailtype_id', array('notnull' => true))
|
482 |
+
->addFieldToFilter('transsmart_incoterm_id', array('notnull' => true))
|
483 |
+
->addFieldToFilter('transsmart_costcenter_id', array('notnull' => true))
|
484 |
+
->addFieldToFilter('transsmart_packages', array('notnull' => true))
|
485 |
+
->addFieldToFilter('transsmart_document_id', array('null' => true));
|
486 |
+
|
487 |
+
/** @var Mage_Sales_Model_Order_Shipment $_shipment */
|
488 |
+
foreach ($shipmentCollection as $_shipment) {
|
489 |
+
// set original data manually (because we didn't call object load())
|
490 |
+
$_shipment->setOrigData();
|
491 |
+
|
492 |
+
$this->doExport($_shipment, false);
|
493 |
+
}
|
494 |
+
|
495 |
+
// group documentIds for all book-and-print shipments with the same QZ Host and Selected Printer
|
496 |
+
$groupedCalls = $this->_getMassPrintGroupedCalls($shipmentCollection, true);
|
497 |
+
if (count($groupedCalls) == 0) {
|
498 |
+
return;
|
499 |
+
}
|
500 |
+
|
501 |
+
$idsToSync = array();
|
502 |
+
try {
|
503 |
+
// call Transsmart API doLabel method for each group (doBooking was already called in doExport)
|
504 |
+
foreach ($groupedCalls as $_call) {
|
505 |
+
$idsToSync += $_call['doc_ids'];
|
506 |
+
Mage::helper('transsmart_shipping')->getApiClient()->doLabel(
|
507 |
+
$_call['doc_ids'],
|
508 |
+
Mage::getStoreConfig(Transsmart_Shipping_Helper_Data::XML_PATH_CONNECTION_USERNAME, 0),
|
509 |
+
false,
|
510 |
+
false,
|
511 |
+
$_call['qz_host'],
|
512 |
+
$_call['selected_printer']
|
513 |
+
);
|
514 |
+
}
|
515 |
+
}
|
516 |
+
catch (Exception $exception) {
|
517 |
+
$this->_massSyncDocuments($shipmentCollection, $idsToSync);
|
518 |
+
throw $exception;
|
519 |
+
}
|
520 |
+
$this->_massSyncDocuments($shipmentCollection, $idsToSync);
|
521 |
+
}
|
522 |
+
|
523 |
+
/**
|
524 |
+
* Call doBookAndPrint for a Transsmart shipment and process the response. Returns TRUE if successful.
|
525 |
+
*
|
526 |
+
* @param Mage_Sales_Model_Order_Shipment $shipment
|
527 |
+
* @return bool
|
528 |
+
* @throws Exception
|
529 |
+
*/
|
530 |
+
public function doBookAndPrint($shipment)
|
531 |
+
{
|
532 |
+
if (!$shipment->getTranssmartDocumentId()) {
|
533 |
+
Mage::throwException($this->__('Transsmart document ID is not known.'));
|
534 |
+
}
|
535 |
+
|
536 |
+
try {
|
537 |
+
// call Transsmart API doBookAndPrint method
|
538 |
+
Mage::helper('transsmart_shipping')->getApiClient()->doBookAndPrint(
|
539 |
+
$shipment->getTranssmartDocumentId(),
|
540 |
+
Mage::getStoreConfig(Transsmart_Shipping_Helper_Data::XML_PATH_CONNECTION_USERNAME, 0),
|
541 |
+
false,
|
542 |
+
Mage::getStoreConfig(
|
543 |
+
Transsmart_Shipping_Helper_Data::XML_PATH_PRINT_QZHOST,
|
544 |
+
$shipment->getStore()
|
545 |
+
),
|
546 |
+
Mage::getStoreConfig(
|
547 |
+
Transsmart_Shipping_Helper_Data::XML_PATH_PRINT_SELECTEDPRINTER,
|
548 |
+
$shipment->getStore()
|
549 |
+
)
|
550 |
+
);
|
551 |
+
}
|
552 |
+
catch (Exception $exception) {
|
553 |
+
Mage::getSingleton('transsmart_shipping/sync')->syncShipment($shipment);
|
554 |
+
throw $exception;
|
555 |
+
}
|
556 |
+
Mage::getSingleton('transsmart_shipping/sync')->syncShipment($shipment);
|
557 |
+
|
558 |
+
return true;
|
559 |
+
}
|
560 |
+
|
561 |
+
/**
|
562 |
+
* Call doBooking for a Transsmart shipment and process the response. Returns TRUE if successful.
|
563 |
+
*
|
564 |
+
* @param Mage_Sales_Model_Order_Shipment $shipment
|
565 |
+
* @return bool
|
566 |
+
* @throws Exception
|
567 |
+
*/
|
568 |
+
public function doBooking($shipment)
|
569 |
+
{
|
570 |
+
if (!$shipment->getTranssmartDocumentId()) {
|
571 |
+
Mage::throwException($this->__('Transsmart document ID is not known.'));
|
572 |
+
}
|
573 |
+
|
574 |
+
try {
|
575 |
+
// call Transsmart API doBooking method
|
576 |
+
Mage::helper('transsmart_shipping')->getApiClient()->doBooking(
|
577 |
+
$shipment->getTranssmartDocumentId()
|
578 |
+
);
|
579 |
+
}
|
580 |
+
catch (Exception $exception) {
|
581 |
+
Mage::getSingleton('transsmart_shipping/sync')->syncShipment($shipment);
|
582 |
+
throw $exception;
|
583 |
+
}
|
584 |
+
Mage::getSingleton('transsmart_shipping/sync')->syncShipment($shipment);
|
585 |
+
|
586 |
+
return true;
|
587 |
+
}
|
588 |
+
|
589 |
+
/**
|
590 |
+
* Call doLabel for a Transsmart shipment.
|
591 |
+
*
|
592 |
+
* @param Mage_Sales_Model_Order_Shipment $shipment
|
593 |
+
* @return bool
|
594 |
+
* @throws Exception
|
595 |
+
*/
|
596 |
+
public function doLabel($shipment)
|
597 |
+
{
|
598 |
+
if (!$shipment->getTranssmartDocumentId()) {
|
599 |
+
Mage::throwException($this->__('Transsmart document ID is not known.'));
|
600 |
+
}
|
601 |
+
|
602 |
+
try {
|
603 |
+
// call Transsmart API doLabel method
|
604 |
+
Mage::helper('transsmart_shipping')->getApiClient()->doLabel(
|
605 |
+
$shipment->getTranssmartDocumentId(),
|
606 |
+
Mage::getStoreConfig(Transsmart_Shipping_Helper_Data::XML_PATH_CONNECTION_USERNAME, 0),
|
607 |
+
false,
|
608 |
+
false,
|
609 |
+
Mage::getStoreConfig(
|
610 |
+
Transsmart_Shipping_Helper_Data::XML_PATH_PRINT_QZHOST,
|
611 |
+
$shipment->getStore()
|
612 |
+
),
|
613 |
+
Mage::getStoreConfig(
|
614 |
+
Transsmart_Shipping_Helper_Data::XML_PATH_PRINT_SELECTEDPRINTER,
|
615 |
+
$shipment->getStore()
|
616 |
+
)
|
617 |
+
);
|
618 |
+
}
|
619 |
+
catch (Exception $exception) {
|
620 |
+
Mage::getSingleton('transsmart_shipping/sync')->syncShipment($shipment);
|
621 |
+
throw $exception;
|
622 |
+
}
|
623 |
+
Mage::getSingleton('transsmart_shipping/sync')->syncShipment($shipment);
|
624 |
+
|
625 |
+
return true;
|
626 |
+
}
|
627 |
+
|
628 |
+
/**
|
629 |
+
* Group documentIds for shipments with the same QZ Host and Selected Printer.
|
630 |
+
* Used by doMassBookAndPrint and doMassLabel
|
631 |
+
*
|
632 |
+
* @param Mage_Sales_Model_Resource_Order_Shipment_Collection $shipmentCollection
|
633 |
+
* @param bool $onlyWithBookAndPrintFlag
|
634 |
+
* @return array
|
635 |
+
*/
|
636 |
+
protected function _getMassPrintGroupedCalls($shipmentCollection, $onlyWithBookAndPrintFlag)
|
637 |
+
{
|
638 |
+
// group documentIds for shipments with the same QZ Host and Selected Printer.
|
639 |
+
$groupedCalls = array();
|
640 |
+
foreach ($shipmentCollection as $_shipment) {
|
641 |
+
if (!$_shipment->getTranssmartDocumentId()) {
|
642 |
+
continue;
|
643 |
+
}
|
644 |
+
|
645 |
+
// do we need only shipments with the FLAG_BOOKANDPRINT_ON_CREATE flag?
|
646 |
+
if ($onlyWithBookAndPrintFlag) {
|
647 |
+
$_flags = (int)$_shipment->getTranssmartFlags();
|
648 |
+
if (($_flags & Transsmart_Shipping_Helper_Shipment::FLAG_BOOKANDPRINT_ON_CREATE) == 0) {
|
649 |
+
continue;
|
650 |
+
}
|
651 |
+
}
|
652 |
+
|
653 |
+
$_qzHost = Mage::getStoreConfig(
|
654 |
+
Transsmart_Shipping_Helper_Data::XML_PATH_PRINT_QZHOST,
|
655 |
+
$_shipment->getStore()
|
656 |
+
);
|
657 |
+
$_selectedPrinter = Mage::getStoreConfig(
|
658 |
+
Transsmart_Shipping_Helper_Data::XML_PATH_PRINT_SELECTEDPRINTER,
|
659 |
+
$_shipment->getStore()
|
660 |
+
);
|
661 |
+
|
662 |
+
$_groupKey = $_qzHost . ':' . $_selectedPrinter;
|
663 |
+
if (!isset($groupedCalls[$_groupKey])) {
|
664 |
+
$groupedCalls[$_groupKey] = array(
|
665 |
+
'qz_host' => $_qzHost,
|
666 |
+
'selected_printer' => $_selectedPrinter,
|
667 |
+
'doc_ids' => array()
|
668 |
+
);
|
669 |
+
}
|
670 |
+
|
671 |
+
$groupedCalls[$_groupKey]['doc_ids'][] = $_shipment->getTranssmartDocumentId();
|
672 |
+
}
|
673 |
+
|
674 |
+
return $groupedCalls;
|
675 |
+
}
|
676 |
+
|
677 |
+
/**
|
678 |
+
* Synchronize status for the given shipments. If idsToSync array is given, only those document IDs will be synced.
|
679 |
+
* Used by doMassBookAndPrint and doMassLabel
|
680 |
+
*
|
681 |
+
* @param Mage_Sales_Model_Resource_Order_Shipment_Collection $shipmentCollection
|
682 |
+
* @param array|null $idsToSync
|
683 |
+
*/
|
684 |
+
protected function _massSyncDocuments($shipmentCollection, $idsToSync = null)
|
685 |
+
{
|
686 |
+
if (!is_null($idsToSync) && count($idsToSync) == 0) {
|
687 |
+
return;
|
688 |
+
}
|
689 |
+
|
690 |
+
foreach ($shipmentCollection as $_shipment) {
|
691 |
+
$_documentId = $_shipment->getTranssmartDocumentId();
|
692 |
+
if (!$_documentId || (!is_null($idsToSync) && !in_array($_documentId, $idsToSync))) {
|
693 |
+
continue;
|
694 |
+
}
|
695 |
+
|
696 |
+
try {
|
697 |
+
Mage::getSingleton('transsmart_shipping/sync')->syncShipment($_shipment);
|
698 |
+
}
|
699 |
+
catch (Mage_Core_Exception $exception) {
|
700 |
+
Mage::logException($exception);
|
701 |
+
}
|
702 |
+
}
|
703 |
+
}
|
704 |
+
|
705 |
+
/**
|
706 |
+
* Call doBookAndPrint for multiple Transsmart shipments at once.
|
707 |
+
*
|
708 |
+
* @param Mage_Sales_Model_Resource_Order_Shipment_Collection $shipmentCollection
|
709 |
+
* @return bool
|
710 |
+
* @throws Exception
|
711 |
+
*/
|
712 |
+
public function doMassBookAndPrint($shipmentCollection)
|
713 |
+
{
|
714 |
+
// group documentIds for shipments with the same QZ Host and Selected Printer.
|
715 |
+
$groupedCalls = $this->_getMassPrintGroupedCalls($shipmentCollection, false);
|
716 |
+
if (count($groupedCalls) == 0) {
|
717 |
+
return;
|
718 |
+
}
|
719 |
+
|
720 |
+
$idsToSync = array();
|
721 |
+
try {
|
722 |
+
// call Transsmart API doLabel method for each group
|
723 |
+
foreach ($groupedCalls as $_call) {
|
724 |
+
$idsToSync += $_call['doc_ids'];
|
725 |
+
Mage::helper('transsmart_shipping')->getApiClient()->doBookAndPrint(
|
726 |
+
$_call['doc_ids'],
|
727 |
+
Mage::getStoreConfig(Transsmart_Shipping_Helper_Data::XML_PATH_CONNECTION_USERNAME, 0),
|
728 |
+
false,
|
729 |
+
$_call['qz_host'],
|
730 |
+
$_call['selected_printer']
|
731 |
+
);
|
732 |
+
}
|
733 |
+
}
|
734 |
+
catch (Exception $exception) {
|
735 |
+
$this->_massSyncDocuments($shipmentCollection, $idsToSync);
|
736 |
+
throw $exception;
|
737 |
+
}
|
738 |
+
$this->_massSyncDocuments($shipmentCollection, $idsToSync);
|
739 |
+
|
740 |
+
return true;
|
741 |
+
}
|
742 |
+
|
743 |
+
/**
|
744 |
+
* Call doLabel for multiple Transsmart shipments at once.
|
745 |
+
*
|
746 |
+
* @param Mage_Sales_Model_Resource_Order_Shipment_Collection $shipmentCollection
|
747 |
+
* @return bool
|
748 |
+
* @throws Exception
|
749 |
+
*/
|
750 |
+
public function doMassLabel($shipmentCollection)
|
751 |
+
{
|
752 |
+
// group documentIds for shipments with the same QZ Host and Selected Printer.
|
753 |
+
$groupedCalls = $this->_getMassPrintGroupedCalls($shipmentCollection, false);
|
754 |
+
if (count($groupedCalls) == 0) {
|
755 |
+
return;
|
756 |
+
}
|
757 |
+
|
758 |
+
$idsToSync = array();
|
759 |
+
try {
|
760 |
+
// call Transsmart API doLabel method for each group
|
761 |
+
foreach ($groupedCalls as $_call) {
|
762 |
+
$idsToSync += $_call['doc_ids'];
|
763 |
+
Mage::helper('transsmart_shipping')->getApiClient()->doLabel(
|
764 |
+
$_call['doc_ids'],
|
765 |
+
Mage::getStoreConfig(Transsmart_Shipping_Helper_Data::XML_PATH_CONNECTION_USERNAME, 0),
|
766 |
+
false,
|
767 |
+
false,
|
768 |
+
$_call['qz_host'],
|
769 |
+
$_call['selected_printer']
|
770 |
+
);
|
771 |
+
}
|
772 |
+
}
|
773 |
+
catch (Exception $exception) {
|
774 |
+
$this->_massSyncDocuments($shipmentCollection, $idsToSync);
|
775 |
+
throw $exception;
|
776 |
+
}
|
777 |
+
$this->_massSyncDocuments($shipmentCollection, $idsToSync);
|
778 |
+
|
779 |
+
return true;
|
780 |
+
}
|
781 |
+
}
|
app/code/community/Transsmart/Shipping/etc/config.xml
CHANGED
@@ -9,7 +9,7 @@
|
|
9 |
<config>
|
10 |
<modules>
|
11 |
<Transsmart_Shipping>
|
12 |
-
<version>1.0.
|
13 |
</Transsmart_Shipping>
|
14 |
</modules>
|
15 |
<global>
|
9 |
<config>
|
10 |
<modules>
|
11 |
<Transsmart_Shipping>
|
12 |
+
<version>1.0.2</version>
|
13 |
</Transsmart_Shipping>
|
14 |
</modules>
|
15 |
<global>
|
package.xml
CHANGED
@@ -1,18 +1,18 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Transsmart_Shipping</name>
|
4 |
-
<version>1.0.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL 3.0)</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Transsmart Magento connector</summary>
|
10 |
<description>Integrates Transsmart Shipping into Magento.</description>
|
11 |
-
<notes>1.0.
|
12 |
<authors><author><name>Techtwo Webdevelopment B.V.</name><user>techtwo</user><email>info@techtwo.nl</email></author><author><name>Bastiaan Heeren</name><user>techtwobastiaan</user><email>bastiaan@techtwo.nl</email></author></authors>
|
13 |
-
<date>2016-01-
|
14 |
-
<time>
|
15 |
-
<contents><target name="magecommunity"><dir name="Transsmart"><dir name="Shipping"><dir name="Block"><dir name="Adminhtml"><dir name="Sales"><dir name="Order"><file name="Grid.php" hash="bafce0b64ee9545b3a355df1b0b8e18d"/><dir name="Shipment"><dir name="Create"><file name="Detail.php" hash="b8b8b391b781f5d9de8b2578ad84d540"/><file name="Package.php" hash="7054391262f4bcc78d77bbd8d7131d61"/></dir><dir name="Masscreate"><file name="Form.php" hash="1bef6372fca204ba939fca5a02f3fa3d"/></dir><file name="Masscreate.php" hash="244adc0427800e5df7ea050947cff0d5"/><dir name="View"><file name="Detail.php" hash="0c5a780a5a4095164b02b06a5cd5ec16"/><file name="Package.php" hash="ccdda1fc1a9710ff1d317575fd53baa7"/></dir></dir><dir name="View"><dir name="Tab"><file name="Shipments.php" hash="e8b2006ed7c6541ea61c309123457c7c"/></dir></dir></dir><dir name="Shipment"><dir name="Grid"><dir name="Renderer"><file name="Link.php" hash="f42b111af0b6fa7dbdd171b9ef9f5655"/></dir></dir><file name="Grid.php" hash="931e2c538a9f61c62fc838d441419c48"/></dir></dir><dir name="Shipping"><dir name="Location"><file name="Info.php" hash="fa01c870d4a5cd521ed312a447f10dda"/></dir></dir><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Fetch.php" hash="43361767a4367c59fea55c23bb52aaed"/></dir><dir name="Fieldset"><dir name="Carrierprofile"><file name="Header.php" hash="01bda5320d4fcb5493f7fc2fd7ec01ac"/></dir><file name="Carrierprofile.php" hash="a75608f6b98458f1797d41d24a52030b"/><file name="Versioninfo.php" hash="84f740e55f0abc8fda7d95d26a638214"/></dir></dir></dir></dir></dir><dir name="Location"><file name="Selector.php" hash="f13d261827cb806fcc14c73058128653"/></dir></dir><dir name="Helper"><file name="Data.php" hash="32590b34298ed7ee39ebc011485e970e"/><file name="Location.php" hash="59dd6de96da501192e995f3688cba950"/><file name="Pickupaddress.php" hash="c71ad4ae7e2c4536a2d57c18d57b8919"/><file name="Shipment.php" hash="521150f7ac5e16f23ccd6939bec2bea5"/></dir><dir name="Model"><file name="Abstract.php" hash="5b8973d5f3ce40cd641e9f16cdcd6620"/><dir name="Adminhtml"><file name="Observer.php" hash="3664f0727b0159ccdeff1cf256b5fccf"/><dir name="System"><dir name="Config"><dir name="Backend"><file name="Localized.php" hash="3f7ee8815b1f71168ba3fe2f2eb6389f"/></dir><dir name="Source"><dir name="Basedata"><file name="Abstract.php" hash="ac0c0632d16278357cc4128b3a5ef9a8"/><file name="Carrierprofile.php" hash="f01d6e81905f9481a8906253ccfc24e3"/><file name="Costcenter.php" hash="4dabd6942ab4e27e8c7e7032e3d01ca9"/><file name="Emailtype.php" hash="5d5d02c41970795f42e86ec4184a1072"/><file name="Incoterm.php" hash="8724e4b8bd9267fe843d62ffaa939b1e"/><file name="Packagetype.php" hash="6277448d89f3eeaae2dd15dd8a318af1"/><file name="Shipmentlocation.php" hash="f025e24746908e9c5aea82109f3b79fa"/></dir><file name="Environment.php" hash="4d011d8f728c3582022178da0c26ea66"/><dir name="Mapping"><file name="Attribute.php" hash="f2302357356f4c4b6f43cc63c408722a"/><file name="Street.php" hash="e42fa0ede4bc76876cf0c1f783189e87"/></dir><file name="Method.php" hash="672e247ef3764ff9294607102b152c78"/></dir></dir></dir></dir><file name="Carrier.php" hash="9aac846543c6b82cd3a06f9e307593ae"/><file name="Carrierprofile.php" hash="fb3bc266d34c00dbc10b76e89f6de20f"/><file name="Client.php" hash="9dbd3fc487adedecfc28d84eb7137842"/><file name="Costcenter.php" hash="bf6a9a5a95fa7cf1e0a609c6e0cf6365"/><file name="Emailtype.php" hash="b7128a27c6937c63f9a8ba14510dad13"/><file name="Incoterm.php" hash="8ebd437537680f375568f7873607ef87"/><file name="Observer.php" hash="e42f9c5c5a241e9ed8fef967fe194dee"/><file name="Packagetype.php" hash="d9f5012184c0e52429be7396e4081c69"/><dir name="Resource"><dir name="Carrier"><file name="Collection.php" hash="aabffe27624593ec59d489aaea12319c"/></dir><file name="Carrier.php" hash="57b812414155d31fe39977be1483ab1e"/><dir name="Carrierprofile"><file name="Collection.php" hash="59c40952ae124b257a30eebd72651df7"/></dir><file name="Carrierprofile.php" hash="53d9e49e8cf00b080f80489a476e43ef"/><dir name="Costcenter"><file name="Collection.php" hash="e338f05492a12988d3066bbc2f7569fe"/></dir><file name="Costcenter.php" hash="338db8721bcd09dabbece8e9c862ac92"/><dir name="Emailtype"><file name="Collection.php" hash="fe4ee29a8af109be50e7d928a8d5a9c3"/></dir><file name="Emailtype.php" hash="27b7d676aabf4e16891ccadee409aeba"/><dir name="Incoterm"><file name="Collection.php" hash="7490a144291e1b2a81f5c243173627e3"/></dir><file name="Incoterm.php" hash="5076d4828c71f71178d7d33213d2e735"/><dir name="Packagetype"><file name="Collection.php" hash="f20c13999570a2338feaf1f8af72c85b"/></dir><file name="Packagetype.php" hash="b8de7857c71a26be8915a67c38a1d347"/><dir name="Servicelevel"><dir name="Other"><file name="Collection.php" hash="c48542bc38fc957c97b90bcc2d0d0773"/></dir><file name="Other.php" hash="df8672bc7a5383a6a985703ece13041d"/><dir name="Time"><file name="Collection.php" hash="ee5e6e59deed414768205cc695b4cda3"/></dir><file name="Time.php" hash="2fc0d74b96cf8b7fe38593d9bdaf1a82"/></dir><dir name="Shipmentlocation"><file name="Collection.php" hash="c284bdadf29cf34160e7f8af189f5a43"/></dir><file name="Shipmentlocation.php" hash="99792ed958bffa3d333453888be4b1c4"/><dir name="Sync"><file name="Collection.php" hash="5b837d6fc0fde6c0a7ebef66132d7bcd"/></dir><file name="Sync.php" hash="a538626ff74fa096eb20c95ccf936794"/></dir><dir name="Sales"><dir name="Resource"><file name="Order.php" hash="f078ab890e8a294a75183bcbbb667f2e"/></dir></dir><dir name="Servicelevel"><file name="Other.php" hash="cf779fc0762b7e34974605256d941993"/><file name="Time.php" hash="60188779fd9cfb1e237fd915090acb53"/></dir><file name="Shipmentlocation.php" hash="38147d641e55c3b68a9cecd123081993"/><dir name="Shipping"><dir name="Carrier"><file name="Abstract.php" hash="65c5fc48da295a19c90153ac693c523f"/><file name="Delivery.php" hash="5c2faa12f798aea53343a657bd7c7010"/><file name="Pickup.php" hash="436630941a50a968cf54e929e25fd0c3"/></dir></dir><file name="Sync.php" hash="2343389f501ff24a846f2b4c6311a822"/></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Transsmart"><dir name="Shipping"><file name="LocationController.php" hash="9ed198c21dd4569cc604c19d6865a74b"/><file name="ShipmentController.php" hash="67e443bfcdc4afc3478dcf3bc80282e7"/></dir></dir><file name="TranssmartController.php" hash="b5b688249bce5a74bef95319674e5698"/></dir><file name="LocationController.php" hash="f39c3a08069cefc6169c9eed12a97f63"/></dir><dir name="etc"><file name="adminhtml.xml" hash="07f3353cf1d7275e528a18b9883b206f"/><file name="config.xml" hash="cda2f4323a1d812080821a57f9f8c9a6"/><file name="jstranslator.xml" hash="b50cf9cd74e37d6e34b3e360f3353313"/><file name="system.xml" hash="913acd885f5c4a1d33182f022720fe10"/></dir><dir name="sql"><dir name="transsmart_shipping_setup"><file name="install-1.0.0.php" hash="242d4b2aff6d23151dcca7c9cadab352"/></dir></dir><dir name="ssl"><file name="CARoot.crt" hash="f85d1ff17b0079709f131f3ce3f288d2"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="layout"><file name="transsmart_shipping.xml" hash="c0578eb781adc2df96e79fe776e387da"/></dir><dir name="template"><dir name="transsmart"><dir name="shipping"><dir name="location"><file name="info.phtml" hash="74ce67c6f39c308995a478279ca1e1bc"/><file name="selector.phtml" hash="841e1d59d042c2b53c622593150675c6"/></dir><dir name="sales"><dir name="order"><dir name="address"><dir name="form"><file name="container.phtml" hash="57a3f3de61e96127659dbf53952a0b33"/></dir></dir><dir name="shipment"><dir name="address"><dir name="form"><file name="container.phtml" hash="9763785687d9f4dfa03d6d1887a3f867"/></dir></dir><dir name="create"><file name="action.phtml" hash="164c1c632265816113e8eb172762871c"/><file name="detail.phtml" hash="c12734fe34fb4a526eb29075d2b80120"/><file name="package.phtml" hash="a39776c6e5f95112e10b9dbc9e29bd14"/></dir><dir name="masscreate"><file name="form.phtml" hash="5e2a281942e88379fa28698a85e519ec"/></dir><dir name="view"><file name="detail.phtml" hash="e901e78ba712f7e99b82409a07c9dedd"/><file name="package.phtml" hash="4ba3f81ed371d87542102974566cb522"/></dir></dir></dir></dir><dir name="system"><dir name="config"><dir name="form"><dir name="field"><file name="fetch.phtml" hash="bf8377c0df88e37305d0d39b5ad72101"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="transsmart_shipping.xml" hash="99c0e35e1ef97c0251485fee9b39297e"/></dir><dir name="template"><dir name="transsmart"><dir name="shipping"><dir name="location"><file name="selector.phtml" hash="25000d2769c4e282cdb07dbdc6cb1722"/></dir><dir name="onepage"><dir name="progress"><file name="pickup.phtml" hash="e3874f42cb1d4a9629069d50c39f338e"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Transsmart_Shipping.xml" hash="1f526fc89db267b44b7425e2ff645a68"/></dir></target><target name="magelocale"><dir><dir name="nl_NL"><file name="Transsmart_Shipping.csv" hash="759cb6f310ac469a52513c7eede0ce54"/></dir></dir></target><target name="mageweb"><dir name="js"><dir name="transsmart"><dir name="shipping"><dir name="admin"><file name="pickup_selector.js" hash="7da3ddbbd8e5e4adc4a134faaa7fee0b"/></dir><file name="base64.js" hash="795b1ac117d08652a3a43552c83332ac"/><file name="logger.js" hash="b852d48e077a6114ffe56bd647d1ea5c"/><file name="pickup_selector.js" hash="f01e4051c39218c8354a7f28ed1638ed"/></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="transsmart"><dir name="shipping"><dir name="images"><file name="arrow.png" hash="5b0966d990b40b3510cd2bb57081812d"/><file name="checkmark.png" hash="e5cf08c5943037b8ccc3a5449febdb7b"/><file name="close-btn.png" hash="975d2b3ee2879d4e4b812df8351ccf05"/><file name="info-icon.png" hash="a6baeffe65721d6995f8f06b1669a0ad"/><file name="loader.gif" hash="c5cd7f5300576ab4c88202b42f6ded62"/><file name="radio.png" hash="f149b9aa48f1c3a9da34173c40c882dc"/></dir><file name="pickup_selector.css" hash="9e4b6c280cfd0e2dc6d2d05714b94073"/><file name="styles.css" hash="d61eebd814903f153eb2210bf5f27c5f"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="transsmart"><dir name="shipping"><dir name="images"><file name="arrow.png" hash="5b0966d990b40b3510cd2bb57081812d"/><file name="close-btn.png" hash="975d2b3ee2879d4e4b812df8351ccf05"/><file name="info-icon.png" hash="a6baeffe65721d6995f8f06b1669a0ad"/><file name="loader.gif" hash="c5cd7f5300576ab4c88202b42f6ded62"/><file name="radio.png" hash="f149b9aa48f1c3a9da34173c40c882dc"/></dir><file name="pickup_selector.css" hash="9e4b6c280cfd0e2dc6d2d05714b94073"/></dir></dir></dir></dir></dir></target></contents>
|
16 |
<compatible/>
|
17 |
<dependencies><required><php><min>5.3.29</min><max>5.9.9</max></php><extension><name>curl</name><min/><max/></extension></required></dependencies>
|
18 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Transsmart_Shipping</name>
|
4 |
+
<version>1.0.2</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL 3.0)</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Transsmart Magento connector</summary>
|
10 |
<description>Integrates Transsmart Shipping into Magento.</description>
|
11 |
+
<notes>1.0.2</notes>
|
12 |
<authors><author><name>Techtwo Webdevelopment B.V.</name><user>techtwo</user><email>info@techtwo.nl</email></author><author><name>Bastiaan Heeren</name><user>techtwobastiaan</user><email>bastiaan@techtwo.nl</email></author></authors>
|
13 |
+
<date>2016-01-22</date>
|
14 |
+
<time>09:43:17</time>
|
15 |
+
<contents><target name="magecommunity"><dir name="Transsmart"><dir name="Shipping"><dir name="Block"><dir name="Adminhtml"><dir name="Sales"><dir name="Order"><file name="Grid.php" hash="bafce0b64ee9545b3a355df1b0b8e18d"/><dir name="Shipment"><dir name="Create"><file name="Detail.php" hash="b8b8b391b781f5d9de8b2578ad84d540"/><file name="Package.php" hash="7054391262f4bcc78d77bbd8d7131d61"/></dir><dir name="Masscreate"><file name="Form.php" hash="1bef6372fca204ba939fca5a02f3fa3d"/></dir><file name="Masscreate.php" hash="244adc0427800e5df7ea050947cff0d5"/><dir name="View"><file name="Detail.php" hash="0c5a780a5a4095164b02b06a5cd5ec16"/><file name="Package.php" hash="ccdda1fc1a9710ff1d317575fd53baa7"/></dir></dir><dir name="View"><dir name="Tab"><file name="Shipments.php" hash="e8b2006ed7c6541ea61c309123457c7c"/></dir></dir></dir><dir name="Shipment"><dir name="Grid"><dir name="Renderer"><file name="Link.php" hash="f42b111af0b6fa7dbdd171b9ef9f5655"/></dir></dir><file name="Grid.php" hash="931e2c538a9f61c62fc838d441419c48"/></dir></dir><dir name="Shipping"><dir name="Location"><file name="Info.php" hash="fa01c870d4a5cd521ed312a447f10dda"/></dir></dir><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Fetch.php" hash="43361767a4367c59fea55c23bb52aaed"/></dir><dir name="Fieldset"><dir name="Carrierprofile"><file name="Header.php" hash="01bda5320d4fcb5493f7fc2fd7ec01ac"/></dir><file name="Carrierprofile.php" hash="a75608f6b98458f1797d41d24a52030b"/><file name="Versioninfo.php" hash="84f740e55f0abc8fda7d95d26a638214"/></dir></dir></dir></dir></dir><dir name="Location"><file name="Selector.php" hash="f13d261827cb806fcc14c73058128653"/></dir></dir><dir name="Helper"><file name="Data.php" hash="32590b34298ed7ee39ebc011485e970e"/><file name="Location.php" hash="59dd6de96da501192e995f3688cba950"/><file name="Pickupaddress.php" hash="c71ad4ae7e2c4536a2d57c18d57b8919"/><file name="Shipment.php" hash="c2e09ac937b0187499a085ab75f4cc74"/></dir><dir name="Model"><file name="Abstract.php" hash="5b8973d5f3ce40cd641e9f16cdcd6620"/><dir name="Adminhtml"><file name="Observer.php" hash="3664f0727b0159ccdeff1cf256b5fccf"/><dir name="System"><dir name="Config"><dir name="Backend"><file name="Localized.php" hash="3f7ee8815b1f71168ba3fe2f2eb6389f"/></dir><dir name="Source"><dir name="Basedata"><file name="Abstract.php" hash="ac0c0632d16278357cc4128b3a5ef9a8"/><file name="Carrierprofile.php" hash="f01d6e81905f9481a8906253ccfc24e3"/><file name="Costcenter.php" hash="4dabd6942ab4e27e8c7e7032e3d01ca9"/><file name="Emailtype.php" hash="5d5d02c41970795f42e86ec4184a1072"/><file name="Incoterm.php" hash="8724e4b8bd9267fe843d62ffaa939b1e"/><file name="Packagetype.php" hash="6277448d89f3eeaae2dd15dd8a318af1"/><file name="Shipmentlocation.php" hash="f025e24746908e9c5aea82109f3b79fa"/></dir><file name="Environment.php" hash="4d011d8f728c3582022178da0c26ea66"/><dir name="Mapping"><file name="Attribute.php" hash="f2302357356f4c4b6f43cc63c408722a"/><file name="Street.php" hash="e42fa0ede4bc76876cf0c1f783189e87"/></dir><file name="Method.php" hash="672e247ef3764ff9294607102b152c78"/></dir></dir></dir></dir><file name="Carrier.php" hash="9aac846543c6b82cd3a06f9e307593ae"/><file name="Carrierprofile.php" hash="fb3bc266d34c00dbc10b76e89f6de20f"/><file name="Client.php" hash="9dbd3fc487adedecfc28d84eb7137842"/><file name="Costcenter.php" hash="bf6a9a5a95fa7cf1e0a609c6e0cf6365"/><file name="Emailtype.php" hash="b7128a27c6937c63f9a8ba14510dad13"/><file name="Incoterm.php" hash="8ebd437537680f375568f7873607ef87"/><file name="Observer.php" hash="e42f9c5c5a241e9ed8fef967fe194dee"/><file name="Packagetype.php" hash="d9f5012184c0e52429be7396e4081c69"/><dir name="Resource"><dir name="Carrier"><file name="Collection.php" hash="aabffe27624593ec59d489aaea12319c"/></dir><file name="Carrier.php" hash="57b812414155d31fe39977be1483ab1e"/><dir name="Carrierprofile"><file name="Collection.php" hash="59c40952ae124b257a30eebd72651df7"/></dir><file name="Carrierprofile.php" hash="53d9e49e8cf00b080f80489a476e43ef"/><dir name="Costcenter"><file name="Collection.php" hash="e338f05492a12988d3066bbc2f7569fe"/></dir><file name="Costcenter.php" hash="338db8721bcd09dabbece8e9c862ac92"/><dir name="Emailtype"><file name="Collection.php" hash="fe4ee29a8af109be50e7d928a8d5a9c3"/></dir><file name="Emailtype.php" hash="27b7d676aabf4e16891ccadee409aeba"/><dir name="Incoterm"><file name="Collection.php" hash="7490a144291e1b2a81f5c243173627e3"/></dir><file name="Incoterm.php" hash="5076d4828c71f71178d7d33213d2e735"/><dir name="Packagetype"><file name="Collection.php" hash="f20c13999570a2338feaf1f8af72c85b"/></dir><file name="Packagetype.php" hash="b8de7857c71a26be8915a67c38a1d347"/><dir name="Servicelevel"><dir name="Other"><file name="Collection.php" hash="c48542bc38fc957c97b90bcc2d0d0773"/></dir><file name="Other.php" hash="df8672bc7a5383a6a985703ece13041d"/><dir name="Time"><file name="Collection.php" hash="ee5e6e59deed414768205cc695b4cda3"/></dir><file name="Time.php" hash="2fc0d74b96cf8b7fe38593d9bdaf1a82"/></dir><dir name="Shipmentlocation"><file name="Collection.php" hash="c284bdadf29cf34160e7f8af189f5a43"/></dir><file name="Shipmentlocation.php" hash="99792ed958bffa3d333453888be4b1c4"/><dir name="Sync"><file name="Collection.php" hash="5b837d6fc0fde6c0a7ebef66132d7bcd"/></dir><file name="Sync.php" hash="a538626ff74fa096eb20c95ccf936794"/></dir><dir name="Sales"><dir name="Resource"><file name="Order.php" hash="f078ab890e8a294a75183bcbbb667f2e"/></dir></dir><dir name="Servicelevel"><file name="Other.php" hash="cf779fc0762b7e34974605256d941993"/><file name="Time.php" hash="60188779fd9cfb1e237fd915090acb53"/></dir><file name="Shipmentlocation.php" hash="38147d641e55c3b68a9cecd123081993"/><dir name="Shipping"><dir name="Carrier"><file name="Abstract.php" hash="65c5fc48da295a19c90153ac693c523f"/><file name="Delivery.php" hash="5c2faa12f798aea53343a657bd7c7010"/><file name="Pickup.php" hash="436630941a50a968cf54e929e25fd0c3"/></dir></dir><file name="Sync.php" hash="2343389f501ff24a846f2b4c6311a822"/></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Transsmart"><dir name="Shipping"><file name="LocationController.php" hash="9ed198c21dd4569cc604c19d6865a74b"/><file name="ShipmentController.php" hash="67e443bfcdc4afc3478dcf3bc80282e7"/></dir></dir><file name="TranssmartController.php" hash="b5b688249bce5a74bef95319674e5698"/></dir><file name="LocationController.php" hash="f39c3a08069cefc6169c9eed12a97f63"/></dir><dir name="etc"><file name="adminhtml.xml" hash="07f3353cf1d7275e528a18b9883b206f"/><file name="config.xml" hash="c321a512326bf2adb9b8dc54f13928f3"/><file name="jstranslator.xml" hash="b50cf9cd74e37d6e34b3e360f3353313"/><file name="system.xml" hash="913acd885f5c4a1d33182f022720fe10"/></dir><dir name="sql"><dir name="transsmart_shipping_setup"><file name="install-1.0.0.php" hash="242d4b2aff6d23151dcca7c9cadab352"/></dir></dir><dir name="ssl"><file name="CARoot.crt" hash="f85d1ff17b0079709f131f3ce3f288d2"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="layout"><file name="transsmart_shipping.xml" hash="c0578eb781adc2df96e79fe776e387da"/></dir><dir name="template"><dir name="transsmart"><dir name="shipping"><dir name="location"><file name="info.phtml" hash="74ce67c6f39c308995a478279ca1e1bc"/><file name="selector.phtml" hash="841e1d59d042c2b53c622593150675c6"/></dir><dir name="sales"><dir name="order"><dir name="address"><dir name="form"><file name="container.phtml" hash="57a3f3de61e96127659dbf53952a0b33"/></dir></dir><dir name="shipment"><dir name="address"><dir name="form"><file name="container.phtml" hash="9763785687d9f4dfa03d6d1887a3f867"/></dir></dir><dir name="create"><file name="action.phtml" hash="164c1c632265816113e8eb172762871c"/><file name="detail.phtml" hash="c12734fe34fb4a526eb29075d2b80120"/><file name="package.phtml" hash="a39776c6e5f95112e10b9dbc9e29bd14"/></dir><dir name="masscreate"><file name="form.phtml" hash="5e2a281942e88379fa28698a85e519ec"/></dir><dir name="view"><file name="detail.phtml" hash="e901e78ba712f7e99b82409a07c9dedd"/><file name="package.phtml" hash="4ba3f81ed371d87542102974566cb522"/></dir></dir></dir></dir><dir name="system"><dir name="config"><dir name="form"><dir name="field"><file name="fetch.phtml" hash="bf8377c0df88e37305d0d39b5ad72101"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="transsmart_shipping.xml" hash="99c0e35e1ef97c0251485fee9b39297e"/></dir><dir name="template"><dir name="transsmart"><dir name="shipping"><dir name="location"><file name="selector.phtml" hash="25000d2769c4e282cdb07dbdc6cb1722"/></dir><dir name="onepage"><dir name="progress"><file name="pickup.phtml" hash="e3874f42cb1d4a9629069d50c39f338e"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Transsmart_Shipping.xml" hash="1f526fc89db267b44b7425e2ff645a68"/></dir></target><target name="magelocale"><dir><dir name="nl_NL"><file name="Transsmart_Shipping.csv" hash="759cb6f310ac469a52513c7eede0ce54"/></dir></dir></target><target name="mageweb"><dir name="js"><dir name="transsmart"><dir name="shipping"><dir name="admin"><file name="pickup_selector.js" hash="7da3ddbbd8e5e4adc4a134faaa7fee0b"/></dir><file name="base64.js" hash="795b1ac117d08652a3a43552c83332ac"/><file name="logger.js" hash="b852d48e077a6114ffe56bd647d1ea5c"/><file name="pickup_selector.js" hash="f01e4051c39218c8354a7f28ed1638ed"/></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="transsmart"><dir name="shipping"><dir name="images"><file name="arrow.png" hash="5b0966d990b40b3510cd2bb57081812d"/><file name="checkmark.png" hash="e5cf08c5943037b8ccc3a5449febdb7b"/><file name="close-btn.png" hash="975d2b3ee2879d4e4b812df8351ccf05"/><file name="info-icon.png" hash="a6baeffe65721d6995f8f06b1669a0ad"/><file name="loader.gif" hash="c5cd7f5300576ab4c88202b42f6ded62"/><file name="radio.png" hash="f149b9aa48f1c3a9da34173c40c882dc"/></dir><file name="pickup_selector.css" hash="9e4b6c280cfd0e2dc6d2d05714b94073"/><file name="styles.css" hash="d61eebd814903f153eb2210bf5f27c5f"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="transsmart"><dir name="shipping"><dir name="images"><file name="arrow.png" hash="5b0966d990b40b3510cd2bb57081812d"/><file name="close-btn.png" hash="975d2b3ee2879d4e4b812df8351ccf05"/><file name="info-icon.png" hash="a6baeffe65721d6995f8f06b1669a0ad"/><file name="loader.gif" hash="c5cd7f5300576ab4c88202b42f6ded62"/><file name="radio.png" hash="f149b9aa48f1c3a9da34173c40c882dc"/></dir><file name="pickup_selector.css" hash="9e4b6c280cfd0e2dc6d2d05714b94073"/></dir></dir></dir></dir></dir></target></contents>
|
16 |
<compatible/>
|
17 |
<dependencies><required><php><min>5.3.29</min><max>5.9.9</max></php><extension><name>curl</name><min/><max/></extension></required></dependencies>
|
18 |
</package>
|