Jump to content

Magento Extension


Recommended Posts

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 by DavideBar
Link to comment
Share on other sites

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

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
Link to comment
Share on other sites

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 by DavideBar
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.