/** * generate BillSafe informations from basket * @return array criterion for billSafe */ private function getBasketDetails() { $user = JFactory::getUser(); $cart = VirtueMartCart::getCart(false); $items = $cart->products; $prices = $cart->cartPrices; $params = array(); if ($items) { $i = 0; // ITEMS foreach ($items as $key => $item) { $i++; $prefix = 'CRITERION.POS_' . sprintf('%02d', $i); $params[$prefix . '.POSITION'] = $i; $params[$prefix . '.QUANTITY'] = (int) $item->quantity; if (empty($item->product_unit)) { $item->product_unit = 'Stk.'; } $params[$prefix . '.UNIT'] = $item->product_unit; #price in cents $params[$prefix . '.AMOUNT_UNIT_GROSS'] = $prices[$key]['basePriceWithTax'] * 100; $params[$prefix . '.AMOUNT_GROSS'] = $prices[$key]['subtotal_with_tax'] * 100; $item->product_name = preg_replace('/%/', 'Proz.', $item->product_name); $item->product_name = preg_replace('/("|\'|!|$|=)/', ' ', $item->product_name); $params[$prefix . '.TEXT'] = strlen($item->product_name) > 100 ? substr($item->product_name, 0, 90) . '...' : $item->product_name; $params[$prefix . '.ARTICLE_NUMBER'] = $item->product_sku; $params[$prefix . '.PERCENT_VAT'] = sprintf('%1.2f', $prices[$key]['VatTax'][$item->product_tax_id]['1']); $params[$prefix . '.ARTICLE_TYPE'] = 'goods'; } // SHIPPING require VMPATH_ADMIN . DS . 'models' . DS . 'shipmentmethod.php'; $vmms = new VirtueMartModelShipmentmethod(); $shipmentInfo = $vmms->getShipments(); foreach ($shipmentInfo as $skey => $svalue) { if ($svalue->virtuemart_shipmentmethod_id == $cart->virtuemart_shipmentmethod_id) { $shipmentData = array(); foreach (explode("|", $svalue->shipment_params) as $line) { list($key, $value) = explode('=', $line, 2); $shipmentData[$key] = str_replace('"', '', $value); } $shipmentTaxId = $shipmentData['tax_id']; $shipmentTax = sprintf('%1.2f', $cart->cartData['VatTax'][$shipmentTaxId]['calc_value']); } } $i++; $prefix = 'CRITERION.POS_' . sprintf('%02d', $i); $params[$prefix . '.POSITION'] = $i; $params[$prefix . '.QUANTITY'] = '1'; $params[$prefix . '.UNIT'] = 'Stk.'; $params[$prefix . '.AMOUNT_UNIT_GROSS'] = $prices['salesPriceShipment'] * 100; $params[$prefix . '.AMOUNT_GROSS'] = $prices['salesPriceShipment'] * 100; $params[$prefix . '.TEXT'] = 'Shipping'; $params[$prefix . '.ARTICLE_NUMBER'] = 'Shipping'; $params[$prefix . '.PERCENT_VAT'] = $shipmentTax; $params[$prefix . '.ARTICLE_TYPE'] = 'shipment'; // COUPON if (isset($prices['couponValue']) && $prices['couponValue'] != '') { $i++; $prefix = 'CRITERION.POS_' . sprintf('%02d', $i); $params[$prefix . '.POSITION'] = $i; $params[$prefix . '.QUANTITY'] = '1'; $params[$prefix . '.UNIT'] = 'Stk.'; $params[$prefix . '.AMOUNT_UNIT_GROSS'] = $prices['couponValue'] * 100; $params[$prefix . '.AMOUNT_GROSS'] = $prices['couponValue'] * 100; $params[$prefix . '.TEXT'] = 'Coupon'; $params[$prefix . '.ARTICLE_NUMBER'] = 'Coupon'; $params[$prefix . '.PERCENT_VAT'] = $prices['couponTax']; $params[$prefix . '.ARTICLE_TYPE'] = 'voucher'; } } return $params; }
$RATES[$v['attributes']['CURRENCY']] = $v['attributes']['RATE']; } if ($v['tag'] == "ORIGCURRENCY") { $origcurrency = $v['value']; } } $origcurrency = $origcurrency != "" ? $origcurrency : "EUR"; $RATES[$origcurrency] = 1; } $cat = new VirtuemartModelCategory(); $product = new VirtueMartModelProduct(); $image = new VirtueMartModelMedia(); $currency = new VirtueMartModelCurrency(); $config =& JFactory::getConfig(); if ($hasShipping && $add_shipping == "on") { $shipment = new VirtueMartModelShipmentmethod(); $defaultFrontEndLang = explode("-", $config->getValue('config.language')); $db = $shipment->getDbo(); $db->setQuery("SELECT virtuemart_country_id FROM #__virtuemart_countries WHERE country_2_code = '{$defaultFrontEndLang[1]}'"); $result = $db->loadAssoc(); $defaultFrontEndCountryCode = $result['virtuemart_country_id']; $db->setQuery("SELECT virtuemart_shoppergroup_id FROM #__virtuemart_shoppergroups WHERE `default` = 1"); $defaultShopperGroup = $db->loadObject(); $shippings = $shipment->getShipments(); $availableShippingMethods = array(); if (!empty($shippings) && $shippings !== null) { $pattern = '/countries=(\\[.*("' . $defaultFrontEndCountryCode . '").*\\])?("")?\\|zip_start=""\\|zip_stop=""\\|/'; foreach ($shippings as $shipping) { if ($shipping->published == 1 && preg_match($pattern, $shipping->shipment_params) && (in_array($defaultShopperGroup->virtuemart_shoppergroup_id, $shipping->virtuemart_shoppergroup_ids) || empty($shipping->virtuemart_shoppergroup_ids))) { $shipping->nbproducts_start = preg_replace('/(^.*nbproducts_start=")(.*)(".*$)/U', '\\2', $shipping->shipment_params); $shipping->nbproducts_stop = preg_replace('/(^.*nbproducts_stop=")(.*)(".*$)/U', '\\2', $shipping->shipment_params);