Перейти к содержимому

Реферальная программа Мегаплана


  • Закрытая тема Тема закрыта

Не отображает заказ Joomla 1.5.7+VM 1.1.3

#1 kocmocivan

kocmocivan
  • Пользователь
  • 99 сообщений
  • Репутация: 0
0

Отправлено 07 Январь 2010 - 11:05

Собствено перерыл весь инет и нигде нет похожей проблемы...
ПРоблема:
Когда кто-либо делает заказ, то а админке, а так же на почту скидывается что поступил новый заказ, но там написаны только "реквезиты" покупателя и сумма заказа, но почему-то нет самого перечисления кол-ва товаров или товаров вообще!

Кто нибудь сталкивался с похожей проблеммой?

 

 

  • 0

#2 kocmocivan

kocmocivan
    Topic Starter
  • Пользователь
  • 99 сообщений
  • Репутация: 0

Отправлено 09 Январь 2010 - 13:08

Только что заметил, что заказ не показывается только если покупка осуществленна без регистрации...
Если регистрация идет то заказ отображается нормально...
Я как раз в свое время добавил возможность заказа без регистрации... теперь об это жалею...
  • 0

#3 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 09 Январь 2010 - 14:03

kocmocivan, скорее всего скрипт написан так, что заказ приписывается к зарегистрированному юзеру, а если вы разрешили заказывать без регистрации, приписывать заказ не к кому. Всё таки с такими вопросами по VM надо писать на специализированных форумах. Конечно есть вероятность, что кто-то уже разбирался с этой проблемой, но я честно, ничем помочь не смогу, это надо копаться в Virtue Mart, а времени нет. Было бы больше времени, помог бы обязательно.
  • 0

#4 kocmocivan

kocmocivan
    Topic Starter
  • Пользователь
  • 99 сообщений
  • Репутация: 0

Отправлено 09 Январь 2010 - 18:53

ZiTosS да в том то и дело, что на "специализировнных форумах" те кто действительно разбираются просто молчат или не залезают в подобные темы (неоднократно проверял), причем как на рускоязысных так и на родных...
Тут может и возможности нет помоч, но покрайней мере есть желание.
Что касается моей траблы.

Есть 4 скрипта отвечающих за такую работу заказов...
Изображение - Это пример использования данных скриптов на "живом" примере...
А у меня почему то не работают... иотображаются ТОЛЬКО цены...
Собствено скрипты взял из ээтой темы.. мжет кому игодится или у кого заработае...
http://www.joomlapor.../rass/rass8.php
  • 0

#5 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 09 Январь 2010 - 19:50

kocmocivan, А на почту приходит в виде, ваш бы показали, а то так на словах разное можно понять.

Товар:
Количество:
Артикул:
Цена: [цена]

или просто

Цена: [цена]


  • 0

#6 kocmocivan

kocmocivan
    Topic Starter
  • Пользователь
  • 99 сообщений
  • Репутация: 0

Отправлено 09 Январь 2010 - 21:01

Да втом то и дел ч на почту приходит все тоже самое (предположим заказ такой же), только без перечислений наименваний т.е. нет никаких товаров в этой таблице просто ПУСтО), а ниже идет Итоговая цена как тут...
Т.е. просто не пишется нчего в "гафе" Данные о товарах... т.е. ни понять ни сколько их ни собственно чего именно человек заказал НЕЛЬЗЯ... только конечную цену...
А если делать с регистрацией то все работает... НИФиГА не понимаю...
  • 0

#7 kocmocivan

kocmocivan
    Topic Starter
  • Пользователь
  • 99 сообщений
  • Репутация: 0

Отправлено 10 Январь 2010 - 03:40

Решение было не в неработающем скрипте или админке , а в правах на файлы и на папку.... Данная функция - ЗАКАЗ без регистрации, осуществляется создание документа в папке (а не в БД , как если бы он был с регистрацией)...А до жтого не было прав на папку на запись... поэтому значение - сумма только вписывалась...
  • 0

#8 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 10 Январь 2010 - 15:32

kocmocivan, посмотрел те 4 файла, что в архиве. Вам нужно разобрать файл checkout.without_register_form.php
Разбираться нужно со строк
	$message = "Данные о товарах\n";
$message .= "--------------------------------------------------";
for($i = 0; $i < $cart["idx"]; $i++) {

Далее идут запросы к БД, я попробую расписать каждую строку если смогу.

	$message = "Данные о товарах\n"; // в переменную $message добавляем строку "Данные о товарах"
$message .= "--------------------------------------------------"; // добавляем строку-разделитель
/* обходим весь список товаров указанных в карте в цикле */
// НАЧАЛО ЦИКЛА
for($i = 0; $i < $cart["idx"]; $i++) {
/* составляем запрос на получение данных о товаре по его id */
$r = "SELECT product_id,product_in_stock,product_sales,product_parent_id,product_sku,product_
name ";
$r .= "FROM #__{vm}_product WHERE product_id='".$cart[$i]["product_id"]."'";
$dboi->query($r); // выполняем вышеуказанный запрос
$dboi->next_record(); // переходим к следующей записи(то есть у нас она всего одна) Данная запись будет использоваться ниже.

$product_price_arr = $ps_product->get_adjusted_attribute_price($cart[$i]["product_id"], $cart[$i]["description"]); // получаем установленные параметры цены (массив)
$product_price = $product_price_arr["product_price"]; // получаем цену товара из массива цен (что за цены такие в множественном числе я не знаю)

/* НАЧАЛО КОММЕНТИРОВАНИЯ */
//if( empty( $_SESSION['product_sess'][$cart[$i]["product_id"]]['tax_rate'] )) {
// $my_taxrate = $ps_product->get_product_taxrate($cart[$i]["product_id"] );
//}
//else {
// $my_taxrate = $_SESSION['product_sess'][$cart[$i]["product_id"]]['tax_rate'];
//}
/* КОНЕЦ КОММЕНТИРОВАНИЯ */

// Attribute handling (Обработчик аттрибутов)
// а вот и использование той записи из БД
$product_parent_id = $dboi->f('product_parent_id'); // получаем id родительского продукта (0 - нет родителя)
$description = ''; // инициализирует переменную описания пустой строкой
if( $product_parent_id > 0 ) { //если есть родителский продукт

$db_atts = $ps_product->attribute_sql( $dboi->f('product_id'), $product_parent_id ); // запрос к таблице атрибутов (как я понял)
while( $db_atts->next_record()) { // обход атрибутов для формирования описания
$description .= $db_atts->f('attribute_name').': '.$db_atts->f('attribute_value').'; '; // составляем описание из выбранного и родительского (учитываем всё описание)
}
}

$description .= $_SESSION['cart'][$i]["description"]; // прикрепляем к описанию, описание из карты

$product_final_price = round( ($product_price *($my_taxrate+1)), 2 ); // определяем финальную цену продукта

$vendor_id = $db->f("vendor_id"); // получаем id поставщика

$product_currency = $product_price_arr["product_currency"]; // получаем валюту, в которой у нас находится цена товара

/* формирование запроса вставки элемента заказа в таблицу заказов */
$q = "INSERT INTO #__{vm}_order_item ";
$q .= "(order_id, user_info_id, vendor_id, product_id, order_item_sku, order_item_name, ";
$q .= "product_quantity, product_item_price, product_final_price, ";
$q .= "order_item_currency, order_status, product_attribute, cdate, mdate) ";
$q .= "VALUES ('";
$q .= $order_id . "', '";
$q .= $d["ship_to_info_id"] . "', '";
$q .= $vendor_id . "', '";
$q .= $cart[$i]["product_id"] . "', '";
$q .= addslashes($dboi->f("product_sku")) . "', '";
$q .= addslashes($dboi->f("product_name")) . "', '";
$q .= $cart[$i]["quantity"] . "', '";
$q .= $product_price . "', '";
$q .= $product_final_price . "', '";
$q .= $product_currency . "', ";
$q .= "'P','";
// added for advanced attribute storage
$q .= addslashes( $description ) . "', '";
// END advanced attribute modifications
$q .= $timestamp . "','";
$q .= $timestamp . "'";
$q .= ")";

$db->query($q);
$db->next_record();

// посл добавления элемента заказа он же и используется для вывода в письме данных о товаре
// Берем данные о товаре
$message .= "\n";
$message .= $VM_LANG->_PHPSHOP_PRODUCT.": "; // добавуляем " Товар:" (в зависимости от языка может меняться)
if ($db->f("product_parent_id")) { // если существует родительский товар (я не могу сказать что это, т.к. в записи заказа нет данного поля)
$message .= $dboi->f("order_item_name")."\n"; // добавуляем имя элемента заказа (имя заказанного товара)
$message .= "SERVICE = "; // добавуляем строку "SERVICE = "
}
$message .= $dboi->f("product_name")."; ".$description."\n"; // добавляем имя товара (используется запись, созданная вначале цикла for)
$message .= $VM_LANG->_PHPSHOP_ORDER_PRINT_QUANTITY.": "; // добавляем "Количество:" (в зависимости от языка может меняться)
$message .= $cart[$i]['quantity']."\n"; // добавляем уколичество заказанного товара
$message .= $VM_LANG->_PHPSHOP_ORDER_PRINT_SKU.": "; // добавляем "Артикул:" (в зависимости от языка может меняться)
$message .= $dboi->f("product_sku")."\n"; // добавляем артикул

$message .= $VM_LANG->_PHPSHOP_ORDER_PRINT_PRICE.": "; // добавляем "Цена:" (в зависимости от языка может меняться)
$message .= $product_final_price; // добавляем финальную цену товара
$message .= "\n";

/* Update Stock Level and Product Sales (обновление (уменьшение) количества на складе и (увеличение) количества продаж) */
if ($dboi->f("product_in_stock")) {
$q = "UPDATE #__{vm}_product ";
$q .= "SET product_in_stock = product_in_stock - ".$cart[$i]["quantity"];
$q .= " WHERE product_id = '" . $cart[$i]["product_id"]. "'";
$db->query($q);
$db->next_record();
}


$q = "UPDATE #__{vm}_product ";
$q .= "SET product_sales = product_sales + ".$cart[$i]["quantity"];
$q .= " WHERE product_id = '".$cart[$i]["product_id"]."'";
$db->query($q);
$db->next_record();

}
// КОНЕЦ ЦИКЛА

/* НАЧАЛО КОММЕНТИРОВАНИЯ */
// DOWNLOAD MOD SKIPPED BECAUSE IT IS NOT REAL TO TRADE FILES WITHOUT PAYMENT

//if (AFFILIATE_ENABLE == '1') {
// $ps_affiliate->register_sale($order_id);
//}
/* КОНЕЦ КОММЕНТИРОВАНИЯ */

// Export the order_id so the checkout complete page can get it (нигде не используется, всё закомментировано)
$d["order_id"] = $order_id;

/* НАЧАЛО КОММЕНТИРОВАНИЯ */
// Now as everything else has been done, we can update
// the Order Status if the Payment Method is
// "Use Payment Processor", because:
// Payment Processors return false on any error
// Only completed payments return true!
//if( $enable_processor == "Y" ) {
// eval( "if( defined(\"".$_PAYMENT->payment_code."_VERIFIED_STATUS\")) {
// \$d['order_status'] = ".$_PAYMENT->payment_code."_VERIFIED_STATUS;
// \$update_order = true;
// }
// else
// \$update_order = false;" );
// if ( $update_order ) {
// require_once(CLASSPATH."ps_order.php");
// $ps_order =& new ps_order();
// $ps_order->order_status_update($d);
// }
//}
/* КОНЕЦ КОММЕНТИРОВАНИЯ */

$message .= "--------------------------------------------------\n"; // добавляем строку-разделитель
$message .= "Итого: ".$CURRENCY_DISPLAY->getFullValue($order_total)."\n"; // добавляем общую цену
$message .= "--------------------------------------------------\n"; // добавляем строку-разделитель


Сразу могу сказать, у вас может быть проблема с формированием карты товара. Проверить можно так:
вставить перед строкой
	for($i = 0; $i < $cart["idx"]; $i++) {

Строку вывода количества товаров в карте:
	$message .= "Количество заказов: {$cart["idx"]}";

И попробовать заказать, посмотреть что выведется в письме, какое значение имеет переменная $cart['idx'], по моим предположениям это нуль

Добавлено:
Ну ничего, я вам расписал этот кусок обработки данных заказа. Может будет интересно.
Я так понимаю используется БД SQLite. Она на файлах, вот и проблема.
  • 0

#9 kocmocivan

kocmocivan
    Topic Starter
  • Пользователь
  • 99 сообщений
  • Репутация: 0

Отправлено 10 Январь 2010 - 19:22

Даааа примерно это же изучал ночью... :)
Но расписыннае комменты - ЭТО СУПЕР! - отпало множество вопросов...
Но слава богу на данный момент все работает... !
  • 0

#10 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 11 Январь 2010 - 01:03

kocmocivan, вообщем тему закрываю, вопрос решён. Удачи в познании Joomla и VirtueMart :)
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru