DavideBar Posted April 9, 2014 Report Share Posted April 9, 2014 (edited) Boas a todos, tenho este modulo que arranjei neste site https://inchoo.net/ecommerce/magento/magento-maximum-allowed-order-amount/. Que faz quase o que eu quero. Mas preciso de em vez de ir buscar a quantia máxima quero que só seja possivel fazer um total de 60€ em compras trimestrais, para tal fiz este bocado dentro do 'Observer.php': public function enforceSingleOrderLimit($observer) { if (!$this->_helper->isModuleEnabled()) { return; } $quote = $observer->getEvent()->getQuote(); //Get current customer ID $customerId = Mage::getSingleton('customer/session')->getCustomer()->getId(); //Get the resource model $resource = Mage::getSingleton('core/resource'); //Retrieve the read connection $readConnection = $resource->getConnection('core_read'); //Retrieve our table name $table = $resource->getTableName('sales/order'); date_default_timezone_set('Europe/Lisbon'); $date = strtotime(date('Y-m-d H:i:s')); $year = date('Y'); if(strtotime($year . '-01-01 00:00:00') <= $date && $date <= strtotime($year . '-03-31 00:00:00')){ $date_begin = $year . '-01-01 00:00:00'; $date_end = $year . '-03-31 00:00:00'; }else if(strtotime($year . '-04-01 00:00:00') <= $date && $date <= strtotime($year . '-06-30 00:00:00')){ $date_begin = $year . '-04-01 00:00:00'; $date_end = $year . '-06-30 00:00:00'; }else if(strtotime($year . '-07-01 00:00:00') <= $date && $date <= strtotime($year . '-09-31 00:00:00')){ $date_begin = $year . '-07-01 00:00:00'; $date_end = $year . '-09-31 00:00:00'; }else if(strtotime($year . '-10-01 00:00:00') <= $date && $date <= strtotime($year . '-12-30 00:00:00')){ $date_begin = $year . '-10-01 00:00:00'; $date_end = $year . '-12-30 00:00:00'; } //query para ir buscar o total de compras feitas nesse trimestre $total_quadrante = $readConnection->fetchAll('SELECT base_subtotal FROM ' . $table . ' WHERE ' . ' customer_id = ' . (int)$customerId . ' AND (created_at BETWEEN ' . '"' . $date_begin . '"' . ' AND ' . '"' . $date_end . '"' . ')'); $gasto = 0; foreach($total_quadrante as $child) { $gasto += $child['base_subtotal']; } $totals = Mage::getSingleton('checkout/session')->getQuote()->getTotals(); $subtotal = $totals["subtotal"]->getValue(); //Subtotal value sem portes $max = (float)$this->_helper->getSingleOrderTopAmount(); $max = $max+1; //+1 para ser possivel fazer compras até 60€ inclusive $restante = $max - $gasto; //valor disponivel para o cliente gastar nesse trimestre if ($subtotal > $restante) { $formattedPrice = Mage::helper('core')->currency($this->_helper->getSingleOrderTopAmount(), true, false); Mage::getSingleton('checkout/session')->addError( $this->_helper->__($this->_helper->getSingleOrderTopAmountMsg(), $formattedPrice)); Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('checkout/cart')); Mage::app()->getResponse()->sendResponse(); exit; } } até ai tudo bem, mas a partir do momento em que se está a aproximar do valor o botao de submeter compra quando se clica fica a pensar e não sai dali. O que poderá ser ? Edited April 9, 2014 by DavideBar Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted April 9, 2014 Report Share Posted April 9, 2014 só com esses sintomas e esse código é complicado. o melhor é confirmar a existência de entradas de erro no log do apache IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
DavideBar Posted April 10, 2014 Author Report Share Posted April 10, 2014 só com esses sintomas e esse código é complicado. o melhor é confirmar a existência de entradas de erro no log do apache O problema é que no log do apache as entradas são as correctas. Ainda por cima o magento não tem uma documentação bem detalhada e esse é um dos grandes problemas :/ Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted April 10, 2014 Report Share Posted April 10, 2014 Ainda por cima o magento não tem uma documentação bem detalhada e esse é um dos grandes problemas :/ sim eu sei ... mas olhando para o teu código, só existe um ciclo (razão para meter o servidor a processar sem resposta), e esse ciclo parece correcto. logo, será muito difícil determinar qual o problema ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
DavideBar Posted April 10, 2014 Author Report Share Posted April 10, 2014 (edited) sim eu sei ... mas olhando para o teu código, só existe um ciclo (razão para meter o servidor a processar sem resposta), e esse ciclo parece correcto. logo, será muito difícil determinar qual o problema ... Ando aqui a bater com a cabeça nas paredes, se eu tirar aquele restante aquilo funciona, mas sempre que tento com o restante quando está quase a ficar a zero o magento fica parvo. Sabes onde posso perguntar sobre magento, além do forum aqui, no forum do magento (http://www.magentocommerce.com/boards/viewthread/951294/) ? Edited April 10, 2014 by DavideBar Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now