Ошибка в модулях Shop-script

Тема в разделе "Shop-script", создана пользователем MimiK, 13 май 2008.

Статус темы:
Закрыта.
  1. MimiK

    MimiK Создатель

    Регистр.:
    21 фев 2008
    Сообщения:
    12
    Симпатии:
    3
    Господа, требуется Ваша помощь. В особенности тех, кто пользуется Shop-Script в Украине.
    После установки нет возможности в администрировании зайти в раздел "Модули". Сразу вылетает ошибка:
    Код:
    title = "Выставление счетов"; $this->description = "Модуль формирования счетов на оплату для юридических лиц"; $this->sort_order = 3; $this->Settings = array( "CONF_PAYMENTMODULE_INVOICE_JUR_CURRENCY", "CONF_PAYMENTMODULE_INVOICE_JUR_NDS", "CONF_PAYMENTMODULE_INVOICE_JUR_NDS_IS_INCLUDED_IN_PRICE", "CONF_PAYMENTMODULE_INVOICE_JUR_EMAIL_HTML_INVOICE", "CONF_PAYMENTMODULE_INVOICE_JUR_COMPANYNAME", "CONF_PAYMENTMODULE_INVOICE_JUR_COMPANYADDRESS", "CONF_PAYMENTMODULE_INVOICE_JUR_COMPANYPHONE", "CONF_PAYMENTMODULE_INVOICE_JUR_BANK_ACCOUNT_NUMBER", "CONF_PAYMENTMODULE_INVOICE_JUR_INN", "CONF_PAYMENTMODULE_INVOICE_JUR_KPP", "CONF_PAYMENTMODULE_INVOICE_JUR_BANKNAME", "CONF_PAYMENTMODULE_INVOICE_JUR_BANK_KOR_NUMBER", "CONF_PAYMENTMODULE_INVOICE_JUR_BIK" ); } function _initSettingFields(){ $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_JUR_CURRENCY'] = array( 'settings_value' => '0', 'settings_title' => 'Валюта - рубли', 'settings_description' => 'Счета на оплату выписываются в ру***х. Выберите из списка валют магазина рубль. При формировании счета будет использоваться значение курса ру***. Если валюта не определена, будет использован курс выбранной пользователем валюты', 'settings_html_function' => 'setting_CURRENCY_SELECT(', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_JUR_NDS'] = array( 'settings_value' => '0', 'settings_title' => 'Ставка НДС (%)', 'settings_description' => 'Укажите ставку НДС в процентах. Если Вы работаете по упрощенной системе налогообложения, укажите 0', 'settings_html_function' => 'setting_TEXT_BOX(0,', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_JUR_NDS_IS_INCLUDED_IN_PRICE'] = array( 'settings_value' => '1', 'settings_title' => 'НДС уже включен в стоимость товаров', 'settings_description' => 'Включите эту опцию, если налог уже включен в стоимость товаров в Вашем магазине. Если же НДС не включен в стоимость и должен прибавляться дополнительно, выключите эту опцию', 'settings_html_function' => 'setting_CHECK_BOX(', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_JUR_EMAIL_HTML_INVOICE'] = array( 'settings_value' => '1', 'settings_title' => 'Отправлять покупателю HTML-счет', 'settings_description' => 'Включите эту опцию, если хотите, чтобы покупателю автоматически отправлялся счет в HTML-формате. Если опция выключена, то покупателю будет отправлена ссылка на счет на сайте магазина', 'settings_html_function' => 'setting_CHECK_BOX(', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_JUR_COMPANYNAME'] = array( 'settings_value' => '', 'settings_title' => 'Название компании', 'settings_description' => 'Укажите название организации, от имени которой выписывается счет', 'settings_html_function' => 'setting_TEXT_BOX(0,', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_JUR_COMPANYADDRESS'] = array( 'settings_value' => '', 'settings_title' => 'Адрес компании', 'settings_description' => 'Укажите адрес организации, от имени которой выписывается счет', 'settings_html_function' => 'setting_TEXT_BOX(0,', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_JUR_COMPANYPHONE'] = array( 'settings_value' => '', 'settings_title' => 'Телефон компании', 'settings_description' => 'Укажите телефон организации', 'settings_html_function' => 'setting_TEXT_BOX(0,', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_JUR_BANK_ACCOUNT_NUMBER'] = array( 'settings_value' => '', 'settings_title' => 'Расчетный счет', 'settings_description' => 'Номер расчетного счета организации', 'settings_html_function' => 'setting_TEXT_BOX(0,', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_JUR_INN'] = array( 'settings_value' => '', 'settings_title' => 'ИНН', 'settings_description' => 'ИНН организации', 'settings_html_function' => 'setting_TEXT_BOX(0,', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_JUR_KPP'] = array( 'settings_value' => '', 'settings_title' => 'КПП', 'settings_description' => '', 'settings_html_function' => 'setting_TEXT_BOX(0,', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_JUR_BANKNAME'] = array( 'settings_value' => '', 'settings_title' => 'Наименование банка', 'settings_description' => '', 'settings_html_function' => 'setting_TEXT_BOX(0,', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_JUR_BANK_KOR_NUMBER'] = array( 'settings_value' => '', 'settings_title' => 'Корреспондентский счет', 'settings_description' => '', 'settings_html_function' => 'setting_TEXT_BOX(0,', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_JUR_BIK'] = array( 'settings_value' => '', 'settings_title' => 'БИК', 'settings_description' => '', 'settings_html_function' => 'setting_TEXT_BOX(0,', 'sort_order' => 1, ); //создать таблицу, в которую будет записывать информацию для счета // - сумма к оплате в выбранной валюте if(!in_array(strtolower(CINVOICEJUR_DB_TABLE), db_get_all_tables())){ $sql = ' CREATE TABLE '.CINVOICEJUR_DB_TABLE.' (module_id INT UNSIGNED, orderID INT, company_name varchar(64), company_inn varchar(64), nds_included int default 0, nds_rate float default 0, RUR_rate float default 1) '; db_query($sql); } } function payment_form_html() { $text = ""; $text.= "
    Название организации:	
    ИНН:	
    "; return $text; } function payment_process($order) { //проверить правильность ввода if (!isset($_POST["minvoicejur_company_name"]) || strlen( trim($_POST["minvoicejur_company_name"]) ) == 0) { return "Пожалуйста, введите название организации, на имя которой будет выставляться счет"; } if (!isset($_POST["minvoicejur_inn"]) || strlen( trim($_POST["minvoicejur_inn"]) ) == 0) { return "Пожалуйста, введите ИНН организации, на имя которой будет выставляться счет"; } return 1; } function after_processing_php( $orderID ) { //сохранить сумму счета $orderID = (int) $orderID; $order = ordGetOrder( $orderID ); if ($order) { $q = db_query("select count(*) from ".CINVOICEJUR_DB_TABLE." where orderID=$orderID AND module_id='{$this->ModuleConfigID}'"); $row = db_fetch_row($q); if ($row[0] > 0) //удалить все старые записи { db_query("delete from ".CINVOICEJUR_DB_TABLE." where orderID=$orderID AND module_id='{$this->ModuleConfigID}'"); } $q = db_query("select currency_value from ".CURRENCY_TYPES_TABLE." where CID=".( (int)$this->_getSettingValue('CONF_PAYMENTMODULE_INVOICE_JUR_CURRENCY') ) ); $row = db_fetch_row($q); $RUR_rate = $row ? (float)$row[0] : 1; //добавить новую запись $sql = "insert into ".CINVOICEJUR_DB_TABLE." (module_id, orderID, company_name, company_inn, nds_included, nds_rate, RUR_rate) values (".$this->ModuleConfigID.", $orderID, '".TransformStringToDataBase($_POST["minvoicejur_company_name"])."', '".TransformStringToDataBase($_POST["minvoicejur_inn"])."', '".$this->_getSettingValue('CONF_PAYMENTMODULE_INVOICE_JUR_NDS_IS_INCLUDED_IN_PRICE')."', ".(float)$this->_getSettingValue('CONF_PAYMENTMODULE_INVOICE_JUR_NDS').", $RUR_rate )"; db_query($sql); $URLprefix = trim( CONF_FULL_SHOP_URL ); $URLprefix = str_replace("http://", "", $URLprefix); $URLprefix = str_replace("https://", "", $URLprefix); $URLprefix = "http://".$URLprefix; if ($URLprefix[ strlen($URLprefix)-1 ] != '/') { $URLprefix .= "/"; } //отправить счет покупателю по электронной почте if ($this->_getSettingValue('CONF_PAYMENTMODULE_INVOICE_JUR_EMAIL_HTML_INVOICE') == 1) //html { $mySmarty = new Smarty; //core smarty object $mySmarty->template_dir = "./modules/templates/"; //define smarty vars $mySmarty->hassign( "billing_lastname", $order["billing_lastname"] ); $mySmarty->hassign( "billing_firstname", $order["billing_firstname"] ); $mySmarty->hassign( "billing_city", $order["billing_city"] ); $mySmarty->hassign( "billing_zip", $order["billing_zip"] ); $mySmarty->hassign( "billing_address", $order["billing_address"] ); $mySmarty->hassign( "orderID", $orderID ); $mySmarty->hassign( "order_time", $order["order_time_mysql"] ); //сумма счета $q = db_query("select company_name, company_inn, nds_included, nds_rate, RUR_rate from ".CINVOICEJUR_DB_TABLE." where orderID=".$orderID." AND module_id='{$this->ModuleConfigID}'"); $row = db_fetch_row($q); if ($row) //сумма найдена в файле с описанием счета { $mySmarty->hassign( "customer_companyname", $row["company_name"] ); $mySmarty->hassign( "customer_inn", $row["company_inn"] ); $nds_rate = (float) $row["nds_rate"]; $RUR_rate = (float) $row["RUR_rate"]; $nds_included = !strcmp((string)$row["nds_included"],"1") ? 1 : 0; } else //информация о счет не найдена { die ("Счет не найден в базе данных"); } //заказанные товары $order_content = ordGetOrderContent( $orderID ); $amount = 0; foreach( $order_content as $key => $val) { $order_content[$key]["Price"] = $this->_my_formatprice ( $order_content[$key]["Price"] * $RUR_rate ); $order_content[$key]["Price_x_Quantity"] = $this->_my_formatprice ( $val["Quantity"] * $val["Price"] * $RUR_rate ); $amount += (float) str_replace(",","",$order_content[$key]["Price_x_Quantity"]); } $shipping_rate = $order["shipping_cost"]*$RUR_rate; $order["discount_value"] = round((float)$order["order_discount"] * $amount)/100; $mySmarty->assign( "order_discount", $order["order_discount"] ); $mySmarty->assign( "order_discount_value", $this->_my_formatprice($order["discount_value"]) ); $amount += $shipping_rate; //+стоимость доставки $mySmarty->assign( "order_content", xHtmlSpecialChars($order_content), null, 'name' ); $mySmarty->assign( "order_content_items_count", count($order_content) + 1 ); $mySmarty->assign( "order_subtotal", $this->_my_formatprice($amount) ); $amount -= $order["discount_value"]; if ($nds_rate <= 0) //показать НДС { $mySmarty->assign( "order_tax_amount", "нет" ); $mySmarty->assign( "order_tax_amount_string", "нет" ); } else { //налог не расчитывается на стоимость доставки //если вы хотите, чтобы налог расчитывался и на стоимость доставки замените ниже // '($amount-$shipping_rate)' на '$amount' if (!$nds_included) //налог включен { $tax_amount = round ( ($amount-$shipping_rate) * $nds_rate ) / 100; $amount += $tax_amount; } else //прибавить налог { $tax_amount = round ( 100 * ($amount-$shipping_rate) * $nds_rate / ($nds_rate+100) ) / 100; } $mySmarty->assign( "order_tax_amount", $this->_my_formatprice($tax_amount) ); $mySmarty->assign( "order_tax_amount_string", $this->create_string_representation_of_a_number($tax_amount) ); } $mySmarty->assign( "order_total", $this->_my_formatprice($amount) ); $mySmarty->assign( "order_total_string", $this->create_string_representation_of_a_number($amount) ); //доставка if ($shipping_rate > 0) { $mySmarty->assign( "shipping_type", $order["shipping_type"] ); $mySmarty->assign( "shipping_rate", $this->_my_formatprice($shipping_rate) ); } $mySmarty->assign("shopping_cart_url", $URLprefix); //путь к файлу логотипа $mySmarty->assign('InvoiceModule', $this); $invoice = $mySmarty->fetch("invoice_jur.tpl.html"); //отправить счет покупателю ss_mail($order["customer_email"], "Счет на оплату", $invoice, "From: \"".CONF_SHOP_NAME."\"<".CONF_GENERAL_EMAIL.">\n". stripslashes( str_replace( "text/plain", "text/html", EMAIL_MESSAGE_PARAMETERS ) )."\nReturn-path: <". CONF_GENERAL_EMAIL.">"); /*mail(CONF_GENERAL_EMAIL, "Счет на оплату - заказ #".$orderID, $invoice, "From: \"".CONF_SHOP_NAME."\"<".CONF_GENERAL_EMAIL.">;\n". stripslashes( str_replace( "text/plain", "text/html", EMAIL_MESSAGE_PARAMETERS ) )."\nReturn-path: <". CONF_GENERAL_EMAIL.">");*/ } else //ссылка на счет { $invoice_url = $URLprefix . "invoice_jur.php?moduleID=".$this->ModuleConfigID."&orderID=$orderID&order_time=" . base64_encode( $order["order_time_mysql"] ) . "&customer_email=" . base64_encode( $order["customer_email"] ); ss_mail($order["customer_email"], "Счет на оплату","Здравствуйте!\n\nСпасибо за Ваш заказ.\nСчет на оплату Вы можете посмотреть и распечатать по адресу:\n" . $invoice_url . "\n\nС уважением,\n".CONF_SHOP_NAME, "From: \"".CONF_SHOP_NAME."\"<".CONF_GENERAL_EMAIL.">;\n". stripslashes(EMAIL_MESSAGE_PARAMETERS)."\nReturn-path: <". CONF_GENERAL_EMAIL.">"); } } return ""; } function after_processing_html( $orderID ) { //открыть окно со счетом $order = ordGetOrder( $orderID ); if(!$this->ModuleConfigID){ $sql = ' SELECT module_id FROM '.MODULES_TABLE.' WHERE module_name="'.$this->title.'" '; @list($this->ModuleConfigID) = db_fetch_row(db_query($sql)); } $res = ""; $res .= "\n"; return $res; } function uninstall($_ModuleConfigID = 0){ PaymentModule::uninstall($_ModuleConfigID); if(!count(modGetModuleConfigs(get_class($this)))){ //удалить таблицу с информацией о счетах db_query("DROP TABLE IF EXISTS ".CINVOICEJUR_DB_TABLE); }else { $sql = ' DELETE FROM '.CINVOICEJUR_DB_TABLE.' WHERE module_id="'.$this->ModuleConfigID.'" '; } } //следующие функции дублируют функции из invoice_jur.php, лежащего в корневой папке Shop-Script PREMIUM. Функции одинаковые, было принято решение не выносить их в отдельный общедо function _my_formatPrice($price) { $price = round($price*100)/100; if (round($price*10) == $price*10 && round($price)!=$price) $price = "$price"."0"; //to avoid prices like 17.5 - write 17.50 instead return _formatPrice($price); } function number2string($n,$rod) //перевести число $n в строку. Число обязательно должно быть 0 < $n < 1000. $rod указывает на род суффикса (0 - женский, 1 - мужской; например, "рубль" - 1, "тысяча" - 0). { $a = floor($n / 100); $b = floor(($n - $a*100) / 10); $c = $n % 10; $s = ""; switch($a) { case 1: $s = "сто"; break; case 2: $s = "двести"; break; case 3: $s = "триста"; break; case 4: $s = "четыреста"; break; case 5: $s = "пятьсот"; break; case 6: $s = "шестьсот"; break; case 7: $s = "семьсот"; break; case 8: $s = "восемьсот"; break; case 9: $s = "девятьсот"; break; } $s .= " "; if ($b != 1) { switch($b) { case 1: $s .= "десять"; break; case 2: $s .= "двадцать"; break; case 3: $s .= "тридцать"; break; case 4: $s .= "сорок"; break; case 5: $s .= "пятьдесят"; break; case 6: $s .= "шестьдесят"; break; case 7: $s .= "семьдесят"; break; case 8: $s .= "восемьдесят"; break; case 9: $s .= "девяносто"; break; } $s .= " "; switch($c) { case 1: $s .= $rod ? "один" : "одна"; break; case 2: $s .= $rod ? "два" : "две"; break; case 3: $s .= "три"; break; case 4: $s .= "четыре"; break; case 5: $s .= "пять"; break; case 6: $s .= "шесть"; break; case 7: $s .= "семь"; break; case 8: $s .= "восемь"; break; case 9: $s .= "девять"; break; } } else //...дцать { switch($c) { case 0: $s .= "десять"; break; case 1: $s .= "одиннадцать"; break; case 2: $s .= "двенадцать"; break; case 3: $s .= "тринадцать"; break; case 4: $s .= "четырнадцать"; break; case 5: $s .= "пятьнадцать"; break; case 6: $s .= "шестьнадцать"; break; case 7: $s .= "семьнадцать"; break; case 8: $s .= "восемьнадцать"; break; case 9: $s .= "девятьнадцать"; break; } } return $s; } function create_string_representation_of_a_number( $n ) // создает строковое представление суммы. Например $n = 123. // результат будет "Сто двадцать три ру*** 00 копеек" { //разделить сумма на разряды: единицы, тысячи, миллионы, миллиарды (больше миллиардов не проверять :) ) $billions = floor($n / 1000000000); $millions = floor( ($n-$billions*1000000000) / 1000000); $grands = floor( ($n-$billions*1000000000-$millions*1000000) / 1000); $roubles = floor( ($n-$billions*1000000000-$millions*1000000-$grands*1000) );//$n % 1000; //копейки $kop = round ( $n*100 - round( floor($n)*100 ) ); if ($kop < 10) $kop = "0".(string)$kop; $s = ""; if ($billions > 0) { $t = "ов"; $temp = $billions % 10; if (floor(($billions % 100)/10) != 1) { if ($temp == 1) $t = ""; else if ($temp >=2 && $temp <= 4) $t = "а"; } $s .= $this->number2string($billions,1)." миллиард$t "; } if ($millions > 0) { $t = "ов"; $temp = $millions % 10; if (floor(($millions % 100)/10) != 1) { if ($temp == 1) $t = ""; else if ($temp >=2 && $temp <= 4) $t = "а"; } $s .= $this->number2string($millions,1)." миллион$t "; } if ($grands > 0) { $t = ""; $temp = $grands % 10; if (floor(($grands % 100)/10) != 1) { if ($temp == 1) $t = "а"; else if ($temp >=2 && $temp <= 4) $t = "и"; } $s .= $this->number2string($grands,0)." тысяч$t "; } if ($roubles > 0) { $rub = "ей"; $temp = $roubles % 10; if (floor(($roubles % 100)/10) != 1) { if ($temp == 1) $rub = "ь"; else if ($temp >=2 && $temp <= 4) $rub = "я"; } $s .= $this->number2string($roubles,1)." рубл$rub "; } { $kp = "ек"; $temp = $kop % 10; if (floor(($kop % 100)/10) != 1) { if ($temp == 1) $kp = "йка"; else if ($temp >=2 && $temp <= 4) $kp = "йки"; } $s .= "$kop копе$kp"; } //теперь сделать первую букву заглавной if ($roubles>0 || $grands>0 || $millions>0 || $billions>0) { $cnt=0; while($s[$cnt]==" ") $cnt++; $s[$cnt] = chr( ord($s[$cnt])- 32 ); } return $s; } } ?>title = "Квитанция"; $this->description = "Модуль формирования квитанции на оплату"; $this->sort_order = 2; $this->Settings = array( "CONF_PAYMENTMODULE_INVOICE_PHYS_CURRENCY", "CONF_PAYMENTMODULE_INVOICE_PHYS_DESCRIPTION", "CONF_PAYMENTMODULE_INVOICE_PHYS_EMAIL_HTML_INVOICE", "CONF_PAYMENTMODULE_INVOICE_PHYS_COMPANYNAME", "CONF_PAYMENTMODULE_INVOICE_PHYS_BANK_ACCOUNT_NUMBER", "CONF_PAYMENTMODULE_INVOICE_PHYS_INN", "CONF_PAYMENTMODULE_INVOICE_PHYS_KPP", "CONF_PAYMENTMODULE_INVOICE_PHYS_BANKNAME", "CONF_PAYMENTMODULE_INVOICE_PHYS_BANK_KOR_NUMBER", "CONF_PAYMENTMODULE_INVOICE_PHYS_BIK" ); } function _initSettingFields(){ $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_PHYS_CURRENCY'] = array( 'settings_value' => '0', 'settings_title' => 'Валюта квитанции', 'settings_description' => 'Выберите валюту, в которой будет указываться сумма в квитанции. Если тип вылюты не определен, то квитанция будет выписываться в той валюте, которая выбрана пользователем при оформлении заказа', 'settings_html_function' => 'setting_CURRENCY_SELECT(', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_PHYS_DESCRIPTION'] = array( 'settings_value' => 'Оплата заказа №[orderID]', 'settings_title' => 'Описание покупки', 'settings_description' => 'Укажите описание платежей. Вы можете использовать строку [orderID] - она автоматически будет заменена на номер заказа', 'settings_html_function' => 'setting_TEXT_BOX(0,', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_PHYS_EMAIL_HTML_INVOICE'] = array( 'settings_value' => '1', 'settings_title' => 'Отправлять покупателю HTML-квитанцию', 'settings_description' => 'Включите эту опцию, если хотите, чтобы покупателю автоматически отправлялась квитанция в HTML-формате. Если опция выключена, то покупателю будет отправлена ссылка на квитанцию на сайте магазина', 'settings_html_function' => 'setting_CHECK_BOX(', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_PHYS_COMPANYNAME'] = array( 'settings_value' => '', 'settings_title' => 'Название компании', 'settings_description' => 'Укажите название организации, от имени которой выписывается квитанция', 'settings_html_function' => 'setting_TEXT_BOX(0,', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_PHYS_BANK_ACCOUNT_NUMBER'] = array( 'settings_value' => '', 'settings_title' => 'Расчетный счет', 'settings_description' => 'Номер расчетного счета организации', 'settings_html_function' => 'setting_TEXT_BOX(0,', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_PHYS_INN'] = array( 'settings_value' => '', 'settings_title' => 'ИНН', 'settings_description' => 'ИНН организации', 'settings_html_function' => 'setting_TEXT_BOX(0,', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_PHYS_KPP'] = array( 'settings_value' => '', 'settings_title' => 'КПП', 'settings_description' => '', 'settings_html_function' => 'setting_TEXT_BOX(0,', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_PHYS_BANKNAME'] = array( 'settings_value' => '', 'settings_title' => 'Наименование банка', 'settings_description' => '', 'settings_html_function' => 'setting_TEXT_BOX(0,', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_PHYS_BANK_KOR_NUMBER'] = array( 'settings_value' => '', 'settings_title' => 'Корреспондентский счет', 'settings_description' => '', 'settings_html_function' => 'setting_TEXT_BOX(0,', 'sort_order' => 1, ); $this->SettingsFields['CONF_PAYMENTMODULE_INVOICE_PHYS_BIK'] = array( 'settings_value' => '', 'settings_title' => 'БИК', 'settings_description' => '', 'settings_html_function' => 'setting_TEXT_BOX(0,', 'sort_order' => 1, ); //создать таблицу, в которую будет записывать информацию для квитанции // - сумма к оплате в выбранной валюте if(!in_array(strtolower(CINVOICEPHYS_DB_TABLE), db_get_all_tables())){ $sql = ' CREATE TABLE '.CINVOICEPHYS_DB_TABLE.' (module_id INT UNSIGNED, orderID INT, order_amount_string varchar(64)) '; db_query($sql); } } function after_processing_php( $orderID ) { //сохранить сумму квитанции $orderID = (int) $orderID; $order = ordGetOrder( $orderID ); if ($order) { $q = db_query("select count(*) from ".CINVOICEPHYS_DB_TABLE." where orderID=$orderID AND module_id='{$this->ModuleConfigID}'"); $row = db_fetch_row($q); if ($row[0] > 0) //удалить все старые записи { db_query("delete from ".CINVOICEPHYS_DB_TABLE." where orderID=$orderID AND module_id='{$this->ModuleConfigID}'"); } //добавить новую запись db_query("insert into ".CINVOICEPHYS_DB_TABLE." (module_id, orderID, order_amount_string) values (".$this->ModuleConfigID.", $orderID, '".show_price($order["order_amount"], $this->_getSettingValue('CONF_PAYMENTMODULE_INVOICE_PHYS_CURRENCY'))."' )"); //отправить квитанцию покупателю по электронной почте if ($this->_getSettingValue('CONF_PAYMENTMODULE_INVOICE_PHYS_EMAIL_HTML_INVOICE') == 1) //html { $mySmarty = new Smarty; //core smarty object //define smarty vars $mySmarty->template_dir = "./modules/templates/"; $mySmarty->hassign( "billing_lastname", $order["billing_lastname"] ); $mySmarty->hassign( "billing_firstname", $order["billing_firstname"] ); $mySmarty->hassign( "billing_city", $order["billing_city"] ); $mySmarty->hassign( "billing_address", $order["billing_address"] ); $mySmarty->hassign( "invoice_description", str_replace("[orderID]", (string)$orderID, $this->_getSettingValue('CONF_PAYMENTMODULE_INVOICE_PHYS_DESCRIPTION')) ); //сумма квитанции $q = db_query("select order_amount_string from ".CINVOICEPHYS_DB_TABLE." where orderID=$orderID AND module_id='{$this->ModuleConfigID}'"); $row = db_fetch_row($q); if ($row) //сумма найдена в файле с описанием квитанции { $mySmarty->assign( "invoice_amount", $row[0] ); } else //сумма не найдена - показываем в текущей валюте { $mySmarty->assign( "invoice_amount", show_price($order["order_amount"]) ); } $mySmarty->assign('InvoiceModule', $this); $invoice = $mySmarty->fetch("invoice_phys.tpl.html"); ss_mail($order["customer_email"],"Квитанция на оплату", $invoice, "From: \"".CONF_SHOP_NAME."\"<".CONF_GENERAL_EMAIL.">\n". stripslashes( str_replace( "text/plain", "text/html", EMAIL_MESSAGE_PARAMETERS ) )."\nReturn-path: <". CONF_GENERAL_EMAIL.">"); } else //ссылка на квитанцию { $URLprefix = trim( CONF_FULL_SHOP_URL ); $URLprefix = str_replace("http://", "", $URLprefix); $URLprefix = str_replace("https://", "", $URLprefix); if ($URLprefix[ strlen($URLprefix)-1 ] == '/') { $URLprefix = substr($URLprefix, 0, strlen($URLprefix)-1 ); } $invoice_url = "http://" . $URLprefix . "/invoice_phys.php?moduleID=".$this->ModuleConfigID."&orderID=$orderID&order_time=" . base64_encode( $order["order_time_mysql"] ) . "&customer_email=" . base64_encode( $order["customer_email"] ); ss_mail($order["customer_email"],"Квитанция на оплату","Здравствуйте!\n\nСпасибо за Ваш заказ.\nКвитанцию на оплату Вы можете посмотреть и распечатать по адресу:\n" . $invoice_url . "\n\nС уважением,\n".CONF_SHOP_NAME, "From: \"".CONF_SHOP_NAME."\"<".CONF_GENERAL_EMAIL.">\n". stripslashes(EMAIL_MESSAGE_PARAMETERS)."\nReturn-path: <". CONF_GENERAL_EMAIL.">"); } } return ""; } function after_processing_html( $orderID ) { //открыть окно с квитанцией $order = ordGetOrder( $orderID ); if(!$this->ModuleConfigID){ $sql = ' SELECT module_id FROM '.MODULES_TABLE.' WHERE module_name="'.$this->title.'" '; @list($this->ModuleConfigID) = db_fetch_row(db_query($sql)); } $res = ""; $res .= "\n"; return $res; } function uninstall($_ModuleConfigID = 0){ PaymentModule::uninstall($_ModuleConfigID); if(!count(modGetModuleConfigs(get_class($this)))){ //удалить таблицу с информацией о счетах db_query("DROP TABLE IF EXISTS ".CINVOICEPHYS_DB_TABLE); }else { $sql = ' DELETE FROM '.CINVOICEPHYS_DB_TABLE.' WHERE module_id="'.$this->ModuleConfigID.'" '; } } } ?>
    Fatal error: Class 'CInvoiceJur' not found in C:\wamp\www\shopp2\includes\admin\sub\modules_payment.php(86) : eval()'d code on line 1
    
    Эта же ошибка и при оформлении заказа. Как можно это решить? Заранее спасибо.
     
  2. farm

    farm

    Регистр.:
    8 июн 2006
    Сообщения:
    536
    Симпатии:
    105
    Наверное нету файла, проверьте его наличие.
     
  3. MimiK

    MimiK Создатель

    Регистр.:
    21 фев 2008
    Сообщения:
    12
    Симпатии:
    3
    Файл такой есть. Пишет что не может найти класс CInvoiceJur. А это стандартная инсталляция. Я ничего не удалял.
     
    Docento нравится это.
  4. mariohs

    mariohs Постоялец

    Регистр.:
    1 май 2008
    Сообщения:
    115
    Симпатии:
    94
    Класс 'CInvoiceJur' описан в файле /modules/payment/invoice_jur.php
    Проверь наличие этого файла.
     
  5. MimiK

    MimiK Создатель

    Регистр.:
    21 фев 2008
    Сообщения:
    12
    Симпатии:
    3
    Все файлы есть. Я проверил. Даже в обычной инсталляции не работает. У меня подозрения, что проблемы могут быть в том что страна использования магазина - не Россия, а квитанции сделаны именно для России.

    Добавлено через 49 минут
    Я проверил - модули оплаты не работают ни для каких инсталляций. Не находит класс CInvoiceJur. Может дело в настройках PHP? Может какая-то опция не включена?
     
    Docento нравится это.
  6. mariohs

    mariohs Постоялец

    Регистр.:
    1 май 2008
    Сообщения:
    115
    Симпатии:
    94
    От страны это никак не должно зависеть. И от php тоже врядли. Скорее всего это у тебя ошибка в самом шоп-скрипте. Попробуй скачать его из другого источника.
     
  7. MimiK

    MimiK Создатель

    Регистр.:
    21 фев 2008
    Сообщения:
    12
    Симпатии:
    3
    Я пользуюсь wamp server. Закачал свой магазин на хостинг - работает. У меня - никак не хочет. Проблемы точно в настройках. Подскажите, пожалуйста, может какую-нибудь опцию дополнительно нужно включить? Или как проверить, какие опции подключены для PHP на хостинге?
     
  8. denisola

    denisola Постоялец

    Регистр.:
    8 апр 2008
    Сообщения:
    87
    Симпатии:
    18
    ты на локале денвером пользуешься?? если да - установил его и больше ни в какие настройки можешь не лезть...
     
  9. Hmelex

    Hmelex

    Регистр.:
    15 апр 2008
    Сообщения:
    518
    Симпатии:
    120
    Рекомендую просто - переустановить магазин.
     
  10. biznesoft

    biznesoft

    Регистр.:
    11 фев 2008
    Сообщения:
    510
    Симпатии:
    128
    Согласен с Hmelex, а также посмотри на установленные права доступа к папкам и файлам, возможно там где-то напутал.
     
Статус темы:
Закрыта.