Отображение пакетов трафика на странице Тарифные опции личного кабинета
Материал из BiTel WiKi
Отчет по диапазонам модуля
С версии 6.0 в личном кабинете доступен отчет по Диапазонам трафиков. Чтобы диапазон отображался в отчете, нужно в конфигурации модуля добавить "метку"
tariffication.tariff.label.3.title=Пакет трафика
далее в тарифе нужно редактировать ветку "диапазон", по которому должен отображаться отчет и указать эту числовую метку (в этом примере 3).
После этого в личном кабинете должен появиться отчет по данному диапазону. Отчет не появится, пока в диапазон не попадет хотя бы один байт.
Тарифные опции
Также можно добавить отображение кол-ва на странице Тарифных опций, если в диапазоне указана тарифная опция, от которой он зависит. Не гарантируется что это будет работать всегда, для этого нужно изменить шаблон webroot/xsl/main.xsl, изменения сделаны так, чтобы были минимальными.
При обновлении main.xsl перезаписывается из сборки. Для предотвращения перетирания файла при обновлении вы можете перед его модификацией создать копию с именем <file_name>.orig (например, style.css.orig). При установке пакета инсталлятор будет проверять перед записью каждого файла наличие файла с таким же именем в текущей установке. Если файл существует, но отличается от того, что в пакете, предпринимается попытка найти файл <file_name>.orig.
После
<!-- тарифные опции --> <xsl:template name="TariffOption"> <xsl:call-template name="nav"/>
добавить
<script> mid = 179; optionRanges = null; showRangeValue = function( report, tariffOptionId, contractTariffOptionId ) { if( !report || !report.detailValueList ) return; for( var j in report.detailValueList ) { var detailValue = report.detailValueList[j]; if( detailValue.contractTariffOption && detailValue.contractTariffOption.id==contractTariffOptionId ) { var r = $("option" + contractTariffOptionId + "Range"); r.innerHTML = (Math.round((detailValue.amount*1000)/1024/1024)/1000) + " из " + (Math.round((detailValue.maxAmount*1000)/1024/1024)/1000) + "MB" ; r.href = "webexecuter?module=inet&mid=" + mid + "&action=TrafficRangeReport&tariffOptionId=" + tariffOptionId; r.setAttribute('style', 'display: inline'); break; } } } getRangeValue = function( tariffOptionId, contractTariffOptionId ) { var report = optionRanges; if( report!=null ) { showRangeValue( report, tariffOptionId, contractTariffOptionId ); return; } jQuery.get( "webexecuter", { action: 'TrafficRangeReport', module: "inet", mid: mid, ct: 'json' }, function( data ) { for( var i in data.result ) { var report = data.result[i]; showRangeValue( report, tariffOptionId, contractTariffOptionId ); optionRanges = report; } } ); } </script>
далее после
<td>Стоимость активации*</td> добавить <xsl:if test="/data/@operation = 'execute'"><td>Пакет</td></xsl:if>
и ниже, перед
</tr> </xsl:for-each> </tbody> </table> <em class="comment">*Стоимость активации - сумма, снимаемая в момент активации опции и не отражает периодической платы за пользование,<br/> если таковая предусмотрена в тарифном плане.</em>
добавить
<td><xsl:value-of select="@summa"/></td> <xsl:if test="/data/@operation = 'execute'"> <td style="width: 100px;"> <a id="option{@id}Range" href="#" style="display: НОНЕ"></a> <script> getRangeValue( <xsl:value-of select="@optionId"/>, <xsl:value-of select="@id"/> ); </script> </td> </xsl:if>