daily-fee-patch.diff - патч на версию 2.408. Использование: wget -c http://www.stg.dp.ua/download/server/2.408/stg-2.408.tar.gz tar -axf stg-2.408.tar.gz cd stg-2.408 patch -p1 < ../daile-fee-patch.diff stg-new-daily-fee.tar.gz - уже пропатченные исходники. При работе с файловой БД апгрейд базы происходит автоматически и не требует никакоого контроля. При работе с СУБД MySQL есть два варианта: ручной апгрейд базы и автоматический. Ручной апгрейд заключается в исполнении скрипта projects/stargazer/inst/var/01-alter-02.mysql.sql. Например так: mysql -u -p -h -B < projects/stargazer/inst/var/01-alter-02.mysql.sql При этом после запуска патченной версии в журнале Stargazer должно быть сообщение такого вида: 2013-11-25 21:27:04 -- MYSQL_STORE: Current DB schema version: 1 Версия схемы меньшая 1 означает проблемы с апгрейдом базы. Для автоматического апгрейда достаточно просто запустить пропатченную версию Stargazer. При этом в журнале должно быть два последовательных сообщения: 2013-11-25 21:53:49 -- MYSQL_STORE: Current DB schema version: 0 2013-11-25 21:53:49 -- MYSQL_STORE: Updated DB schema to version 1 Их наличие говорит об успешном апгрейде БД. При работе с СУБД PostgreSQL и FireBird возможен только ручной апгрейд БС с помощью скриптов projects/stargazer/inst/var/01-alter-02.postgresql.sql и projects/stargazer/inst/var/01-alter-02.sql соответственно. В случае использования PostgreSQL при запуске пропатченной версии Stargazer в логе должно быть сообщение: 2013-11-26 22:43:53 -- POSTGRESQL_STORE: Current DB schema version: 7 В случае использования FireBird сообщение будет такое: 2013-11-26 22:21:32 -- FIREBIRD_STORE: Current DB schema version: 1 Поддерживается как прямая, так и обратная совместимость. Старые версии Stargazer будут успешно работать с новой структуров БД, новая версия будет успешно работать со старой структурой БД. При использовании новой версии Stargazer на старой версии БД управление периодичностью снятия АП будет доступно, но только до останова Stargazer. После повторного запуска все тарифы автоматически станут помесячными. Для управления периодичностью снятия АП в тариф добавлено поле period принимающее два значения: day и month. day - ежедневное снятие АП, month - ежемесячное снятие АП. Значения отличные от day и month автоматически преобразуются в month. Совместимость со SpreadFee: SpreadFee | period | Периодичность ----------------------------------------------- no | month | ежемесячно, полная АП no | day | ежедневно, полная АП yes | month | ежемесячно, частичная АП yes | day | ежедневно, полная АП Управление периодичностью с использованием sgconf_xml: ./sgconf_xml -s -p -a -w -r "" ./sgconf_xml -s -p -a -w -r "" Управление периодичностью с использованием XML-RPC (на примере PHP): function __call($method, $params = null) { $request = xmlrpc_encode_request($method, $params, array('escaping' => 'markup', 'encoding' => 'utf-8')); $context = stream_context_create(array('http' => array('method' => 'POST', 'header' => 'Content-Type: text/xml', 'content' => $request))); $file = file_get_contents('http://localhost:8080/RPC2', false, $context); $response = xmlrpc_decode($file); if (is_array($response) && xmlrpc_is_fault($response)) { trigger_error("xmlrpc: {$response['faultString']} ({$response['faultCode']})"); } return $response; } $data = __call('stargazer.login', array('admin', '123456')); if (isset($data['cookie'])) { $cookie = $data['cookie']; __call('stargazer.chg_tariff', array($cookie, 'tariff', array('period' => 'month'))); __call('stargazer.chg_tariff', array($cookie, 'tariff', array('period' => 'day'))); }