[TYPO3-commerce] delivery costs based on total costs
Jeroen Visser
jeroen at roquin.nl
Mon Oct 8 15:18:58 CEST 2007
I have tried thes hooks:
function handleBasket
['postartAddUid']
['postpayArt']
['postdelArt']
Jeroen Visser wrote:
> Hello Franz,
> Thanks for the tip I am busy trying implementing it.
>
> These are the the steps I have followed:
>
> 1) Build an extension
> 1a) key: com_deliverycosts
> 1b) "Just include library"
> 2) Edit the extension files
> 2a) Wrote a function getBasketSum($object, &$invokingObj) in
> class.tx_comdeliverycosts_pi1.php
> Just to see if I get inside this function I have placed aa
> simple mail() function inside it.
> 3a) Setup "ext_localconf.php"
> 3b)
>
> if (!defined ('TYPO3_MODE')) die ('Access denied.');
>
> t3lib_extMgm::addPItoST43($_EXTKEY,'pi1/class.tx_comdeliverycosts_pi1.php','_pi1','',1);
>
>
> if (t3lib_extMgm::isLoaded('commerce')) {
> $_GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['commerce/pi2/class.tx_commerce_pi2.php']['postAddArticle'][]='EXT:com_deliverycosts/pi1/class.tx_comdeliverycosts_pi1.php:tx_comdeliverycosts_class->getBasketSum';
>
>
> }
> 3c) Clear cache in typo3conf
>
> Now when I change the amount of articles in the basket I should get a
> e-mail that I am inside the function. Unfortunately I don't get it.
> According to the mentioned steps above, is there something I forget, mis
> configured? Hope that I have described my problem understandable.
>
> Kind regards,
> Jeroen
>
>
> Franz Koch wrote:
>> Hi,
>>
>>> I am searching for a method in which I can say:
>>>
>>> * total costs to 100,- => delivery costs 5,-
>>> * total costs from 100,- to 300,- => delivery costs 4,-
>>> * total costs above 300,- => no delivery costs
>>>
>>> Does anyone has some experience with this in commerce?
>>
>> I used a hook for this, using the price-scale fields to define which
>> delivery price applies for which total cost.
>>
>> hook 'postAddArticle' or so from the basket.
>>
>> my function:
>> ------------
>> // recalculate delivery price
>> if ($parent->basket_items[$itemId]->getArticleTypeUid() ==
>> DELIVERYArticleType) {
>> $basketItem = &$parent->basket_items[$itemId];
>> $articleObj = &$basketItem->article;
>> //get correct price based on total purchase costs
>> $arrayOfPricesUids = $articleObj->getPossiblePriceUids();
>>
>> if (is_array($arrayOfPricesUids)) {
>> foreach ($arrayOfPricesUids as $priceUid) {
>> $prices[$priceUid] = new
>> tx_commerce_article_price($priceUid,$basketItem->lang_id);
>> $prices[$priceUid]->load_data();
>> }
>> }
>> if (is_array($prices)) {
>> $price_id = $articleObj->get_article_price_uid();
>> $basketPriceNet =
>> $parent->getArticleTypeSumNet(NORMALArticleType);
>> foreach ($prices as $key => $priceObject) {
>> if ($priceObject->price_scale_amount_start*100 <
>> $basketPriceNet) {
>> $basketItem->price_uid = $key;
>> $basketItem->price = $priceObject;
>> }
>> }
>> $basketItem->priceNet = $basketItem->price->get_price_net();
>> $basketItem->priceGross = $basketItem->price->get_price_gross();
>> $basketItem->recalculate_item_sums();
>> }
>> }
>>
>> -----------
>>
>> maybe that helps. You probably have to loop through the basket items
>> and call this code snippet inside the loop, because I added a new hook
>> to commerce (which hopefully will make it into the core) which I used
>> for it.
>>
>> --
>> Kind regards,
>> Franz
>>
>
>
>
More information about the TYPO3-project-commerce
mailing list