static function cartToArr($obj, $controller, $couponCode = NULL, $member = NULL) { if (!$obj) { return NULL; } $coupon = NULL; if (!$couponCode) { $couponCode = $obj->getCouponCode(); } if (!$member) { $member = $controller->getMemberObj(); } $items = self::_getCartObjItems($controller, $obj); $coupons = self::_generateCoupons($controller, $obj, $couponCode, $member); $cart_segment = $controller->getKrcoConfigValue('cart', 'segment'); $shippingDest = $obj->getShippingDestination(); $discounts = self::_getDiscountsOfCoupons($controller, $items, $coupons, $member, $obj); $shippingVals = self::_getShippingVals($controller, $obj, $items, $couponCode, $member, $discounts); $shippingVal = $shippingVals['summary']; $shippingDiscount = self::_calculateMultipleDiscounts($shippingVal, $discounts['shipping_discounts']); $total = array_sum(array_map(function ($item) { return $item['quantity']; }, $items)); $checkoutStatus = self::_getCheckoutStatus($controller, $obj, $items, $shippingVals); $isDiscountIgnoreShipping = FALSE; if ($controller->getKrcoConfigValue('cart', 'is_discount_ignore_shipping')) { $isDiscountIgnoreShipping = TRUE; } $pointRule = $controller->getPointRule(); $pointRule = array('point_per_dollar' => Helper_Structure::getArrayValue($pointRule, 'point_per_dollar'), 'dollar_per_point' => Helper_Structure::getArrayValue($pointRule, 'dollar_per_point')); $arr = array('code' => $obj->getCode(), 'currency_symbol' => $controller->getCurrencySymbol(), 'items' => $items, 'shipping' => $shippingVal, 'shipping_details' => $shippingVals['details'], 'shipping_method' => $shippingDest, 'backorder_shipping_method' => $obj->getBackorderShippingDestination(), 'shipping_destination' => $shippingDest, 'backorder_shipping_destination' => $obj->getBackorderShippingDestination(), 'shipping_country' => $obj->getShippingCountry(), 'shipping_city' => $obj->getShippingCity(), 'npoints' => self::_getNPointsUsed($obj, $member), 'discounts' => $discounts['item'], 'shipping_discount' => $shippingDiscount, 'coupon_code' => $couponCode, 'link' => $controller->composeLink("/{$cart_segment}"), 'checkout_link' => $controller->composeLink("/{$cart_segment}/place_order", array('cart_code' => $obj->getCode())), 'total_items' => $total, 'total_weight' => self::getTotalWeightOfItems($items), 'is_checkout_enabled' => $checkoutStatus['is_enabled'], 'checkout_disabled_reason' => $checkoutStatus['disabled_reason'], 'is_discount_ignore_shipping' => $isDiscountIgnoreShipping, 'delivery_timestamp' => strtotime($obj->getDeliveryDate()), 'tax_rate' => self::getTaxRateOfCart($controller, $obj), 'point_rule' => $pointRule); $taxableTotal = Helper_Cart::getTaxableTotal($arr); $taxVal = $arr['tax_rate'] * $taxableTotal; $arr['tax'] = $taxVal; $arr['grand_total'] = $taxableTotal + $taxVal; $arr['item_total'] = Helper_Cart::getItemTotal($items); $arr['npoints_earned'] = Helper_Cart::getPointsEarned($controller, $arr); return $arr; }