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


дополнение к модулю оплаты "Выставление счетов"


  • Вы не можете ответить в тему
Сообщений в теме: 16

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 November 2012 - 02:39 PM

1.К имеющимся штатным полям "Название организации" и "ИНН" добавлены необязательные к заполнению
Адрес, КПП, БИК, Счет, КорСчет, Банк.

2. Если клиент зарегистрирован, то при завершении оформления данные об организации будут сохранены в его персональную табличку и в следующий раз эту организацию можно будет выбрать из выпадающего списка для автоматического заполнения всех полей.

3. Администратору магазина отправляется письмо с этими дополнительными данными (чтобы, например, вручную заполнить карточку клиента в бух.программе или внести в счет-фактуру).

Прикрепленный файл  ExpandInvoice.JPG   54.42К   103 Количество загрузок:

Установка:
1. переписать invoice.php в корень сайта.
2. переписать invoice_jur.php в core/modules/payment
3. в админке удалить и заново установить модуль оплаты "Выставление счетов". Это нужно для создания дополнительных полей в SQL-таблице счетов и создания SQL-таблицы организаций. При нежелательности удаления этого модуля (удалится и старая таблица счетов) придется добавитьполя и таблицу "вручную".

4. совсем забыл. В head.tpl.html надо подключить библиотеку jquery, если она еще не подключена. Иначе не будет работать автозаполнение. Ну да jquery, обычно, уже у всех и так есть. Собственно, потому и забыл.

<script type="text/javascript" src="http://ajax.googleap...n.js"></script>


Не сделанное:
1. Не проверяется правильность заполнения полей.
2. имеется уязвимость в виде возможности вытянуть всю таблицу организаций через invoice.php

Прикрепленные файлы

  • Прикрепленный файл  invoice.php   582байт   13 Количество загрузок:
  • Прикрепленный файл  invoice_jur.php   37.06К   16 Количество загрузок:

  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#2 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 November 2012 - 03:40 PM

Update: Штатно в счете пишется адрес не организации, а клиента, под которым он зарегистрировался. Т.к. у нас теперь есть адрес организации, то:

1. в файле core/modules/tpl/invoice_jur.tpl.html меняем текст

{$billing_city}, {$billing_address}

на

{$customer_addr}


2. в файле core/modules/payment/invoice_jur.php
меняем

$q = db_query("select company_name, company_inn, nds_included, nds_rate, RUR_rate from ".CINVOICEJUR_DB_TABLE." where orderID=".(int)$orderID." AND module_id=".(int)$this->ModuleConfigID);

на

$q = db_query("select * from ".CINVOICEJUR_DB_TABLE." where orderID=".(int)$orderID." AND module_id=".(int)$this->ModuleConfigID);

а после строки

$mySmarty->assign( "customer_inn", $row["company_inn"] );

добавляем

$mySmarty->assign( "customer_addr", $row["company_addr"] );


3. в файле core/processor/invoice_jur.php
меняем

$sql = "select company_name, company_inn, nds_included, nds_rate, RUR_rate from ".DB_PRFX."_module_payment_invoice_jur where orderID=".$_GET["orderID"]." AND module_id=".(int)$InvoiceModule->ModuleConfigID;

на

$sql = "select * from ".DB_PRFX."_module_payment_invoice_jur where orderID=".$_GET["orderID"]." AND module_id=".(int)$InvoiceModule->ModuleConfigID;

а после строки

$smarty->assign( "customer_inn", $row["company_inn"] );

добавляем

$smarty->assign( "customer_addr", $row["company_addr"] );

  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 pavel77

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 116 сообщений
Репутация: 10
Начинающий

Отправлено 20 November 2012 - 09:59 PM

считаю вообще логически неправильным задавать данные организации на последнем этапе оформления заказа.

Судя по всему в скрипте было изначально все предусмотрено нормально в рег.файлах

контактное лицо
получатель заказа и адрес
плательщик за заказ и адрес

потом это все свели к данным контактного лица.

Не проще ли использовать правильно существующие таблицы скрипта (дублирующиеся), нежеле создавать новые?

при заполнении данных дать возможность выбора физ.лицо \ юр.лицо

если выбрано юр.лицо - раскрываются доп. поля для данных организации (причем !!! как правило адрес организации отличается от адреса доставки).

P\S если есть возможность довести вышеописанное до ума - готов оплатить работу.
  • 0

#4 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 20 November 2012 - 11:13 PM

Судя по всему

Судя по чему? Хочется подробностей об этих "по всему".

Не проще ли использовать правильно существующие таблицы скрипта (дублирующиеся), нежеле создавать новые?

Да запросто. Про какие "существующие таблицы скрипта (дублирующиеся)" речь? Только не развесисто и ни о чем, как в предыдущем сообщении, а конкретно.

P\S если есть возможность довести вышеописанное до ума - готов оплатить работу.

Я Вас расстрою - такой алгоритм (один логин на физлицо, которое заводит под себя неограниченное количество юрлиц для выписки счетов) используется куда чаще, чем "один логин - одно юр/физ-лицо". Да и сама идея куда удачнее по многим причинам. Но если Вы внятно опишете, что Вы хотите и сколько готовы заплатить, то "любой каприз за Ваши деньги".

считаю вообще логически неправильным задавать данные организации на последнем этапе оформления заказа.

Это тоже довольно интересное заявление. Почему? Результатом оформления заказа в случае выписки счета является собственно счет. В нем присутствует название фирмы, ИНН и адрес, причем необходимым (да и то условно) является только название. Какая такая логическая неправильность в задании данных организации на последнем этапе перед заданием в середине оформления или вообще в самом начале, первым же экраном? :)
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 pavel77

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 116 сообщений
Репутация: 10
Начинающий

Отправлено 21 November 2012 - 04:59 PM

Ладно как я понимаю не меет смысла разводить такое обсуждение.
За столько лет работы, я уже понял одно :)) универсальнного решения под конкретный интернет магазин не найти. (при больших оборотах)
Все требуется доделывать под конкретный товар и категорию покупателей.
  • 0

#6 xtic

    Пользователь

  • Download User
  • PipPip
  • 24 сообщений
Репутация: 1
Начинающий
  • ГородНижнекамск

Отправлено 12 December 2012 - 09:09 AM

У меня почему-то не отправляет письмо администрации магазина с реквизитами фирмы заказчика.
  • 0

#7 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 12 December 2012 - 11:21 AM

У меня почему-то не отправляет письмо администрации магазина с реквизитами фирмы заказчика.


примите наши искренние соболезнования.
  • 0

#8 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 12 December 2012 - 11:38 AM

У меня почему-то не отправляет письмо администрации магазина с реквизитами фирмы заказчика.

Если все остальное работает, то это довольно странно, т.к. вся "отправка письма" состоит из одной строки (вызов функции отправки письма)

xMailTxtHTMLDATA(CONF_GENERAL_EMAIL, "Доп.данные юрлица к заказу #".$orderID, $addon_info);

, в которой ошибиться довольно сложно.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#9 xtic

    Пользователь

  • Download User
  • PipPip
  • 24 сообщений
Репутация: 1
Начинающий
  • ГородНижнекамск

Отправлено 12 December 2012 - 06:32 PM

Извините за беспокойство. Письмо пришло в спам примерно через 30 минут после заказа.
  • 0

#10 ssergioss25

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 56 сообщений
Репутация: 24
Ассистент
  • ГородСПБ

Отправлено 14 December 2012 - 12:27 PM

Извините за беспокойство. Письмо пришло в спам примерно через 30 минут после заказа.


Почта не на yandex случайно ? :) Сталкивался с такой проблемой, правда в другом модуле. Функция
xMailTxtHTMLDATA
упорно для yandex отправляла письма в спам, хотя со всеми другими почтовиками все ок. Проблему решил заменой этой функции на обычный mail с правильным указанием заголовков письма.
  • 0

#11 xtic

    Пользователь

  • Download User
  • PipPip
  • 24 сообщений
Репутация: 1
Начинающий
  • ГородНижнекамск

Отправлено 15 December 2012 - 08:45 AM

Почта не на yandex случайно ?

Почта для домена от Яндекса. С другой стороны, все остальные письма приходят сразу и куда нужно.
  • 0

#12 ssergioss25

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 56 сообщений
Репутация: 24
Ассистент
  • ГородСПБ

Отправлено 15 December 2012 - 10:49 AM

Почта не на yandex случайно ?

Почта для домена от Яндекса. С другой стороны, все остальные письма приходят сразу и куда нужно.


Попробуйте заменить :
xMailTxtHTMLDATA(CONF_GENERAL_EMAIL, "Доп.данные юрлица к заказу #".$orderID, $addon_info);
На :
$customer_email = CONF_GENERAL_EMAIL;
$headers=null;
$headers.="Content-Type: text/html; charset=windows-1251\r\n";
$headers.="From: $customer_email\r\n";
$headers.="X-Mailer: PHP/".phpversion()."\r\n";
mail($customer_email, "Доп.данные юрлица к заказу #".$orderID, $addon_info, $headers);
Проверять нет времени,но,может,поможет вам. И вообще, советую отказаться от этого yandex. Ох, не нравится он мне :)
  • 1

#13 xtic

    Пользователь

  • Download User
  • PipPip
  • 24 сообщений
Репутация: 1
Начинающий
  • ГородНижнекамск

Отправлено 15 December 2012 - 03:04 PM

Попробуйте заменить

Спасибо работает.

советую отказаться от этого yandex

Вроде косяков пока не замечали. :)
  • 0

#14 SotaPerm

    Пользователь

  • Download User
  • PipPip
  • 11 сообщений
Репутация: 0
Начинающий

Отправлено 27 October 2016 - 04:04 PM

Подскажите что добавить, в счете плательщик везде знаки вопроса вместо кириллицы
также на почту приходит и когда делаешь новый заказ при выборе организации она тоже показывается как знаки вопроса ?????????


Вроде решил, в файле invoice.php перед текстом
$row = mysql_fetch_assoc(mysql_query
добавил
mysql_set_charset('cp1251');
и в базе таблицы module_payment_invoice_jur и customer_orgs были в кодировке latin1 (только вот непонятно почему они создались в такой кодировке) сменил на cp1251

Сообщение отредактировал SotaPerm: 27 October 2016 - 04:09 PM

  • 0

#15 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 27 October 2016 - 04:33 PM

и в базе таблицы module_payment_invoice_jur и customer_orgs были в кодировке latin1 (только вот непонятно почему они создались в такой кодировке) сменил на cp1251

Потому, что это дефолтовая кодировка MySQL-сервера. Хостер не знает, в какой кодировке вы будете работать, в CP1251 или UTF8. Поэтому обычно оставляет по умолчанию. На некоторых хостингах я в панели управления видел возможность выбора кодировки SQL-базы. Так что если хочется, чтобы кодировка таблиц была 1251 - надо ДО запуска install.php раскомментировать закомментированное в начале файла mysql.php.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#16 natashashukina

    Пользователь

  • Пользователи
  • PipPip
  • 22 сообщений
Репутация: 0
Начинающий

Отправлено 27 October 2016 - 07:21 PM

и в базе таблицы module_payment_invoice_jur и customer_orgs были в кодировке latin1 (только вот непонятно почему они создались в такой кодировке) сменил на cp1251

Потому, что это дефолтовая кодировка MySQL-сервера. Хостер не знает, в какой кодировке вы будете работать, в CP1251 или UTF8. Поэтому обычно оставляет по умолчанию. На некоторых хостингах я в панели управления видел возможность выбора кодировки SQL-базы. Так что если хочется, чтобы кодировка таблиц была 1251 - надо ДО запуска install.php раскомментировать закомментированное в начале файла mysql.php.


т.е. это до установки самого магазина ?
  • 0

#17 SotaPerm

    Пользователь

  • Download User
  • PipPip
  • 11 сообщений
Репутация: 0
Начинающий

Отправлено 27 October 2016 - 07:24 PM

и в базе таблицы module_payment_invoice_jur и customer_orgs были в кодировке latin1 (только вот непонятно почему они создались в такой кодировке) сменил на cp1251

Потому, что это дефолтовая кодировка MySQL-сервера. Хостер не знает, в какой кодировке вы будете работать, в CP1251 или UTF8. Поэтому обычно оставляет по умолчанию. На некоторых хостингах я в панели управления видел возможность выбора кодировки SQL-базы. Так что если хочется, чтобы кодировка таблиц была 1251 - надо ДО запуска install.php раскомментировать закомментированное в начале файла mysql.php.


Наверно так и было, но это нужно было делать насколько я понял до установки магазина, а сейчас уточнить у хостера какая кодировка стоит по умолчанию и поменять её на cp1251 чтобы новые таблицы создавались именно в этой кодировке.
  • 0