protected function fixTypes(array $data, array $typeMap, $currencyCode)
    {
        if (empty($typeMap)) {
            $typeMap = $this->attributeTypeMap;
        }

        if (empty($currencyCode)) {
            $currencyCode = $this->_getStore()->getDefaultCurrencyCode();
        }

        foreach ($typeMap as $code => $type) {
            if (array_key_exists($code, $data) && (is_scalar($data[$code]) || is_null($data[$code]))) {
                switch ($type) {
                    case 'bool':
                        $data[$code] = (!empty($data[$code]) && strtolower($data[$code]) !== 'false');
                        break;
                    case 'int':
                        $data[$code] = intval($data[$code]);
                        break;
                    case 'float':
                        $data[$code] = floatval($data[$code]);
                        break;
                    case 'currency':
                        $amount = floatval($data[$code]);
                        $precision = Zend_Locale_Data::getContent(null, 'currencyfraction', $currencyCode);
                        if ($precision === false) {
                            $precision = Zend_Locale_Data::getContent(null, 'currencyfraction');
                        }
                        if ($precision !== false) {
                            $amount = round($amount, $precision);
                            $formatted = Mage::app()->getLocale()->currency($currencyCode)->toCurrency($amount, ['precision' => $precision]);
                        } else {
                            $formatted = Mage::app()->getLocale()->currency($currencyCode)->toCurrency($amount);
                        }
                        $data[$code] = ['currency' => $currencyCode, 'amount' => $amount, 'formatted' => $formatted];
                        break;
                    case 'string':
                    default:
                        $data[$code] = (is_null($data[$code]) ? $data[$code] : (string)$data[$code]);
                        break;
                }
            }
        }

        return $data;
    }
protected function fixTypes(array $data, array $typeMap, $currencyCode)
    {
        if (empty($typeMap)) {
            $typeMap = $this->attributeTypeMap;
        }

        if (empty($currencyCode)) {
            $currencyCode = $this->_getStore()->getDefaultCurrencyCode();
        }

        foreach ($typeMap as $code => $type) {
            if (array_key_exists($code, $data) && (is_scalar($data[$code]) || is_null($data[$code]))) {
                switch ($type) {
                    case 'bool':
                        $data[$code] = (!empty($data[$code]) && strtolower($data[$code]) !== 'false');
                        break;
                    case 'int':
                        $data[$code] = intval($data[$code]);
                        break;
                    case 'float':
                        $data[$code] = floatval($data[$code]);
                        break;
                    case 'currency':
                        $amount = floatval($data[$code]);
                        $precision = Zend_Locale_Data::getContent(null, 'currencyfraction', $currencyCode);
                        if ($precision === false) {
                            $precision = Zend_Locale_Data::getContent(null, 'currencyfraction');
                        }
                        if ($precision !== false) {
                            $amount = round($amount, $precision);
                            $formatted = Mage::app()->getLocale()->currency($currencyCode)->toCurrency($amount, ['precision' => $precision]);
                        } else {
                            $formatted = Mage::app()->getLocale()->currency($currencyCode)->toCurrency($amount);
                        }
                        $data[$code] = ['currency' => $currencyCode, 'amount' => $amount, 'formatted' => $formatted];
                        break;
                    case 'string':
                    default:
                        $data[$code] = (is_null($data[$code]) ? $data[$code] : (string)$data[$code]);
                        break;
                }
            }
        }

        return $data;
    }
protected function fixTypes ( array $ data , array $ typeMap , $ currencyCode ) { if ( empty ( $ typeMap ) ) { $ typeMap = $ this -> attributeTypeMap ; } if ( empty ( $ currencyCode ) ) { $ currencyCode = $ this -> _getStore ( ) -> getDefaultCurrencyCode ( ) ; } foreach ( $ typeMap as $ code => $ type ) { if ( array_key_exists ( $ code , $ data ) && ( is_scalar ( $ data [ $ code ] ) || is_null ( $ data [ $ code ] ) ) ) { switch ( $ type ) { case 'bool' : $ data [ $ code ] = ( ! empty ( $ data [ $ code ] ) && strtolower ( $ data [ $ code ] ) !== 'false' ) ; break ; case 'int' : $ data [ $ code ] = intval ( $ data [ $ code ] ) ; break ; case 'float' : $ data [ $ code ] = floatval ( $ data [ $ code ] ) ; break ; case 'currency' : $ amount = floatval ( $ data [ $ code ] ) ; $ precision = Zend_Locale_Data :: getContent ( null , 'currencyfraction' , $ currencyCode ) ; if ( $ precision === false ) { $ precision = Zend_Locale_Data :: getContent ( null , 'currencyfraction' ) ; } if ( $ precision !== false ) { $ amount = round ( $ amount , $ precision ) ; $ formatted = Mage :: app ( ) -> getLocale ( ) -> currency ( $ currencyCode ) -> toCurrency ( $ amount , [ 'precision' => $ precision ] ) ; } else { $ formatted = Mage :: app ( ) -> getLocale ( ) -> currency ( $ currencyCode ) -> toCurrency ( $ amount ) ; } $ data [ $ code ] = [ 'currency' => $ currencyCode , 'amount' => $ amount , 'formatted' => $ formatted ] ; break ; case 'string' : default : $ data [ $ code ] = ( is_null ( $ data [ $ code ] ) ? $ data [ $ code ] : ( string ) $ data [ $ code ] ) ; break ; } } } return $ data ; }
Type cast array values

@param array  $data
@param array  $typeMap
@param string $currencyCode ISO currency code

@return array

@throws Zend_Currency_Exception
@throws Zend_Locale_Exception
Type cast array values