public static function display($productId) { $discount = Discounts::whereStatus('active')->whereProductId($productId)->first(); if ($discount) { return $discount->discount_type == 'percentage' ? $discount->amount . '%' : $discount->amount; } else { return null; } }
public static function dropdownList($exludeDiscounted = false) { $discountedProducts = Discounts::select('product_id')->get()->lists('product_id'); if ($exludeDiscounted && $discountedProducts) { $products = Products::whereNotIn('id', Discounts::select('product_id')->get()->lists('product_id'))->orderBy('name', 'asc')->select('id', DB::raw('CONCAT(name, " - Rs ", sp) as name'))->get(); } else { $products = Products::orderBy('name', 'asc')->select('id', DB::raw('CONCAT(name, " - Rs ", sp) as name'))->get(); } return array('' => 'Select Product') + $products->lists('name', 'id'); }
public function approvingDiscounts() { if (Auth::check()) { $inputs = Input::all(); $send_details = Discounts::approveDiscounts($inputs); if ($send_details) { return Response::json(array("status" => 'success', $send_details)); } else { return Response::json(array("status" => 'failure', $send_details)); } } }
function initQuery($params) { $cost_type_id = $params['cost_type_id']; $b_active_only = $params['b_active_only']; $tables = Discounts::getTables(); $tr = $tables['discounts_global_discount_rates_table']['columns']; $this->addSelectField($tr["id"], "id"); $this->addSelectField($tr["rv_from"], "rv_from"); $this->addSelectField($tr["rv_to"], "rv_to"); $this->addSelectField($tr["cost_type_id"], "cost_type_id"); $this->addSelectField($tr["b_active"], "b_active"); $this->addSelectField($tr["cost"], "cost"); $this->WhereValue('', '', '1'); if ($cost_type_id !== NULL) { $this->WhereAnd(); $this->WhereValue($tr["cost_type_id"], DB_EQ, $cost_type_id); } if ($b_active_only === true) { $this->WhereAND(); $this->WhereValue($tr["b_active"], DB_EQ, 1); } $this->SelectOrder($tr['rv_from']); }
/** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function destroy($id) { if (!$id) { return Redirect::route('discounts.index')->with('error', 'Please provide discount id'); } $discount = Discounts::find($id); if (empty($discount)) { return Redirect::route('discounts.index')->with('error', 'Discount not found'); } Discounts::destroy($id); return Redirect::route('discounts.index')->with('success', 'Discount deleted successfully'); }
/** * Compares the discount options applicable for the vehicle by their orders * @param Reduceri $option1 * @param Reduceri $option2 * @return int < 0 if <i>order1</i> is less than * <i>order2</i>; > 0 if <i>order1</i> * is greater than <i>order2</i>, and 0 if they are * equal. */ public function compareDiscountOptions(Discounts $option1, Discounts $option2) { return strcmp($option1->getOrder(), $option2->getOrder()); }
/** * Get shipping methods. */ function get_shipping_methods($cart) { // Let cart override? if ($cart['shipping_methods']) { $methods = $cart['shipping_methods']; } else { // Zip and weight required. if (!$cart['order']['shipping']['zip'] || !$cart['weight']) { return false; } // Params used to cache shipping methods. $params = array('country' => $cart['order']['shipping']['country'], 'zip' => $cart['order']['shipping']['zip'], 'weight' => $cart['weight'], 'discounts' => $cart['discounts']); // Cache for 1 hour. $cache_uri = "/cache/shipping_methods/" . md5(serialize($params)) . "?expire=3600"; $methods = get($cache_uri); // Not cached? if (count($methods) == 0) { // Get available methods. $methods = get("/shipments/methods", $params); // Put result in cache? if ($methods && !$methods['errors']) { put($cache_uri, $methods); } } } // Apply discounts. $methods = Discounts::apply_shipping($cart, $methods, $cart['discounts']); return $methods; }
/** * Uninstall the module. * . * * uninstall() . * * , , * Discounts::getTables() $this->getTables() */ function uninstall() { $query = new DB_Table_Delete(Discounts::getTables()); global $application; $application->db->getDB_Result($query); }
/** * @return int */ private function discount() { return $this->discounts->calculate($this->books); }
/** * Get UPS rate quotes. */ function fwd_ups_rates($params, $settings) { // Configurable UPS service methods. $service_list = array('01' => 'UPS Next Day Air', '02' => 'UPS Second Day Air', '03' => 'UPS Ground', '11' => 'UPS Standard', '12' => 'UPS Three-Day Select', '13' => 'UPS Next Day Air Saver', '65' => 'UPS Worldwide Saver', '07' => 'UPS Worldwide Express', '08' => 'UPS Worldwide Expedited', '14' => 'UPS Next Day Air Early A.M.', '54' => 'UPS Worldwide Express Plus', '59' => 'UPS Second Day Air A.M.'); // If params are empty, return available methods only. if (empty($params)) { $methods = array(); foreach ((array) $settings['methods'] as $key => $method) { if ($method) { $method = is_array($method) ? $method : array(); $methods[] = array('id' => $key, 'name' => $method['name'] ?: $service_list[$key]); } } return $methods; } // Get shipper, default or specific settings. $shipper = array_merge(array('package_weight' => 100), (array) $settings['shippers'][0], (array) $settings['shippers'][$params['shipper']]); // Split package by weight limit? if ($shipper['package_weight'] && $params['weight'] > $shipper['package_weight']) { $num_packages = ceil($params['weight'] / $shipper['package_weight']); for ($i = 0; $i < $num_packages; $i++) { if ($i >= 200) { break; } $params['packages'][$i] = array('weight' => $params['weight'] / $num_packages, 'units' => $params['units']); } } else { $params['packages'][1] = array('weight' => $params['weight'] ?: 1, 'units' => $params['units']); } // Add package(s) to request. foreach ($params['packages'] as $package) { // Dimensions? if ($package['dimensions']) { $package_dimensions = "\n\t\t\t\t<Dimensions>\n\t\t\t\t\t<Length>{$package['dimensions']['length']}</Length>\n\t\t\t\t\t<Width>{$package['dimensions']['width']}</Width>\n\t\t\t\t\t<Height>{$package['dimensions']['height']}</Height>\n\t\t\t\t\t<UnitOfMeasurement>\n\t\t\t\t\t\t<Code>" . ($package['dimensions']['units'] ?: 'IN') . "</Code>\n\t\t\t\t\t</UnitOfMeasurement>\n\t\t\t\t</Dimensions>\n\t\t\t"; } else { $package_dimensions = null; } $request_packages .= "\n\t\t\t<Package>\n\t\t\t\t<PackagingType>\n\t\t\t\t\t<Code>02</Code>\n\t\t\t\t</PackagingType>\n\t\t\t\t<PackageWeight>\n\t\t\t\t\t<UnitOfMeasurement>\n\t\t\t\t\t\t<Code>" . ($package['units'] ? "{$package['units']}S" : 'LBS') . "</Code>\n\t\t\t\t\t</UnitOfMeasurement>\n\t\t\t\t\t<Weight>{$package['weight']}</Weight>\n\t\t\t\t</PackageWeight>\n\t\t\t\t{$package_dimensions}\n\t\t\t</Package>\n\t\t"; } // XML API call. $request = "\n\t\t<?xml version=\"1.0\" ?>\n\t\t<AccessRequest xml:lang='en-US'>\n\t\t\t<AccessLicenseNumber>{$settings['license']}</AccessLicenseNumber>\n\t\t\t<UserId>{$settings['login']}</UserId>\n\t\t\t<Password>{$settings['password']}</Password>\n\t\t</AccessRequest>\n\t\t<?xml version=\"1.0\" ?>\n\t\t<RatingServiceSelectionRequest>\n\t\t\t<Request>\n\t\t\t\t<RequestAction>Rate</RequestAction>\n\t\t\t\t<RequestOption>Shop</RequestOption>\n\t\t\t</Request>\n\t\t\t<PickupType>\n\t\t\t\t<Code>01</Code>\n\t\t\t</PickupType>\n\n\t\t\t<Shipment>\n\t\t\t\t<Shipper>\n\t\t\t\t\t<ShipperNumber>" . ($shipper['account'] ?: $settings['account']) . "</ShipperNumber>\n\t\t\t\t\t<Address>\n\t\t\t\t\t\t<City>{$shipper['city']}</City>\n\t\t\t\t\t\t<PostalCode>{$shipper['zip']}</PostalCode>\n\t\t\t\t\t\t<CountryCode>" . ($shipper['country'] ?: 'US') . "</CountryCode>\n\t\t\t\t\t</Address>\n\t\t\t\t</Shipper>\n\n\t\t\t\t<ShipTo>\n\t\t\t\t\t<Address>\n\t\t\t\t\t\t<City>{$params['city']}</City>\n\t\t\t\t\t\t<StateProvinceCode>{$params['state']}</StateProvinceCode>\n\t\t\t\t\t\t<PostalCode>{$params['zip']}</PostalCode>\n\t\t\t\t\t\t<CountryCode>" . ($params['country'] ?: 'US') . "</CountryCode>\n\t\t\t\t\t\t<ResidentialAddressIndicator/>\n\t\t\t\t\t</Address>\n\t\t\t\t</ShipTo>\n\n\t\t\t\t{$request_packages}\n\n\t\t\t</Shipment>\n\n\t\t</RatingServiceSelectionRequest>\n\t"; // Initialize connection with UPS service. $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $settings['host'] ?: "https://wwwcie.ups.com/ups.app/xml/Rate"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $request); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $response = curl_exec($ch); curl_close($ch); if ($response) { $doc = new SimpleXMLElement($response); $response_code = (string) $doc->Response[0]->ResponseStatusCode; } switch ($response_code) { // Good response. case 1: foreach ($doc->RatedShipment as $shipment) { if ($service_type = (string) $shipment->Service[0]->Code) { $price = (double) $shipment->TotalCharges[0]->MonetaryValue; // Markup? if ($settings['markup']) { $price = Discounts::apply_value($price, '+' . $settings['markup']); } // Discount? if ($settings['discount']) { $price = Discounts::apply_value($price, $settings['markup']); } // Rated method configured/available? if ($method = $settings['methods'][$service_type]) { $method = is_array($method) ? $method : array(); $service_name = $method['name'] ?: $service_list[$service_type]; $service_price = round($price, 2); $shipment_rates[] = array('id' => $service_type, 'name' => $service_name, 'price' => $service_price); } } } break; // Bad response. // Bad response. case 0: throw new Exception((string) $doc->Response[0]->Error[0]->ErrorDescription[0]); break; // No response? // No response? default: throw new Exception("Unknown response from UPS Rating Service"); } return $shipment_rates; }
public function getDiscount() { $inputs = Input::all(); //return Response::json(array('status'=>'success')); $discount_second_child; $discount_second_class; $discount_second_child_elligible = 0; $discount_second_class_elligible = 0; $DiscountApprove = Discounts::where('franchiseId', '=', Session::get('franchiseId'))->first(); if ($DiscountApprove['discount_second_child_approve'] != 0 && $DiscountApprove['discount_second_class_approve'] != 0) { $discount_second_child_elligible = 1; $discount_second_class_elligible = 1; $discount_second_child = $DiscountApprove['discount_second_child']; $discount_second_class = $DiscountApprove['discount_second_class']; } elseif ($DiscountApprove['discount_second_child_approve'] == 0 && $DiscountApprove['discount_second_class_approve'] != 0) { $discount_second_class_elligible = 1; $discount_second_class = $DiscountApprove['discount_second_class']; } elseif ($DiscountApprove['discount_second_child_approve'] != 0 && $DiscountApprove['discount_second_class_approve'] == 0) { $discount_second_child_elligible = 1; $discount_second_child = $DiscountApprove['discount_second_child']; } if ($discount_second_class) { } return Response::json(array('status' => 'success', 'discount_second_child' => $discount_second_child, 'discount_second_class' => $discount_second_class)); // $inputs=Input::all(); // $classes_count= StudentClasses::where('student_id','=',$inputs['studentId']) // ->where('status','=','enrolled') // //->whereDate('enrollment_start_date','>=',date("Y-m-d")) // //->whereDate('enrollment_end_date','<=',date("Y-m-d")) // ->distinct('class_id') // ->count(); // $discount=0; // if($classes_count>=1){ // $discount_data= Discounts::where('season_id','=',$inputs['seasonId'])->get(); // $discount=$discount_data[0]['discount_second_class']; // }else{ // // $student_data = Students::where('id','=',$inputs['studentId'])->get(); // $student_data = Students::where('customer_id','=',$student_data[0]['customer_id'])->get(); // $sid; // foreach($student_data as $s){ // $sid[]=$s['id']; // } // $count=0; // for($i=0;$i<count($sid);$i++){ // if(StudentClasses::where('student_id','=',$sid[$i])->exists()){ // $count++; // } // } // if($count>=1){ // $discount_data= Discounts::where('season_id','=',$inputs['seasonId'])->get(); // $discount=$discount_data[0]['discount_second_child']; // } // // } // return Response::json(array('status'=>'success','discount'=>$discount)); }
/** * Show the form for creating a new resource. * * @return Response */ public function view($id) { if (Auth::check()) { $currentPage = "STUDENTS_LIST"; $mainMenu = "STUDENTS_MAIN"; $student = Students::getStudentById($id); $franchiseeCourses = Courses::getFranchiseCoursesList(Session::get('franchiseId')); $studentEnrollments = StudentClasses::getStudentEnrollments($id); $paymentDues = PaymentDues::getAllPaymentDuesByStudent($id); $customermembership = CustomerMembership::getCustomerMembership($student['0']->customer_id); $scheduledIntroVisits = IntroVisit::getIntrovisitByStudentId($id); $discountEligibility = StudentClasses::discount($id, $student['0']->customer_id); //$paidDue= PaymentDues::getAllPaymentsMade($id); //$Due=PaymentDues::getAllDue($id); //for paid payment /* on hold for changing enrollment $paidAmountdata= PaymentDues::getAllPaymentsMade($id); for($i=0;$i<count($paidAmountdata);$i++){ $studentclasssectiondata= Classes::getstudentclasses($paidAmountdata[$i]['class_id']); $paidAmountdata[$i]['class_name']=$studentclasssectiondata[0]['class_name']; $user_Data=User::getUsersByUserId($paidAmountdata[$i]['created_by']); $paidAmountdata[$i]['receivedname']=$user_Data[0]['first_name'].$user_Data[0]['last_name']; $order_data= Orders::getOrderDetailsbyPaydueId($paidAmountdata[$i]['id']); $paidAmountdata[$i]['printurl']= url().'/orders/print/'.Crypt::encrypt($order_data[0]['id']); } */ /* $paidAmountdata= Orders::getAllPaymentsMade($id); for($i=0;$i<count($paidAmountdata);$i++){ $studentClassdata=StudentClasses::getStudentClassbyId($paidAmountdata[$i]['student_classes_id']); $paidAmountdata[$i]['enrollment_start_date']=$studentClassdata[0]['enrollment_start_date']; $paidAmountdata[$i]['enrollment_end_date']=$studentClassdata[0]['enrollment_end_date']; $paidAmountdata[$i]['selected_sessions']=$studentClassdata[0]['selected_sessions']; $studentclasssectiondata= Classes::getstudentclasses($studentClassdata[0]['class_id']); $paidAmountdata[$i]['class_name']=$studentclasssectiondata[0]['class_name']; $user_Data=User::getUsersByUserId($paidAmountdata[$i]['created_by']); $paidAmountdata[$i]['receivedname']=$user_Data[0]['first_name'].$user_Data[0]['last_name']; $paidAmountdata[$i]['printurl']= url().'/orders/print/'.Crypt::encrypt($paidAmountdata[0]['id']); } * */ //for dues // $order_due_data=Orders::getpendingPaymentsid($id); $order_due_data = PaymentDues::getAllDuebyStudentId($id); // $dueAmountdata=PaymentDues::getAllDue($id); for ($i = 0; $i < count($order_due_data); $i++) { $studentclasssectiondata = Classes::getstudentclasses($order_due_data[0]['class_id']); $order_due_data[$i]['class_name'] = $studentclasssectiondata[0]['class_name']; $user_Data = User::getUsersByUserId($order_due_data[$i]['created_by']); $order_due_data[$i]['receivedname'] = $user_Data[0]['first_name'] . $user_Data[0]['last_name']; } //getting values for present Discount for enrollment $discount_second_child = 0; $discount_second_class = 0; $discount_second_child_elligible = 0; $discount_second_class_elligible = 0; $count = 0; $DiscountApprove = Discounts::where('franchisee_id', '=', Session::get('franchiseId'))->first(); if ($DiscountApprove['discount_second_child_approve'] == 1) { $discount_second_child_elligible = 1; $discount_second_child = $DiscountApprove['discount_second_child']; } if ($DiscountApprove['discount_second_class_approve'] == 1) { $discount_second_class_elligible = 1; $discount_second_class = $DiscountApprove['discount_second_class']; } if ($discount_second_class_elligible) { $classes_count = StudentClasses::where('student_id', '=', $student[0]['id'])->where('status', '=', 'enrolled')->count(); if ($classes_count > 1) { $discount_second_class_elligible = 1; } else { $discount_second_class_elligible = 0; } } if ($discount_second_child_elligible) { $student_ids = Students::where('customer_id', '=', $student[0]['customer_id'])->select('id')->get()->toArray(); for ($i = 0; $i < count($student_ids); $i++) { if (StudentClasses::where('student_id', '=', $student_ids[$i]['id'])->where('status', '=', 'enrolled')->exists()) { $count++; } } //$discount_second_class_elligible=($count>1)?1:0; if ($count > 1) { $discount_second_class_elligible = 1; } else { $discount_second_class_elligible = 0; } } $discountEnrollmentData = Discounts::getEnrollmentDiscontByFranchiseId(); $dataToView = array("student", 'currentPage', 'mainMenu', 'franchiseeCourses', 'discountEnrollmentData', 'discount_second_class_elligible', 'discount_second_child_elligible', 'discount_second_child', 'discount_second_class', 'studentEnrollments', 'customermembership', 'paymentDues', 'scheduledIntroVisits', 'introvisit', 'discountEligibility', 'paidAmountdata', 'order_due_data'); return View::make('pages.students.details', compact($dataToView)); } else { return Redirect::to("/"); } }
static function approveDiscounts($data) { return Discounts::where('franchisee_id', '=', Session::get('franchiseId'))->update(array('discount_second_class_approve' => $data['classCheck'], 'discount_second_child_approve' => $data['childCheck'])); }
/** * Apply sub total discount. */ function apply_sub_total($cart, $sub_total, $discounts) { foreach ((array) $discounts as $discount) { foreach ((array) $discount['rules'] as $rule) { if ($rule['enabled'] !== null && !$rule['enabled']) { continue; } switch ($rule['type']) { case 'product': foreach ((array) $cart['items'] as $item) { if ($item['id'] != $rule['product_id']) { continue; } $d_qty = $discount_qty[$item['id']]; // Limit discount quantity? if ($rule['quantity']) { $qty = $rule['quantity'] > $item['quantity'] ? $item['quantity'] : $rule['quantity']; if ($d_qty + $qty >= $rule['quantity']) { $qty = $qty - ($discout_qty + $qty - $rule['quantity']); } } else { $qty = $item['quantity']; } // Subtract item from total. $sub_total -= $item['price'] * $qty; // Apply discount value to price. $item_price = self::apply_value($item['price'], $rule['value']); // Add new item price back to total. $sub_total += $item_price * $qty; // Track total qty discounted. $discount_qty[$item['id']] += $qty; } break; case 'category': foreach ((array) $cart['items'] as $item) { if (in_array($rule['category_id'], (array) $item['category_ids'])) { $d_qty = $discount_qty[$item['id']]; // Limit discount quantity? if ($rule['quantity']) { $qty = $rule['quantity'] > $item['quantity'] ? $item['quantity'] : $rule['quantity']; if ($d_qty + $qty > $rule['quantity']) { $qty = $qty - ($discout_qty + $qty - $rule['quantity']); } } else { $qty = $item['quantity']; } // Subtract item from total. $sub_total -= $item['price'] * $qty; // Apply discount value to price. $item_price = self::apply_value($item['price'], $rule['value']); // Add new item price back to total. $sub_total += $item_price * $qty; // Track total qty discounted. $discount_qty[$item['id']] += $qty; $items_discounted++; } // Break if reached category limit. if ($rule['limit'] && $items_discounted >= $rule['limit']) { break; } } break; case '': case 'total': $sub_total = Discounts::apply_value($sub_total, $rule['value']); break; } } } return $sub_total; }
/** * Get FedEx rate quotes. */ function fwd_fedex_rates($params, $settings) { // Configurable FedEx service methods. $service_list = array('FEDEX_GROUND' => 'Fedex Ground', 'FEDEX_EXPRESS_SAVER' => 'Fedex Express Saver', 'FEDEX_2_DAY' => 'Fedex 2-Day Air', 'FEDEX_2_DAY_AM' => 'Fedex 2-Day Air A.M.', 'STANDARD_OVERNIGHT' => 'Fedex Standard Overnight', 'PRIORITY_OVERNIGHT' => 'Fedex Priority Overnight', 'FIRST_OVERNIGHT' => 'Fedex First Overnight', 'INTERNATIONAL_PRIORITY' => 'Fedex Priority International'); // If params are empty, return available methods only. if (empty($params)) { $methods = array(); foreach ((array) $settings['methods'] as $key => $method) { if ($method) { $method = is_array($method) ? $method : array(); $methods[] = array('id' => $key, 'name' => $method['name'] ?: $service_list[$key]); } } return $methods; } // Get shipper, default or specific. $shipper = array_merge(array('package_weight' => 100), (array) $settings['shippers'][0], (array) $settings['shippers'][$params['shipper']]); // Disable WSDL caching. ini_set('soap.wsdl_cache_enabled', '0'); // Create SOAP client with Fedex RateService WSDL. $client = new SoapClient(dirname(__FILE__) . '/wsdl/RateService_v10.wsdl', array('trace' => 1)); // Set endpoint host? if ($settings['host']) { $client->__setLocation($settings['host']); } // Split package by weight limit? if ($shipper['package_weight'] && $params['weight'] > $shipper['package_weight']) { $num_packages = ceil($params['weight'] / $shipper['package_weight']); for ($i = 0; $i < $num_packages; $i++) { if ($i >= 200) { break; } $params['packages'][$i] = array('insurance_amount' => $params['insurance_amount'] / $num_packages, 'insurance_currency' => $params['insurance_currency'], 'weight' => $params['weight'] / $num_packages, 'units' => $params['units']); } } // Setup request. $request = array('WebAuthenticationDetail' => array('UserCredential' => array('Key' => $settings['key'], 'Password' => $settings['password'])), 'ClientDetail' => array('AccountNumber' => $settings['account'], 'MeterNumber' => $settings['meter']), 'TransactionDetail' => array('CustomerTransactionId' => '*** Rate Request v10 using PHP ***'), 'Version' => array('ServiceId' => 'crs', 'Major' => '10', 'Intermediate' => '0', 'Minor' => '0'), 'ReturnTransitAndCommit' => true, 'RequestedShipment' => array('DropoffType' => 'REGULAR_PICKUP', 'ShipTimestamp' => date('c'), 'PackagingType' => 'YOUR_PACKAGING', 'Shipper' => array('Address' => array('StreetLines' => array($shipper['address']), 'City' => $shipper['city'], 'StateOrProvinceCode' => $shipper['state'], 'PostalCode' => $shipper['zip'], 'CountryCode' => $shipper['country'] ?: 'US')), 'Recipient' => array('Address' => array('StreetLines' => array($params['address']), 'City' => $params['city'], 'StateOrProvinceCode' => $params['state'], 'PostalCode' => $params['zip'], 'CountryCode' => $params['country'] ?: 'US')), 'ShippingChargesPayment' => array('PaymentType' => 'SENDER', 'Payor' => array('AccountNumber' => $shipper['account'] ?: $settings['account'], 'CountryCode' => $shipper['country'] ?: 'US')), 'RateRequestTypes' => 'ACCOUNT', 'RateRequestTypes' => 'LIST', 'PackageCount' => $params['packages'] ? count($params['packages']) : '1', 'RequestedPackages' => array())); // Default single package? if (count($params['packages']) == 0) { $params['packages'][0] = array('insurance_amount' => $params['insurance_amount'], 'insurance_currency' => $params['insurance_currency'], 'weight' => $params['weight'] ?: 1, 'units' => $params['units']); if ($params['dimensions']) { $params['packages'][0]['dimensions'] = array('length' => $params['dimensions']['length'], 'width' => $params['dimensions']['width'], 'height' => $params['dimensions']['height'], 'units' => $params['dimensions']['units']); } } // Add package(s) to request. foreach ($params['packages'] as $seq => $package) { $request['RequestedShipment']['RequestedPackageLineItems'][$seq] = array('SequenceNumber' => $seq + 1, 'GroupPackageCount' => 1, 'InsuredValue' => array('Amount' => $package['insurance_amount'] ?: 0, 'Currency' => $package['insurance_currency'] ?: 'USD'), 'Weight' => array('Value' => $package['weight'], 'Units' => $package['units'] ?: 'LB')); // Dimensions? if ($package['dimensions']) { $request['RequestedShipment']['RequestedPackageLineItems'][$seq]['Dimensions'] = array('Length' => $package['dimensions']['length'], 'Width' => $package['dimensions']['width'], 'Height' => $package['dimensions']['height'], 'Units' => $package['dimensions']['units'] ?: 'IN'); } } // Try the request. try { $response = $client->getRates($request); if ($response->HighestSeverity != 'FAILURE' && $response->HighestSeverity != 'ERROR') { if (!is_array($response->RateReplyDetails)) { $response->RateReplyDetails = array($response->RateReplyDetails); } foreach ($response->RateReplyDetails as $RateReplyDetail) { $service_type = $RateReplyDetail->ServiceType; if ($service_list[$service_type]) { $rsd = end($RateReplyDetail->RatedShipmentDetails); $tnc = $rsd->ShipmentRateDetail->TotalNetCharge; $price = (double) preg_replace('/[^\\d\\.]/i', '', $tnc->Amount); // Markup? if ($settings['markup']) { $price = Discounts::apply_value($price, '+' . $settings['markup']); } // Discount? if ($settings['discount']) { $price = Discounts::apply_value($price, $settings['markup']); } // Rated method configured/available? if ($method = $settings['methods'][$service_type]) { $method = is_array($method) ? $method : array(); $service_name = $method['name'] ?: $service_list[$service_type]; $service_price = round($price, 2); $shipment_rates[] = array('id' => $service_type, 'name' => $service_name, 'price' => $service_price); } } } } elseif ($response->HighestSeverity == 'FAILURE' || $response->HighestSeverity == 'ERROR') { throw new Exception($response->Notifications->LocalizedMessage ?: $response->Notifications->Message); } } catch (SoapFault $e) { throw new Exception($e->getMessage()); } return $shipment_rates; }