Example #1
0
 function FormatFedExShipRequest($pkg, $key)
 {
     global $ZONE001_DEFINES, $debug, $currencies;
     // process different for freight than express
     $is_freight = in_array($pkg->ship_method, array('GndFrt', 'EcoFrt')) && MODULE_SHIPPING_FEDEX_V7_LTL_ACCOUNT_NUMBER ? true : false;
     $request['WebAuthenticationDetail'] = array('UserCredential' => array('Key' => MODULE_SHIPPING_FEDEX_V7_AUTH_KEY, 'Password' => MODULE_SHIPPING_FEDEX_V7_AUTH_PWD));
     $request['ClientDetail'] = array('AccountNumber' => MODULE_SHIPPING_FEDEX_V7_ACCOUNT_NUMBER, 'MeterNumber' => MODULE_SHIPPING_FEDEX_V7_METER_NUMBER);
     $request['TransactionDetail'] = array('CustomerTransactionId' => '*** FedEx Shipping Request ***');
     $request['Version'] = array('ServiceId' => 'ship', 'Major' => MODULE_SHIPPING_FEDEX_SHIP_WSDL_VERSION, 'Intermediate' => '0', 'Minor' => '0');
     $temp = array_flip($this->FedExRateCodes);
     $ship_method = $pkg->residential_address && $pkg->ship_method == 'GND' ? 'GDR' : $pkg->ship_method;
     $request['RequestedShipment'] = array('ShipTimestamp' => date('c', strtotime($pkg->ship_date)), 'DropoffType' => $this->FedExPickupMap[$pkg->pickup_service], 'ServiceType' => $temp[$ship_method], 'PackagingType' => $this->PackageMap[$pkg->pkg_type]);
     $request['RequestedShipment']['Shipper'] = array('Contact' => array('PersonName' => AR_CONTACT_NAME, 'CompanyName' => COMPANY_NAME, 'PhoneNumber' => COMPANY_TELEPHONE1), 'Address' => array('StreetLines' => array('0' => COMPANY_ADDRESS1, '1' => COMPANY_ADDRESS2), 'City' => COMPANY_CITY_TOWN, 'StateOrProvinceCode' => COMPANY_ZONE, 'PostalCode' => COMPANY_POSTAL_CODE, 'CountryCode' => gen_get_country_iso_2_from_3(COMPANY_COUNTRY)));
     $request['RequestedShipment']['Recipient'] = array('Contact' => array('PersonName' => remove_special_chars($pkg->ship_contact), 'CompanyName' => remove_special_chars($pkg->ship_primary_name), 'PhoneNumber' => strip_alphanumeric($pkg->ship_telephone1)), 'Address' => array('StreetLines' => array('0' => remove_special_chars($pkg->ship_address1), '1' => remove_special_chars($pkg->ship_address2)), 'City' => strtoupper($pkg->ship_city_town), 'StateOrProvinceCode' => $pkg->ship_country_code == 'US' ? strtoupper($pkg->ship_state_province) : '', 'PostalCode' => strip_alphanumeric($pkg->ship_postal_code), 'CountryCode' => gen_get_country_iso_2_from_3($pkg->ship_country_code), 'Residential' => $pkg->residential_address ? '1' : '0'));
     // SmartPost
     if ($pkg->ship_method == '3Dam') {
         $request['RequestedShipment']['SmartPostDetail'] = array('Indicia' => $pkg->total_weight < 1 ? 'PRESORTED_STANDARD' : 'PARCEL_SELECT', 'HubId' => FEDEX_SMARTPOST_HUB_ID);
     }
     $request['RequestedShipment']['ShippingChargesPayment'] = array('PaymentType' => $this->PaymentMap[$pkg->bill_charges]);
     $pay_acct = MODULE_SHIPPING_FEDEX_V7_ACCOUNT_NUMBER;
     if ($pkg->bill_charges == '1' || $pkg->bill_charges == '2') {
         $pay_acct = $pkg->bill_acct;
     }
     $request['RequestedShipment']['ShippingChargesPayment']['Payor'] = array('AccountNumber' => $pay_acct, 'CountryCode' => 'US');
     if ($is_freight) {
         //			$request['ClientDetail']['AccountNumber'] = MODULE_SHIPPING_FEDEX_V7_LTL_ACCOUNT_NUMBER; // causes acct and meter not consistent error
         $request['RequestedShipment']['FreightShipmentDetail'] = array('FedExFreightAccountNumber' => MODULE_SHIPPING_FEDEX_V7_LTL_ACCOUNT_NUMBER, 'FedExFreightBillingContactAndAddress' => array('Contact' => array('PersonName' => AR_CONTACT_NAME, 'CompanyName' => COMPANY_NAME, 'PhoneNumber' => COMPANY_TELEPHONE1), 'Address' => array('StreetLines' => COMPANY_ADDRESS1, 'City' => COMPANY_CITY_TOWN, 'StateOrProvinceCode' => COMPANY_ZONE, 'PostalCode' => COMPANY_POSTAL_CODE, 'CountryCode' => gen_get_country_iso_2_from_3(COMPANY_COUNTRY))), 'PrintedReferences' => array('Type' => 'SHIPPER_ID_NUMBER', 'Value' => $pkg->purchase_invoice_id), 'Role' => 'SHIPPER', 'PaymentType' => 'PREPAID', 'CollectTermsType' => 'STANDARD', 'DeclaredValuePerUnit' => array('Amount' => $currencies->clean_value($pkg->package[$key]['value']), 'Currency' => 'USD'), 'TotalHandlingUnits' => $pkg->ltl_num_pieces, 'PalletWeight' => array('Units' => substr($pkg->pkg_weight_unit, 0, 2), 'Value' => number_format($pkg->package[$key]['weight'], 0, '.', '')), 'ShipmentDimensions' => array('Length' => $pkg->package[$key]['length'] < 32 ? 32 : $pkg->package[$key]['length'], 'Width' => $pkg->package[$key]['width'] < 32 ? 32 : $pkg->package[$key]['width'], 'Height' => $pkg->package[$key]['height'] < 16 ? 16 : $pkg->package[$key]['height'], 'Units' => $pkg->pkg_dimension_unit), 'LineItems' => array('FreightClass' => 'CLASS_' . $pkg->ltl_class, 'Packaging' => 'PALLET', 'Description' => $pkg->ltl_description, 'HandlingUnits' => $pkg->ltl_num_pieces, 'Pieces' => 1, 'BillOfLaddingNumber' => $pkg->purchase_invoice_id, 'PurchaseOrderNumber' => $pkg->purch_order_id, 'Weight' => array('Units' => substr($pkg->pkg_weight_unit, 0, 2), 'Value' => number_format($pkg->package[$key]['weight'], 0, '.', '')), 'Dimensions' => array('Length' => $pkg->package[$key]['length'] < 32 ? 32 : $pkg->package[$key]['length'], 'Width' => $pkg->package[$key]['width'] < 32 ? 32 : $pkg->package[$key]['width'], 'Height' => $pkg->package[$key]['height'] < 16 ? 16 : $pkg->package[$key]['height'], 'Units' => $pkg->pkg_dimension_unit)));
     } else {
         // provide small package/express freight details
         $pay_acct = $pkg->bill_charges == '1' || $pkg->bill_charges == '2' ? $pkg->bill_acct : MODULE_SHIPPING_FEDEX_V7_ACCOUNT_NUMBER;
         if ($pkg->cod) {
             $request['RequestedShipment']['SpecialServicesRequested'] = array('SpecialServiceTypes' => array('COD'), 'CodDetail' => array('CollectionType' => $this->CODMap[$pkg->cod_payment_type]));
         }
         if ($pkg->saturday_delivery) {
             $request['RequestedShipment']['SpecialServicesRequested']['SpecialServiceTypes'][] = 'SATURDAY_DELIVERY';
         }
         if ($key > 0) {
             // link to the master package
             $request['RequestedShipment']['MasterTrackingId'] = $pkg->master_tracking;
         }
         $request['RequestedShipment']['RequestedPackageLineItems'] = array('SequenceNumber' => $key + 1, 'InsuredValue' => array('Amount' => $currencies->clean_value($pkg->package[$key]['value']), 'Currency' => 'USD'), 'Weight' => array('Value' => number_format($pkg->package[$key]['weight'], 1, '.', ''), 'Units' => substr($pkg->pkg_weight_unit, 0, 2)), 'Dimensions' => array('Length' => $pkg->package[$key]['length'], 'Width' => $pkg->package[$key]['width'], 'Height' => $pkg->package[$key]['height'], 'Units' => $pkg->pkg_dimension_unit), 'CustomerReferences' => array('0' => array('CustomerReferenceType' => 'CUSTOMER_REFERENCE', 'Value' => $pkg->purchase_invoice_id . '-' . ($key + 1)), '1' => array('CustomerReferenceType' => 'INVOICE_NUMBER', 'Value' => $pkg->purchase_invoice_id), '2' => array('CustomerReferenceType' => 'P_O_NUMBER', 'Value' => $pkg->purch_order_id)));
         if ($pkg->cod) {
             $request['RequestedShipment']['RequestedPackageLineItems']['SpecialServicesRequested'] = array('CodCollectionAmount' => array('Amount' => $pkg->total_amount, 'Currency' => 'USD'), 'EMailNotificationDetail' => array('Shipper' => array('EMailAddress' => COMPANY_EMAIL, 'NotifyOnShipment' => $pkg->email_sndr_ship ? '1' : '0', 'NotifyOnException' => $pkg->email_sndr_dlvr ? '1' : '0', 'NotifyOnException' => $pkg->email_sndr_excp ? '1' : '0', 'Localization"' => substr($_SESSION['language'], 0, 2)), 'Recipient' => array('EMailAddress' => $pkg->ship_email, 'NotifyOnShipment' => $pkg->email_rcp_ship ? '1' : '0', 'NotifyOnException' => $pkg->email_rcp_dlvr ? '1' : '0', 'NotifyOnException' => $pkg->email_rcp_excp ? '1' : '0', 'Localization"' => substr($_SESSION['language'], 0, 2))));
         }
     }
     $request['RequestedShipment']['PackageCount'] = count($pkg->package);
     $request['RequestedShipment']['PackageDetail'] = 'INDIVIDUAL_PACKAGES';
     $request['RequestedShipment']['RateRequestTypes'] = 'LIST';
     // valid values ACCOUNT and LIST
     $request['RequestedShipment']['LabelSpecification']['LabelFormatType'] = 'COMMON2D';
     $request['RequestedShipment']['LabelSpecification']['CustomerSpecifiedDetail']['MaskedData'] = 'SHIPPER_ACCOUNT_NUMBER';
     // For thermal labels
     if (!$is_freight && MODULE_SHIPPING_FEDEX_V7_PRINTER_TYPE == 'Thermal') {
         $request['RequestedShipment']['LabelSpecification']['ImageType'] = 'EPL2';
         $request['RequestedShipment']['LabelSpecification']['LabelStockType'] = LABELORIENTATION_THERMAL;
         $request['RequestedShipment']['LabelSpecification']['LabelPrintingOrientation'] = 'TOP_EDGE_OF_TEXT_FIRST';
         if (DOCTABCONTENT == 'Zone001') {
             $request['RequestedShipment']['LabelSpecification']['CustomerSpecifiedDetail']['DocTabContent']['DocTabContentType'] = 'ZONE001';
             // define the zones and values
             $ZONE001_DEFINES = array('1' => array('Header' => TEXT_DATE, 'Literal' => date('Y-m-d', strtotime($pkg->ship_date))), '2' => array('Header' => 'Transit', 'Value' => 'REPLY/SHIPMENT/RoutingDetail/TransitTime'), '3' => array('Header' => 'PO Num', 'Literal' => $pkg->purch_order_id), '4' => array('Header' => 'Inv Num', 'Literal' => $pkg->purchase_invoice_id), '5' => array('Header' => TEXT_WEIGHT, 'Literal' => number_format($pkg->package[$key]['weight'], 1, '.', '')), '7' => array('Header' => 'DV', 'Literal' => number_format($pkg->package[$key]['value'], 2, '.', '')), '8' => array('Header' => 'Insured', 'Value' => 'REQUEST/PACKAGE/InsuredValue/Amount'), '9' => array('Header' => 'List', 'Value' => 'REPLY/SHIPMENT/RATES/PAYOR_LIST_PACKAGE/TotalNetCharge/Amount'), '12' => array('Header' => 'Net', 'Value' => 'REPLY/SHIPMENT/RATES/PAYOR_ACCOUNT_PACKAGE/TotalNetCharge/Amount'));
             foreach ($ZONE001_DEFINES as $zone => $settings) {
                 $request['RequestedShipment']['LabelSpecification']['CustomerSpecifiedDetail']['DocTabContent'][DOCTABCONTENT]['DocTabZoneSpecifications'][] = array('ZoneNumber' => $zone, 'Header' => $settings['Header'], 'DataField' => $settings['Value'], 'LiteralValue' => $settings['Literal']);
             }
         }
     } elseif ($is_freight) {
         $request['RequestedShipment']['LabelSpecification']['LabelFormatType'] = 'FEDEX_FREIGHT_STRAIGHT_BILL_OF_LADING';
         $request['RequestedShipment']['LabelSpecification']['ImageType'] = 'PDF';
         $request['RequestedShipment']['LabelSpecification']['LabelStockType'] = 'PAPER_LETTER';
         $request['RequestedShipment']['LabelSpecification']['LabelPrintingOrientation'] = 'TOP_EDGE_OF_TEXT_FIRST';
         $request['RequestedShipment']['ShippingDocumentSpecification'] = array('ShippingDocumentTypes' => array('FREIGHT_ADDRESS_LABEL'), 'FreightAddressLabelDetail' => array('Format' => array('ImageType' => MODULE_SHIPPING_FEDEX_V7_PRINTER_TYPE == 'Thermal' ? 'EPL2' : 'PDF', 'StockType' => MODULE_SHIPPING_FEDEX_V7_PRINTER_TYPE == 'Thermal' ? LABELORIENTATION_THERMAL : 'PAPER_4X6', 'ProvideInstuctions' => '0'), 'Copies' => '1'));
     } else {
         $request['RequestedShipment']['LabelSpecification']['ImageType'] = 'PDF';
         $request['RequestedShipment']['LabelSpecification']['LabelStockType'] = LABELORIENTATION_PDF;
     }
     return $request;
 }
Example #2
0
 function FormatFedExShipRequest($pkg, $key)
 {
     global $ZONE001_DEFINES, $debug;
     $crlf = chr(13) . chr(10);
     if ($pkg->ship_method == 'GND' || $pkg->ship_method == 'GDR') {
         $carrier_code = 'FDXG';
         // Ground and Ground Home Delivery
     } else {
         $carrier_code = 'FDXE';
         // Express (all types)
     }
     $sBody = '<?xml version="1.0" encoding="UTF-8" ?>';
     $sBody .= $crlf . '<FDXShipRequest xmlns:api="http://www.fedex.com/fsmapi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FDXShipRequest.xsd">';
     $sBody .= $crlf . '<RequestHeader>';
     $sBody .= $crlf . '<CustomerTransactionIdentifier>FedEx Ship Request</CustomerTransactionIdentifier>';
     $sBody .= $crlf . '<AccountNumber>' . MODULE_SHIPPING_FEDEX_ACCOUNT_NUMBER . '</AccountNumber>';
     $sBody .= $crlf . '<MeterNumber>' . MODULE_SHIPPING_FEDEX_RATE_LICENSE . '</MeterNumber>';
     $sBody .= $crlf . '<CarrierCode>' . $carrier_code . '</CarrierCode>';
     $sBody .= $crlf . '</RequestHeader>';
     $sBody .= $crlf . '<ShipDate>' . $pkg->terminal_date . '</ShipDate>';
     $sBody .= $crlf . '<ShipTime>' . date('H:i:s', time()) . '</ShipTime>';
     $sBody .= $crlf . '<DropoffType>' . $this->FedExPickupMap[$pkg->pickup_service] . '</DropoffType>';
     //Service
     // special case if residential checked and GND service (commercial) is selected, change to GDR home delivery
     $temp = array_flip($this->FedExRateCodes);
     $ship_method = $pkg->residential_address && $pkg->ship_method == 'GND' ? 'GDR' : $pkg->ship_method;
     $sBody .= $crlf . '<Service>' . $temp[$ship_method] . '</Service>';
     $sBody .= $crlf . '<Packaging>' . $this->PackageMap[$pkg->pkg_type] . '</Packaging>';
     // TBD convert weight to pounds if in KGs
     $sBody .= $crlf . '<WeightUnits>' . $pkg->pkg_weight_unit . '</WeightUnits>';
     // TBD total shipment weight or package weight
     $sBody .= $crlf . '<Weight>' . number_format($pkg->package[$key]['weight'], 1) . '</Weight>';
     $sBody .= $crlf . '<CurrencyCode>' . $pkg->insurance_currency . '</CurrencyCode>';
     $sBody .= $crlf . '<ListRate>1</ListRate>';
     if ($pkg->return_service) {
         $sBody .= $crlf . '<ReturnShipmentIndicator>PRINTRETURNLABEL</ReturnShipmentIndicator>';
     }
     // Origin
     $sBody .= $crlf . '<Origin>';
     $sBody .= $crlf . '<Contact>';
     $sBody .= $crlf . '<CompanyName>' . COMPANY_NAME . '</CompanyName>';
     $sBody .= $crlf . '<PhoneNumber>' . strip_alphanumeric(COMPANY_TELEPHONE1) . '</PhoneNumber>';
     if (COMPANY_FAX) {
         $sBody .= $crlf . '<FaxNumber>' . strip_alphanumeric(COMPANY_FAX) . '</FaxNumber>';
     }
     if (COMPANY_EMAIL) {
         $sBody .= $crlf . '<E-MailAddress>' . COMPANY_EMAIL . '</E-MailAddress>';
     }
     $sBody .= $crlf . '</Contact>';
     $sBody .= $crlf . '<Address>';
     $sBody .= $crlf . '<Line1>' . COMPANY_ADDRESS1 . '</Line1>';
     if (COMPANY_ADDRESS2) {
         $sBody .= $crlf . '<Line2>' . COMPANY_ADDRESS2 . '</Line2>';
     }
     $sBody .= $crlf . '<City>' . COMPANY_CITY_TOWN . '</City>';
     $country_code = gen_get_country_iso_2_from_3(COMPANY_COUNTRY);
     if ($country_code == 'US' || $country_code == 'CA') {
         $sBody .= $crlf . '<StateOrProvinceCode>' . COMPANY_ZONE . '</StateOrProvinceCode>';
     }
     if ($country_code == 'US' || $country_code == 'CA' || COMPANY_POSTAL_CODE != '') {
         $sBody .= $crlf . '<PostalCode>' . strip_alphanumeric(COMPANY_POSTAL_CODE) . '</PostalCode>';
     }
     $sBody .= $crlf . '<CountryCode>' . $country_code . '</CountryCode>';
     $sBody .= $crlf . '</Address>';
     $sBody .= $crlf . '</Origin>';
     // Destination
     $sBody .= $crlf . '<Destination>';
     $sBody .= $crlf . '<Contact>';
     if ($pkg->ship_contact) {
         $sBody .= $crlf . '<PersonName>' . remove_special_chars($pkg->ship_contact) . '</PersonName>';
     }
     $sBody .= $crlf . '<CompanyName>' . remove_special_chars($pkg->ship_primary_name) . '</CompanyName>';
     $sBody .= $crlf . '<PhoneNumber>' . strip_alphanumeric($pkg->ship_telephone1) . '</PhoneNumber>';
     if ($pkg->ship_email) {
         $sBody .= $crlf . '<E-MailAddress>' . $pkg->ship_email . '</E-MailAddress>';
     }
     $sBody .= $crlf . '</Contact>';
     $sBody .= $crlf . '<Address>';
     $sBody .= $crlf . '<Line1>' . remove_special_chars($pkg->ship_address1) . '</Line1>';
     if ($pkg->ship_address2) {
         $sBody .= $crlf . '<Line2>' . remove_special_chars($pkg->ship_address2) . '</Line2>';
     }
     $sBody .= $crlf . '<City>' . strtoupper($pkg->ship_city_town) . '</City>';
     if ($pkg->ship_country_code == 'US' || $pkg->ship_country_code == 'CA') {
         $sBody .= $crlf . '<StateOrProvinceCode>' . strtoupper($pkg->ship_state_province) . '</StateOrProvinceCode>';
     }
     if ($pkg->ship_country_code == 'US' || $pkg->ship_country_code == 'CA' || $pkg->ship_postal_code != '') {
         $sBody .= $crlf . '<PostalCode>' . strip_alphanumeric($pkg->ship_postal_code) . '</PostalCode>';
     }
     $sBody .= $crlf . '<CountryCode>' . $pkg->ship_country_code . '</CountryCode>';
     $sBody .= $crlf . '</Address>';
     $sBody .= $crlf . '</Destination>';
     // Payment
     $sBody .= $crlf . '<Payment>';
     $sBody .= $crlf . '<PayorType>' . $this->PaymentMap[$pkg->bill_charges] . '</PayorType>';
     if ($pkg->bill_charges == '1' || $pkg->bill_charges == '2') {
         $sBody .= $crlf . '<Payor>';
         $sBody .= $crlf . '<AccountNumber>' . $pkg->bill_acct . '</AccountNumber>';
         $sBody .= $crlf . '<CountryCode>' . $pkg->ship_country_code . '</CountryCode>';
         $sBody .= $crlf . '</Payor>';
     }
     $sBody .= $crlf . '</Payment>';
     // Reference info
     $sBody .= $crlf . '<ReferenceInfo>';
     //		$sBody .= $crlf . '<CustomerReference>' . $pkg->purchase_invoice_id . '</CustomerReference>';
     if ($pkg->so_po_ref_id) {
         $sBody .= $crlf . '<PONumber>' . $pkg->so_po_ref_id . '</PONumber>';
     }
     $sBody .= $crlf . '<InvoiceNumber>' . $pkg->purchase_invoice_id . '</InvoiceNumber>';
     $sBody .= $crlf . '</ReferenceInfo>';
     // Package
     // TBD what about MPS???
     if ($pkg->pkg_type == '02') {
         // customer supplied packaging
         $sBody .= $crlf . '<Dimensions>';
         $sBody .= $crlf . '<Length>' . $pkg->package[$key]['length'] . '</Length>';
         $sBody .= $crlf . '<Width>' . $pkg->package[$key]['width'] . '</Width>';
         $sBody .= $crlf . '<Height>' . $pkg->package[$key]['height'] . '</Height>';
         $sBody .= $crlf . '<Units>' . $pkg->pkg_dimension_unit . '</Units>';
         $sBody .= $crlf . '</Dimensions>';
     }
     $sBody .= $crlf . '<DeclaredValue>' . number_format($pkg->package[$key]['value'], 2) . '</DeclaredValue>';
     // Special Services
     $sBody .= $crlf . '<SpecialServices>';
     if ($pkg->cod) {
         $sBody .= $crlf . '<COD>';
         $sBody .= $crlf . '<CollectionAmount>' . $pkg->total_amount . '</CollectionAmount>';
         $sBody .= $crlf . '<CollectionType>' . $this->CODMap[$pkg->cod_payment_type] . '</CollectionType>';
         $sBody .= $crlf . '</COD>';
     }
     //		$sBody .= $crlf . '<HoldAtLocation>' . $pkg->hold_at_location . '</HoldAtLocation>'; // NOT USED AT THIS TIME
     //		$sBody .= $crlf . '<DangerousGoods>';
     //		$sBody .= $crlf . '<Accessibility>' . $pkg->accessibility . '</Accessibility>'; // NOT USED AT THIS TIME
     //		$sBody .= $crlf . '</DangerousGoods>';
     //		if ($pkg->dry_ice) $sBody .= $crlf . '<DryIce>1</DryIce>';
     //		$sBody .= $crlf . '<ResidentialPickup>' . $pkg->res_pickup . '</ResidentialPickup>'; // NOT USED AT THIS TIME
     if ($pkg->residential_address) {
         $sBody .= $crlf . '<ResidentialDelivery>1</ResidentialDelivery>';
     }
     //		$sBody .= $crlf . '<InsidePickup>' . $pkg->inside_pickup . '</InsidePickup>';
     //		$sBody .= $crlf . '<InsideDelivery>' . $pkg->inside_delivery . '</InsideDelivery>';
     //		if ($pkg->saturday_pickup) $sBody .= $crlf . '<SaturdayPickup>1</SaturdayPickup>';
     if ($pkg->saturday_delivery) {
         $sBody .= $crlf . '<SaturdayDelivery>1</SaturdayDelivery>';
     }
     if ($pkg->email_sndr_ship || $pkg->email_sndr_excp || $pkg->email_sndr_dlvr || $pkg->email_rcp_ship || $pkg->email_rcp_excp || $pkg->email_rcp_dlvr) {
         $sBody .= $crlf . '<EMailNotification>';
         if ($pkg->email_sndr_ship || $pkg->email_sndr_excp || $pkg->email_sndr_dlvr) {
             $sBody .= $crlf . '<Shipper>';
             if ($pkg->email_sndr_ship) {
                 $sBody .= $crlf . '<ShipAlert>' . $pkg->email_sndr_ship . '</ShipAlert>';
             }
             if ($pkg->email_sndr_dlvr) {
                 $sBody .= $crlf . '<DeliveryNotification>' . $pkg->email_sndr_dlvr . '</DeliveryNotification>';
             }
             if ($pkg->email_sndr_excp) {
                 $sBody .= $crlf . '<ExceptionNotification>' . $pkg->email_sndr_excp . '</ExceptionNotification>';
             }
             $sBody .= $crlf . '<Format>TEXT</Format>';
             $sBody .= $crlf . '<LanguageCode>en</LanguageCode>';
             $sBody .= $crlf . '</Shipper>';
         }
         if ($pkg->email_rcp_ship || $pkg->email_rcp_excp || $pkg->email_rcp_dlvr) {
             $sBody .= $crlf . '<Recipient>';
             if ($pkg->email_rcp_ship) {
                 $sBody .= $crlf . '<ShipAlert>' . $pkg->email_rcp_ship . '</ShipAlert>';
             }
             if ($pkg->email_rcp_dlvr) {
                 $sBody .= $crlf . '<DeliveryNotification>' . $pkg->email_rcp_dlvr . '</DeliveryNotification>';
             }
             if ($pkg->email_rcp_excp) {
                 $sBody .= $crlf . '<ExceptionNotification>' . $pkg->email_rcp_excp . '</ExceptionNotification>';
             }
             $sBody .= $crlf . '<Format>TEXT</Format>';
             $sBody .= $crlf . '<LanguageCode>en</LanguageCode>';
             $sBody .= $crlf . '</Recipient>';
         }
         $sBody .= $crlf . '</EMailNotification>';
     }
     if ($pkg->additional_handling) {
         $sBody .= $crlf . '<NonstandardContainer>1</NonstandardContainer>';
     }
     if ($pkg->delivery_confirmation) {
         $sBody .= $crlf . '<SignatureOption>' . $this->SignatureMap[$pkg->delivery_confirmation_type] . '</SignatureOption>';
     }
     $sBody .= $crlf . '</SpecialServices>';
     if (count($pkg->package) > 1) {
         $sBody .= $crlf . '<MultiPiece>';
         $sBody .= $crlf . '<PackageCount>' . count($pkg->package) . '</PackageCount>';
         $sBody .= $crlf . '<PackageSequenceNumber>' . ($key + 1) . '</PackageSequenceNumber>';
         //			$sBody .= $crlf . '<ShipmentWeight>' . count($pkg->package) . '</ShipmentWeight>';
         if ($key > 0) {
             // link to the master package
             $sBody .= $crlf . '<MasterTrackingNumber>' . $pkg->master_tracking . '</MasterTrackingNumber>';
             if ($carrier_code == 'FDXE') {
                 $sBody .= $crlf . '<MasterFormID>' . $pkg->form_id . '</MasterFormID>';
             }
         }
         $sBody .= $crlf . '</MultiPiece>';
     }
     $sBody .= $crlf . '<Label>';
     $sBody .= $crlf . '<Type>2DCOMMON</Type>';
     // For thermal labels
     if (MODULE_SHIPPING_FEDEX_PRINTER_TYPE == 'Thermal') {
         // valid values are PDF, PNG, ELTRON, ZEBRA, UNIMARK
         $sBody .= $crlf . '<ImageType>' . IMAGETYPE . '</ImageType>';
         $sBody .= $crlf . '<LabelStockOrientation>' . LABELSTOCKORIENTATION . '</LabelStockOrientation>';
         // (LEADING, TRAILING, NONE)
         $sBody .= $crlf . '<DocTabLocation>' . DOCTABLOCATION . '</DocTabLocation>';
         // only valid for thermal labels (TOP, BOTTOM)
         $sBody .= $crlf . '<DocTabContent>';
         $sBody .= $crlf . '<Type>' . DOCTABCONTENT . '</Type>';
         // (STANDARD, ZONE001, BARCODED, NONE)
         if (DOCTABCONTENT == 'ZONE001') {
             $sBody .= $crlf . '<Zone001>';
             foreach ($ZONE001_DEFINES as $zone => $settings) {
                 $sBody .= $crlf . '<HeaderValuePair>';
                 $sBody .= $crlf . '<ZoneNumber>' . $zone . '</ZoneNumber>';
                 $sBody .= $crlf . '<Header>' . $settings['Header'] . '</Header>';
                 if ($pkg->ship_method == 'GND' || $pkg->ship_method == 'GDR') {
                     $settings['Value'] = str_replace('/', '', $settings['Value']);
                 }
                 $sBody .= $crlf . '<Value>' . $settings['Value'] . '</Value>';
                 $sBody .= $crlf . '</HeaderValuePair>';
             }
             $sBody .= $crlf . '</Zone001>';
         }
         $sBody .= $crlf . '</DocTabContent>';
     } else {
         // default to pdf for laser labels
         $sBody .= $crlf . '<ImageType>' . 'PDF' . '</ImageType>';
     }
     $sBody .= $crlf . '</Label>';
     $sBody .= $crlf . '</FDXShipRequest>';
     $sBody .= $crlf;
     return $sBody;
 }
Example #3
0
 function FormatEndiciaShipRequest($pkg)
 {
     $rateCodes = array_flip($this->EndiciaRateCodes);
     $fromPostalCodes = explode('-', COMPANY_POSTAL_CODE);
     $toPostalCodes = explode('-', $pkg->ship_postal_code);
     $data = array('LabelRequest' => array('RequesterID' => MODULE_SHIPPING_ENDICIA_PARTNER_ID, 'AccountID' => MODULE_SHIPPING_ENDICIA_ACCOUNT_NUMBER, 'PassPhrase' => MODULE_SHIPPING_ENDICIA_PASS_PHRASE, 'PartnerCustomerID' => MODULE_SHIPPING_ENDICIA_ACCOUNT_NUMBER, 'PartnerTransactionID' => $pkg->purchase_invoice_id ? $pkg->purchase_invoice_id : time(), 'MailClass' => $rateCodes[$pkg->ship_method], 'MailpieceShape' => $pkg->pkg_type, 'DateAdvance' => '0', 'WeightOz' => ceil($pkg->package['weight'] * 16), 'CostCenter' => '0', 'Value' => $pkg->total_amount, 'Stealth' => 'TRUE', 'Services' => array('DeliveryConfirmation' => $pkg->delivery_confirmation ? 'ON' : 'OFF', 'COD' => $pkg->cod ? 'ON' : 'OFF', 'InsuredMail' => $pkg->ins_1 ? 'ON' : 'OFF', 'AdultSignature' => 'OFF'), 'ResponseOptions' => array('PostagePrice' => 'TRUE'), 'ToCompany' => remove_special_chars($pkg->ship_primary_name), 'ToName' => remove_special_chars($pkg->ship_contact), 'ToAddress1' => remove_special_chars($pkg->ship_address1), 'ToAddress2' => remove_special_chars($pkg->ship_address2), 'ToCity' => strtoupper($pkg->ship_city_town), 'ToState' => $pkg->ship_country_code == 'US' ? strtoupper($pkg->ship_state_province) : '', 'ToPostalCode' => $toPostalCodes[0], 'ToZIP4' => $toPostalCodes[1], 'ToPhone' => strip_alphanumeric($pkg->ship_telephone1), 'ToEMail' => $pkg->ship_email, 'FromCompany' => COMPANY_NAME, 'FromName' => COMPANY_NAME == '' ? AR_CONTACT_NAME : '', 'ReturnAddress1' => COMPANY_ADDRESS1, 'ReturnAddress2' => COMPANY_ADDRESS2, 'FromCity' => COMPANY_CITY_TOWN, 'FromState' => COMPANY_ZONE, 'FromPostalCode' => $fromPostalCodes[0], 'FromZIP4' => $fromPostalCodes[1], 'FromPhone' => strip_alphanumeric(COMPANY_TELEPHONE1), 'FromEMail' => COMPANY_EMAIL, 'LabelSize' => ENDICIA_LABEL_SIZE, 'LabelType' => 'Default', 'ImageFormat' => MODULE_SHIPPING_ENDICIA_PRINTER_TYPE, 'ImageRotation' => 'None', 'CustomsQuantity1' => 0, 'CustomsValue1' => 0, 'CustomsWeight1' => 0, 'CustomsQuantity2' => 0, 'CustomsValue2' => 0, 'CustomsWeight2' => 0, 'CustomsQuantity3' => 0, 'CustomsValue3' => 0, 'CustomsWeight3' => 0, 'CustomsQuantity4' => 0, 'CustomsValue4' => 0, 'CustomsWeight4' => 0, 'CustomsQuantity5' => 0, 'CustomsValue5' => 0, 'CustomsWeight5' => 0));
     if ($pkg->package['length'] && $pkg->package['width'] && $pkg->package['height']) {
         $data['LabelRequest']['MailpieceDimensions'] = array('Length' => $pkg->package['length'], 'Width' => $pkg->package['width'], 'Height' => $pkg->package['height']);
     }
     if (MODULE_SHIPPING_ENDICIA_TEST_MODE == 'Test') {
         $data['LabelRequest']['Test'] = 'YES';
     }
     if ($pkg->cod) {
         $data['LabelRequest']['CODAmount'] = number_format($pkg->total_amount, 2);
     }
     if ($pkg->ins_1) {
         $data['LabelRequest']['InsuredValue'] = number_format($pkg->package['value'], 2);
     }
     if (RUBBERSTAMP1) {
         $data['LabelRequest']['RubberStamp1'] = RUBBERSTAMP1;
     }
     if (RUBBERSTAMP2) {
         $data['LabelRequest']['RubberStamp2'] = RUBBERSTAMP2;
     }
     if (RUBBERSTAMP3) {
         $data['LabelRequest']['RubberStamp3'] = RUBBERSTAMP3;
     }
     return $data;
 }