deivisonarthur
8/14/2013 - 2:44 PM

Eval.php

<?php
/*
  ############### Exemplo do XML do Jacotei

  Basta chamar o price com as funcões assim:

  <parcelas>{price,[numerototalparcelas]}</parcelas>
  <valor>{price,[valortotalparcelas]}</valor>

 */

/*
  <?xml version="1.0" encoding="utf-8"?>
  <produtos>
  {each type="product"}
  <produto>
  <codigo>{sku}</codigo>
  <nome>{name,[utf8_encode]}</nome>
  <categoria><![CDATA[{category,[utf8_encode]}]]></categoria>
  <marca><![CDATA[{manufacturer,[utf8_encode]}]]></marca>
  <preco>{price,[number_format 2]}</preco>
  <condicao_especial><![CDATA[No Boleto ou Depósito bancário - 5% de desconto]]></condicao_especial>
  <link><![CDATA[{url}?&utm_source=jacotei&utm_medium=cpc&utm_campaign={name}]]></link>
  <imagem><![CDATA[{image}]]></imagem>
  <parcelamento>
  <parcelas>{price,[numerototalparcelas]}</parcelas>
  <valor>{price,[valortotalparcelas]}</valor>
  <max_parcelas_sem_juros>{price,[numerototalparcelas]}</max_parcelas_sem_juros>
  </parcelamento>
  </produto>
  {/each}
  </produtos>
 */

class Mirasvit_FeedExport_Helper_Eval extends Mage_Core_Helper_Abstract {

    public function execute($value, $formatterLine) {
        $formatter = explode(' ', $formatterLine);
        $method = $formatter[0];

        array_shift($formatter);
        $args = $formatter;
        if (!is_array($args)) {
            $args = array();
        }

        if (function_exists($method)) {
            foreach ($args as $key => $arg) {
                if (!is_numeric($arg)) {
                    $args[$key] = "'" . $arg . "'";
                }
            }

            $cmd = 'return ' . $method . '("' . addslashes($value) . '"';

            if (count($args)) {
                $cmd .= ',' . implode(',', $args) . '';
            }

            $cmd .= ');';

            $value = @eval($cmd);
        } elseif (method_exists($this, $method)) {
            array_unshift($args, $value);
            $value = call_user_func_array(array($this, $method), $args);
        } else {
            $value .= $formatterLine;
        }

        /*
          ############################################################################################################
          CRIADO POR DEIVISON PARA TRATAR NUMERO TOTAL DO PARCELAMENTO / ALTERADO POR ISAAC PARCELA NO VALOR MINIMO
          ############################################################################################################
         */

        if ($method == "numerototalparcelas") {
            $parcelas                   = 6;
            $valor_min_parcelas         = 15;
            $valor                      = $value;
            
            if ($valor > $valor_min_parcelas){
                for ($counter = $parcelas; $counter >= 1; $counter--){
                    if ($valor/$counter >= $valor_min_parcelas){
                        $parcelas = $counter;
                        break;
                    }
                }
            }else{
                $parcelas = 1;
            }
            
            return $parcelas;
        }

        /*
          ############################################################################################################
          CRIADO POR DEIVISON PARA TRATAR VALOR TOTAL DO PARCELAMENTO
          ############################################################################################################
         */

        if ($method == "valortotalparcelas") {
            $parcelas                   = 6;
            $valor_min_parcelas         = 15;
            $valor                      = $value;
            
            if ($valor > $valor_min_parcelas){
                for ($counter = $parcelas; $counter >= 1; $counter--){
                    if ($valor/$counter >= $valor_min_parcelas){
                        $valor_parcelas     = $valor/$counter;
                        break;
                    }
                }
            }else{
                $valor_parcelas = $valor;
            }
            return number_format($valor_parcelas, 2, '.', '');
            //return $valor_parcelas;
        }
        /* ####################### */


        //retorno defeault caso nao encontre nenhum metodo
        return $value;
    }

    public function convert($value, $currency) {
        $value = Mage::helper('directory')->currencyConvert($value, Mage::app()->getStore()->getBaseCurrencyCode(), $currency);
        $value = number_format($value, 2, '.', '');

        return $value;
    }
}