Overview

Packages

  • IllApps
    • Shipsync
  • PHP

Classes

  • IllApps_Shipsync_Block_Adminhtml_Sales_Order_Shipment_Abstract
  • IllApps_Shipsync_Block_Adminhtml_Sales_Order_Shipment_Packages_View
  • IllApps_Shipsync_Block_Adminhtml_Sales_Order_Shipment_Packages_View_Form
  • IllApps_Shipsync_Block_Adminhtml_Sales_Order_Shipment_Packages_View_Items
  • IllApps_Shipsync_Block_Adminhtml_Sales_Order_Shipment_Packages_View_Package
  • IllApps_Shipsync_Block_Adminhtml_Sales_Order_Shipment_View
  • IllApps_Shipsync_Block_Adminhtml_Sales_Order_View
  • IllApps_Shipsync_Block_Adminhtml_Shipsync
  • IllApps_Shipsync_Block_Adminhtml_Shipsync_Option
  • IllApps_Shipsync_Helper_Data
  • IllApps_Shipsync_IndexController
  • IllApps_Shipsync_Model_Mysql4_Setup
  • IllApps_Shipsync_Model_Mysql4_Shipment_Package
  • IllApps_Shipsync_Model_Mysql4_Shipment_Package_Collection
  • IllApps_Shipsync_Model_Sales_Order_Shipment_Package
  • IllApps_Shipsync_Model_Sales_Order_Shipment_Package_Item
  • IllApps_Shipsync_Model_Sales_Quote_Address
  • IllApps_Shipsync_Model_Shipment_Abstract
  • IllApps_Shipsync_Model_Shipment_Package
  • IllApps_Shipsync_Model_Shipment_Request
  • IllApps_Shipsync_Model_Shipment_Response
  • IllApps_Shipsync_Model_Shipment_Result
  • IllApps_Shipsync_Model_Shipping_Carrier_Abstract
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Address
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Package
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Rate
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Ship
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Source_B13afilingoption
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Source_Freemethod
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Source_Label_Image
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Source_Label_Orientation
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Source_Label_Stock
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Source_Method
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Source_Packaging
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Source_Rate
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Source_Ratediscount
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Source_Residencedelivery
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Source_Signature
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Source_Smartpost_Endorsement
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Source_Smartpost_Indicia
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Source_Unitofmeasure
  • IllApps_Shipsync_Model_Shipping_Carrier_Fedex_Track
  • IllApps_Shipsync_Model_Shipping_Package
  • IllApps_Shipsync_Model_Shipping_Package_Item
  • IllApps_Shipsync_Model_Shipping_Package_Origins
  • IllApps_Shipsync_Model_Shipping_Package_Sort
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: 
  3: /**
  4:  * ShipSync
  5:  *
  6:  * @category   IllApps
  7:  * @package    IllApps_Shipsync
  8:  * @copyright  Copyright (c) 2014 EcoMATICS, Inc. DBA IllApps (http://www.illapps.com)
  9:  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 10:  */
 11: 
 12: /**
 13:  * IllApps_Shipsync_IndexController
 14:  */
 15: class IllApps_Shipsync_IndexController extends Mage_Adminhtml_Controller_Action
 16: {
 17: 
 18:     /**
 19:      * Index action
 20:      */
 21:     public function indexAction()
 22:     {
 23:         $this->loadLayout();
 24:         
 25:         $this->_setActiveMenu('sales');
 26:         
 27:         $this->_addBreadcrumb($this->__('Sales'), $this->__('Sales'));
 28:         $this->_addBreadcrumb($this->__('Orders'), $this->__('Orders'));
 29:         $this->_addBreadcrumb($this->__('ShipSync'), $this->__('ShipSync'));
 30:         
 31:         $this->renderLayout();
 32:     }
 33: 
 34:     /**
 35:      * optionAction
 36:      */
 37:     public function optionAction()
 38:     {
 39:         // Get post request
 40:         $post = $this->getRequest()->getPost();
 41:         
 42:         // Load layout
 43:         $this->loadLayout();
 44:         
 45:         $layout = $this->getLayout();
 46:         
 47:         // Get shipsync option block
 48:         $block = $layout->getBlock('shipsync_option');
 49:         
 50:         $block->setData('i', $post['i']);
 51:         $block->setData('z', $post['i']);
 52:         
 53:         echo $block->toHtml();
 54:     }
 55:     
 56:     /**
 57:      * packagesAction
 58:      */
 59:     public function packagesAction()
 60:     {
 61:         $id = $this->getRequest()->getParam('shipment_id');
 62:         
 63:         Mage::register('current_shipment', Mage::getModel('sales/order_shipment')->load($id));
 64:         
 65:         $this->loadLayout();
 66:         
 67:         Mage::getSingleton('shipsync/sales_order_shipment_package')->setShipmentId($id);
 68:         
 69:         $this->renderLayout();
 70:     }
 71: 
 72:     /**
 73:      * Attributes Action
 74:      * 
 75:      * Parses ajax call in the event that a package is changed in Actual Shipment Request.
 76:      * Returns json object containing the relevant information.
 77:      * 
 78:      * @return json_object
 79:      */
 80:     public function attributesAction()
 81:     {
 82:         // Get post request
 83:         $post = $this->getRequest()->getPost();
 84:         
 85:         // Get default packages
 86:         $defaultPackages = Mage::getModel('shipsync/shipping_package')->getDefaultPackages(array(
 87:             'fedex'
 88:         ));
 89:         
 90:         foreach ($post['packages'] as $num => $package) {
 91:             foreach ($defaultPackages as $defaultPackage) {
 92:                 if ($package['value'] == $defaultPackage['value']) {
 93:                     foreach ($defaultPackage as $key => $element) {
 94:                         $key = 'packages_' . $num . '_' . $key;
 95:                         
 96:                         $returnArray[$key] = $element;
 97:                     }
 98:                     
 99:                     echo json_encode($returnArray);
100:                 }
101:             }
102:         }
103:     }
104: 
105:     /**
106:      * Rate Action
107:      *
108:      * Ajax backend action, handling an ad hoc rate request in shipment creation.
109:      *
110:      * @return json_object
111:      */
112:     public function rateAction()
113:     {
114:         // Get post data
115:         $post = $this->getRequest()->getPost();
116:         
117:         // Get fedex model
118:         $fedex = Mage::getModel('usa/shipping_carrier_fedex');
119:         
120:         // Get rate request model
121:         $rateRequest = Mage::getModel('shipping/rate_request');
122:         
123:         // Get order model
124:         $order = Mage::getModel('sales/order')->loadByIncrementId($post['order_id']);
125:         
126:         // Set order model
127:         $rateRequest->setOrder($order);
128:         
129:         // Set request data
130:         $rateRequest->setAllItems($order->getAllItems());
131:         
132:         // Streets
133:         $streets[] = $post['recipient_street1'];
134:         
135:         if ($post['recipient_street2'] != '') {
136:             $streets[] = $post['recipient_street2'];
137:         }
138:         if ($post['recipient_street3'] != '') {
139:             $streets[] = $post['recipient_street3'];
140:         }
141:         
142:         // Set destination data
143:         $rateRequest->setDestStreet($streets);
144:         $rateRequest->setDestCity($post['recipient_city']);
145:         $rateRequest->setDestPostcode($post['recipient_postcode']);
146:         $rateRequest->setDestRegionCode($post['recipient_region']);
147:         $rateRequest->setDestCountryId($post['recipient_country']);
148:         
149:         // Set insure shipment
150:         if (isset($post['insure_shipment']) && ($post['insure_shipment'] == 'on')) {
151:             $rateRequest->setInsureShipment(true)->setInsureAmount($post['insure_amount']);
152:         } else {
153:             $rateRequest->setInsureShipment(false);
154:         }
155:         
156:         $rateRequest->setResidenceDelivery($post['residence_delivery']);
157:         $rateRequest->setAddressValidation($post['address_validation']);
158: 
159:         // Get all items to ship
160:         $items = Mage::getModel('shipsync/shipping_package')->getParsedItems($rateRequest->getAllItems(), true);
161:         
162:         // Sort items by sku, removing duplicates
163:         foreach ($items as $item) {
164:             $_itemsBySku[$item['sku']] = $item;
165:         }
166:         
167:         // Iterate packages for rating, and loads items details from getParsedItems based on sku
168:         foreach ($post['packages'] as $package) {
169:             $error = false;
170:             
171:             unset($_items);
172:             
173:             $itemsToPack = explode(',', $package['items']);
174:             
175:             foreach ($itemsToPack as $key => $itemToPack) {
176:                 $_items[] = $_itemsBySku[$post['items'][$itemToPack - 1]['sku']];
177:             }
178:             
179:             $_packages[] = array(
180:                 'volume' => $package['width'] * $package['height'] * $package['length'],
181:                 'value' => $package['value'],
182:                 'label' => $package['value'],
183:                 'items' => $_items,
184:                 'weight' => $package['weight'],
185:                 'length' => $package['length'],
186:                 'width' => $package['width'],
187:                 'height' => $package['height']
188:             );
189:         }
190:         
191:         $rateRequest->setPackages($_packages);
192: 
193:         $rateResult = Mage::getModel('shipsync/shipping_carrier_fedex_rate')->collectRates($rateRequest);
194:         
195:         $possibleMethods = $rateResult->asArray();
196:         
197:         $methods = $possibleMethods['fedex']['methods'];
198:         
199:         if ($rateResult->getError()) {
200:             unset($post);
201:             
202:             $post['error'] = $rateResult->getRateById(0)->getErrorMessage();
203:         } else {
204:             if (isset($post['method'])) {
205:                 $arrResult = $rateResult->asArray();
206:                 
207:                 if (isset($arrResult['fedex']['methods'][$post['method']]['price_formatted'])) {
208:                     $post['shipping_amount'] = $arrResult['fedex']['methods'][$post['method']]['price_formatted'];
209:                 } else {
210:                     $post['shipping_amount']          = null;
211:                     $post['shipping_allowed_methods'] = $arrResult;
212:                 }
213:             } else {
214:                 unset($post);
215:                 $post['error'] = 'Invalid Request';
216:             }
217:         }
218:         $encoded = json_encode($post);
219:         
220:         $this->getResponse()->setBody($encoded);
221:     }
222:     
223:     
224:     /**
225:      * Post action
226:      *
227:      * @return IllApps_Shipsync_IndexController
228:      */
229:     public function postAction()
230:     {
231:         $message = "";
232:         
233:         /** Retrieve post data */
234:         $post = $this->getRequest()->getPost();
235:         
236:         /** Throw exception if post data is empty */
237:         if (empty($post)) {
238:             Mage::throwException($this->__('Invalid form data.'));
239:         }
240:         
241:         /** Load order model */
242:         $order = Mage::getModel('sales/order')->loadByIncrementId($post['order_id']);
243:         
244:         /** If orderEntityId is null, throw error */
245:         if ($order->getEntityId() == null) {
246:             /** Set error message */
247:             Mage::getSingleton('adminhtml/session')->addError("Error: Invalid Order ID");
248:             
249:             /** Redirect */
250:             $this->_redirectReferer();
251:             
252:             return $this;
253:         }
254:         
255:         /** If order is not shippable */
256:         if (!$order->canShip()) {
257:             /** Set error message */
258:             Mage::getSingleton('adminhtml/session')->addError("Error: Order unable to be shipped");
259:             
260:             /** Redirect */
261:             $this->_redirectReferer();
262:             
263:             return $this;
264:         }
265:         
266:         $i = 0;
267:         
268:         
269:         // Get all items to ship
270:         $items = Mage::getModel('shipsync/shipping_package')->getParsedItems($order->getAllItems(), true);
271:         
272:         // Sort items by sku, removing duplicates
273:         foreach ($items as $item) {
274:             $_itemsById[$item['id']] = $item;
275:         }
276:         
277:         /** Iterate through packages */
278:         foreach ($post['packages'] as $package) {
279:             unset($_items);
280:             
281:             $itemsToPack = explode(',', $package['items']);
282:             
283:             foreach ($itemsToPack as $key => $itemToPack) {
284:                 $_items[] = $_itemsById[$post['items'][$itemToPack - 1]['item_id']];
285:             }
286:             
287:             $package['dangerous']    = false;
288:             $package['cod']          = false;
289:             $package['cod_amount']   = null;
290:             $package['confirmation'] = false;
291:             $package['saturday']     = false;
292:             
293:             
294:             if (isset($post['cod']) && ($post['cod'] == 'on')) {
295:                 $package['cod']        = true;
296:                 $package['cod_amount'] = $post['cod_amount'];
297:             }
298:             
299:             if (isset($post['confirmation']) && ($post['confirmation'] == 'on')) {
300:                 $package['confirmation'] = true;
301:             }
302:             
303:             if (isset($post['saturday']) && $post['saturday'] == 'on') {
304:                 $package['saturday'] = true;
305:             }
306:             
307:             $itemIds          = $package['items'];
308:             $package['items'] = $_items;
309:             
310:             foreach ($package['items'] as $items) {
311:                 if (isset($item['dangerous']) && $item['dangerous']) {
312:                     $package['dangerous'] = true;
313:                 }
314:             }
315:             
316:             /** If package items are not empty */
317:             if (isset($package['items'])) {
318:                 /** Set package object */
319:                 $_package = Mage::getModel('shipping/shipment_package')
320:                     ->setPackageNumber($i)
321:                     ->setItems($package['items'])
322:                     ->setCod($package['cod'])
323:                     ->setCodAmount($package['cod_amount'])
324:                     ->setConfirmation($package['confirmation'])
325:                     ->setSaturdayDelivery($package['saturday'])
326:                     ->setDangerous($package['dangerous'])
327:                     ->setWeight($package['weight'])
328:                     ->setDescription('Package ' . $i + 1 . ' for order id ' . $post['order_id'])
329:                     ->setContainerCode(Mage::getModel('usa/shipping_carrier_fedex_package')
330:                                        ->isFedexPackage($package['value']) ? $package['value'] : 'YOUR_PACKAGING')
331:                     ->setContainerDescription('')
332:                     ->setWeightUnitCode($post['weight_units'])
333:                     ->setDimensionUnitCode($post['dimension_units'])
334:                     ->setHeight($package['height'])
335:                     ->setWidth($package['width'])
336:                     ->setLength($package['length'])
337:                     ->setOrigin($package['altOrigin'])
338:                     ->setIsChild($package['isChild'])
339:                     ->setPackageItemIds($itemIds);
340:                 
341:                 /** Add package object to packages array */
342:                 $packages[] = $_package;
343:             }
344:             /** If package is empty, throw error */
345:             else {
346:                 /** Set error message */
347:                 Mage::getSingleton('adminhtml/session')->addError("Error: Please include all ordered items when creating shipments.");
348:                 
349:                 /** Redirect */
350:                 $this->_redirectReferer();
351:                 
352:                 return $this;
353:             }
354:             
355:             $i++;
356:             /** Increment package counter */
357:         }
358:         
359:         /** Set carrier */
360:         $carrier = Mage::getModel('usa/shipping_carrier_fedex');
361:         
362:         $order->setShippingDescription("Federal Express - " . $carrier->getCode('method', $post['method']));
363:         $order->setShippingMethod("fedex_" . $post['method'])->save();
364:         
365:         $recipientAddress = new Varien_Object();
366:         
367:         $streets[] = $post['recipient_street1'];
368:         
369:         if ($post['recipient_street2'] != '') {
370:             $streets[] = $post['recipient_street2'];
371:         }
372:         if ($post['recipient_street3'] != '') {
373:             $streets[] = $post['recipient_street3'];
374:         }
375:         
376:         $recipientAddress->setName($post['recipient_name']);
377:         $recipientAddress->setCompany($post['recipient_company']);
378:         $recipientAddress->setStreet($streets);
379:         $recipientAddress->setCity($post['recipient_city']);
380:         $recipientAddress->setRegionCode($post['recipient_region']);
381:         $recipientAddress->setPostcode($post['recipient_postcode']);
382:         $recipientAddress->setCountryId($post['recipient_country']);
383:         $recipientAddress->setTelephone($post['recipient_telephone']);
384:         
385:         if (isset($post['insure_shipment']) && ($post['insure_shipment'] == 'on')) {
386:             $insureShipment = true;
387:         } else {
388:             $insureShipment = false;
389:         }
390:         
391:         if (isset($post['insure_amount']) && ($post['insure_amount'] != "")) {
392:             $insureAmount = $post['insure_amount'];
393:         } else {
394:             $insureAmount = 0.0;
395:         }
396: 
397:         $request = new Varien_Object();
398:         
399:         $request->setOrderId($post['order_id'])
400:             ->setMethodCode($post['method'])
401:             ->setRecipientAddress($recipientAddress)
402:             ->setPackages($packages)
403:             ->setInsureShipment($insureShipment)
404:             ->setInsureAmount($insureAmount)
405:             ->setSaturdayDelivery($package['saturday'])
406:             ->setCod($package['cod'])
407:             ->setResidenceDelivery($post['residence_delivery'])
408:             ->setAddressValidation($post['address_validation'])
409:             ->setShipperCompany($post['shipper_company'])
410:             ->setLabelStockType($post['label_stock_type'])
411:             ->setLabelImageType($post['label_image_type'])
412:             ->setLabelPrintingOrientation($post['label_printing_orientation'])
413:             ->setEnableJavaPrinting($post['enable_java_printing'])
414:             ->setPrinterName($post['printer_name'])
415:             ->setPackingList($post['packing_list'])
416:             ->setSignature($post['signature'])
417:             ->setReturnLabel($post['return_label']);
418:         
419:         try {
420:             $results = $carrier->createShipment($request);
421:         }
422:         /** Catch exception */
423:         catch (Exception $e) {
424:             /** Set error message */
425:             Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
426:             
427:             /** Redirect */
428:             $this->_redirectReferer();
429:             
430:             return $this;
431:         }
432:         
433:         /** If results are empty */
434:         if (empty($results)) {
435:             /** Set error message */
436:             Mage::getSingleton('adminhtml/session')->addError("Error: Empty API response");
437:             
438:             /** Redirect */
439:             $this->_redirectReferer();
440:             
441:             return $this;
442:         }
443:         
444:         $tracks     = array();
445:         $packageids = '';
446:         
447:         /** Iterate through results */
448:         $i = 0;
449:         foreach ($results as $res) {
450:             /** Set tracking number */
451:             $tracks[$i]['number'] = $res->getTrackingNumber();
452:             
453:             /** Set label URL */
454:             $tracks[$i]['url'] = '<a target="shipping_label" href="' . Mage::getSingleton('adminhtml/url')->getUrl('shipsync/index/label/', array(
455:                 'id' => $res->getPackageId()
456:             )) . '">Print Shipping Label</a>';
457: 
458:             /** Set package id */
459:             $tracks[$i]['id'] = $res->getPackageId();
460:             
461:             $i++;
462:         }
463:         
464:         /** Set success message */
465:         $message = '<p>SUCCESS: ' . $i . ' shipment(s) created</p>';
466:         
467:         /** Iterate through tracking #s */
468:         foreach ($tracks as $track) {
469:             /** Set tracking message */
470:             $message .= "<p>Package ID: " . $track['id'] . "<br /> Tracking Number: " . $track['number'] . "<br />" . $track['url'] . "</p>";
471: 
472:             if ($post['return_label'])
473:             {
474:                 $message .= '<p><a target="_blank" href="' . Mage::getSingleton('adminhtml/url')->getUrl('shipsync/index/returnlabel/', array(
475:                     'id' => $res->getPackageId()
476:                 )) . '">Print Return Label</a></p>';
477:             }
478:         }
479:         
480:         /** Add success message */
481:         Mage::getSingleton('adminhtml/session')->addSuccess($message);
482:         
483:         /** Get order url */
484:         $url = $this->getUrl('adminhtml/sales_order/view', array(
485:             'order_id' => $order->getId()
486:         ));
487:         
488:         /** Redirect */
489:         $this->_redirectUrl($url);
490:         
491:         return $this;
492:     }
493:     
494:     
495:     
496:     /**
497:      * Show label
498:      */
499:     public function labelAction()
500:     {
501:         if ($packageId = $this->getRequest()->getParam('id')) {
502:             $package = Mage::getModel('shipping/shipment_package')->load($packageId);
503:             
504:             $carrier = strtoupper($package->getCarrier());
505:             
506:             $labelFormat = strtolower($package->getLabelFormat());
507:             $labelImage  = $package->getLabelImage();
508:             
509:             $this->labelPrint($labelImage, $labelFormat, $carrier, $package);
510:         }
511:     }
512:     
513:     
514:     /**
515:      * Show COD Label if present
516:      */
517:     public function codlabelAction()
518:     {
519:         if ($packageId = $this->getRequest()->getParam('id')) {
520:             $package = Mage::getModel('shipping/shipment_package')->load($packageId);
521:             $carrier = strtoupper($package->getCarrier());
522:             
523:             $labelFormat = strtolower($package->getLabelFormat());
524:             $labelImage  = $package->getCodLabelImage();
525:             
526:             $this->labelPrint($labelImage, $labelFormat, $carrier . '_COD_', $package);
527:         }
528:     }
529:     
530:     
531:     /**
532:      * Show Return Label if present
533:      */
534:     public function returnLabelAction()
535:     {
536:         if ($packageId = $this->getRequest()->getParam('id')) {
537:             $package = Mage::getModel('shipping/shipment_package')->load($packageId);
538:             $carrier = strtoupper($package->getCarrier());
539: 
540:             $labelFormat = strtolower($package->getLabelFormat());
541:             $labelImage  = $package->getReturnLabelImage();
542: 
543:             $this->labelPrint($labelImage, $labelFormat, $carrier . '_RETURN_', $package);
544:         }
545:     }
546: 
547:     
548:     public function labelPrint($labelImage, $labelFormat, $carrier, $package)
549:     {
550:         switch ($labelFormat) {
551:             case 'pdf':
552:                 
553:                 $labelImage = mb_convert_encoding($labelImage, 'UTF-8', 'BASE64');
554:                 $labelPath  = $carrier . $package->getTrackingNumber() . '.' . substr($labelFormat, 0, 3);
555:                 
556:                 $this->getResponse()->setHeader('Content-type', 'application/pdf', true)->setHeader('Content-Disposition', 'inline' . '; filename="' . $labelPath . '"')->setBody($labelImage);
557:                 
558:                 break;
559:             
560:             case 'png':
561:                 
562:                 $labelImage = mb_convert_encoding($labelImage, 'UTF-8', 'BASE64');
563:                 $labelPath  = $carrier . '_COD_' . $package->getTrackingNumber() . '.' . substr($labelFormat, 0, 3);
564:                 $this->getResponse()->setHeader('Content-type', 'application/octet-stream', true)->setHeader('Content-Disposition', 'inline' . '; filename="' . $labelPath . '"')->setBody($labelImage);
565:                 
566:                 break;
567:             
568:             
569:             default:
570:                 $this->thermalPrint($labelImage, $labelFormat);
571:                 break;
572:         }
573:     }
574:     
575:     
576:     public function thermalPrint($labelImage, $labelFormat)
577:     {
578:         $jsUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB) . 'js/illapps/shipsync/jzebra.js';
579: 
580:         $javaUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB) . 'java/jZebra/';
581:         
582:         $printerName = Mage::getStoreConfig('carriers/fedex/printer_name');
583:         
584:         $htmlBody = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
585:             <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
586:             <head>
587:                 <script type="text/javascript">
588:                     var label = "' . $labelImage . '";
589:                 </script>
590:                 <script type="text/javascript" src="' . $jsUrl . '"></script>
591:             </head>
592:             <body style="background-color: #ccc; padding: 20px;">
593:                 <p><strong>ShipSync Thermal Printing</strong></p>
594:                     <div style="border: 1px #000 solid; padding: 10px; background-color: #fff; margin: 20px; ">
595:                         <applet name="jZebra" code="jzebra.PrintApplet.class" archive="' . $javaUrl . 'jzebra.jar" width="0" height="0">
596:                             <param name="sleep" value="200">
597:                             <param name="printer" value="' . $printerName . '">
598:                         </applet><br />
599:                         <input type=button onClick="findPrinter()" value="Detect Printer"><br />
600:                         <input type=button onClick="useDefaultPrinter()" value="Use Default Printer"><br />
601:                         <input type=button onClick="print()" value="Print">
602:                     </div>
603:                 </body>
604:         </html>';
605:         
606:         $this->getResponse()->setBody($htmlBody);
607:         
608:     }
609:     
610:     
611:     
612:     public function deleteAction()
613:     {
614:         $console = Mage::helper('shipsync');
615: 
616:         $orderId = $this->getRequest()->getParam('order_id');
617: 
618:         $order = Mage::getModel('sales/order');
619: 
620:         $order->loadByIncrementId($orderId);
621: 
622:         $items = Mage::getResourceModel('sales/order_item_collection')->setOrderFilter($orderId)->load();
623: 
624:         foreach ($items as $item) {
625:             if ($item->getQtyShipped() > 0) {
626:                 $item->setQtyShipped(0)->save();
627:             }
628:         }
629: 
630:         $shipments = Mage::getResourceModel('sales/order_shipment_collection')->setOrderFilter($orderId)->load();
631: 
632:         foreach ($shipments as $shipment) {
633: 
634:             $shipment->delete();
635:         }
636: 
637:         $shipments->save();
638: 
639:         $this->_getSession()->addSuccess($this->__('Shipment successfully deleted.'));
640: 
641:         $this->_redirect('adminhtml/sales_order/view', array(
642:             'order_id' => $orderId
643:         ));
644:     }
645: }
646: 
shipsync-community API documentation generated by ApiGen 2.8.0