{# ledger-pyreport Copyright © 2020 Lee Yingtong Li (RunasSudo) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. #} {% extends 'base.html' %} {% block title %}ledger-pyreport{% endblock %} {% block head %} <style type="text/css"> body { padding: 2em; } </style> {% endblock %} {% block body %} <div class="index-group"> <form action="{{ url_for('trial') }}"> <button type="submit">Trial balance</button> <label>Date: <input name="date" data-inputgroup="date" value="{{ date.strftime('%Y-%m-%d') }}" style="width: 6em;" oninput="txtc(this)"></label> <button class="fy-btn">FY</button> <label>Period start: <input name="pstart" data-inputgroup="pstart" value="{{ pstart.strftime('%Y-%m-%d') }}" style="width: 6em;" oninput="txtc(this)"></label> <label> Compare <input type="number" name="compare" data-inputgroup="compare" value="0" style="width: 2em;" oninput="txtc(this)"> <select name="cmpperiod" data-inputgroup="cmpperiod" oninput="selc(this)"> <option value="year" selected>years</option> <option value="month">months</option> </select> </label> {#<label><input name="cash" data-inputgroup="cash" type="checkbox" oninput="chbc(this)"> Cash basis</label>#} </form> </div> <div class="index-group"> <form action="{{ url_for('balance') }}"> <button type="submit">Balance sheet</button> <label>Date: <input name="date" data-inputgroup="date" value="{{ date.strftime('%Y-%m-%d') }}" style="width: 6em;" oninput="txtc(this)"></label> <button class="fy-btn">FY</button> <label>Period start: <input name="pstart" data-inputgroup="pstart" value="{{ pstart.strftime('%Y-%m-%d') }}" style="width: 6em;" oninput="txtc(this)"></label> <label> Compare <input type="number" name="compare" data-inputgroup="compare" value="0" style="width: 2em;" oninput="txtc(this)"> <select name="cmpperiod" data-inputgroup="cmpperiod" oninput="selc(this)"> <option value="year" selected>years</option> <option value="month">months</option> </select> </label> {#<label><input name="cash" data-inputgroup="cash" type="checkbox" oninput="chbc(this)"> Cash basis</label>#} </form> </div> <div class="index-group"> <form action="{{ url_for('pandl') }}"> <button type="submit">Income statement</button> <label>Begin date: <input name="date_beg" data-inputgroup="pstart" value="{{ pstart.strftime('%Y-%m-%d') }}" style="width: 6em;" oninput="txtc(this)"></label> <label>End date: <input name="date_end" data-inputgroup="date" value="{{ date.strftime('%Y-%m-%d') }}" style="width: 6em;" oninput="txtc(this)"></label> <button class="fy-btn">FY</button> <label> Compare <input type="number" name="compare" data-inputgroup="compare" value="0" style="width: 2em;" oninput="txtc(this)"> <select name="cmpperiod" data-inputgroup="cmpperiod" oninput="selc(this)"> <option value="year" selected>years</option> <option value="month">months</option> </select> </label> {#<label><input name="cash" data-inputgroup="cash" type="checkbox" oninput="chbc(this)"> Cash basis</label>#} <label>Scope: <select name="scope"> <option value="pandl" selected>P&L only</option> <option value="oci">OCI only</option> <option value="both">P&L and OCI</option> </select></label> </form> </div> <div class="index-group"> <form action="{{ url_for('cashflow') }}"> <button type="submit">Cash flows</button> <label>Begin date: <input name="date_beg" data-inputgroup="pstart" value="{{ pstart.strftime('%Y-%m-%d') }}" style="width: 6em;" oninput="txtc(this)"></label> <label>End date: <input name="date_end" data-inputgroup="date" value="{{ date.strftime('%Y-%m-%d') }}" style="width: 6em;" oninput="txtc(this)"></label> <button class="fy-btn">FY</button> <label> Compare <input type="number" name="compare" data-inputgroup="compare" value="0" style="width: 2em;" oninput="txtc(this)"> <select name="cmpperiod" data-inputgroup="cmpperiod" oninput="selc(this)"> <option value="year" selected>years</option> <option value="month">months</option> </select> </label> <label>Method: <select name="method"> <option value="indirect" selected>Indirect</option> <option value="direct">Direct</option> </select></label> </form> </div> <div class="index-group"> <form action="{{ url_for('transactions') }}"> <button type="submit">General ledger</button> <label>Begin date: <input name="date_beg" data-inputgroup="pstart" value="{{ pstart.strftime('%Y-%m-%d') }}" style="width: 6em;" oninput="txtc(this)"></label> <label>End date: <input name="date_end" data-inputgroup="date" value="{{ date.strftime('%Y-%m-%d') }}" style="width: 6em;" oninput="txtc(this)"></label> <button class="fy-btn">FY</button> {#<label><input name="cash" data-inputgroup="cash" type="checkbox" oninput="chbc(this)"> Cash basis</label>#} </form> </div> <script> // Called whenever a text input changes - update others to match function txtc(el) { for (var e2 of document.querySelectorAll('input[data-inputgroup="' + el.dataset['inputgroup'] + '"]')) { e2.value = el.value; } } // Ditto for checkboxes function chbc(el) { for (var e2 of document.querySelectorAll('input[data-inputgroup="' + el.dataset['inputgroup'] + '"]')) { e2.checked = el.checked; } } // Ditto for dropdowns function selc(el) { for (var e2 of document.querySelectorAll('select[data-inputgroup="' + el.dataset['inputgroup'] + '"]')) { e2.value = el.value; } } for (var el of document.querySelectorAll('button.fy-btn')) { (function(el) { el.addEventListener('click', function(evt) { var d_pstart = el.parentNode.querySelector('input[data-inputgroup="pstart"]').value; var bits = d_pstart.split('-'); var d_date = (parseInt(bits[0]) + 1) + '-06-30'; var e2 = el.parentNode.querySelector('input[data-inputgroup="date"]') e2.value = d_date; txtc(e2); evt.preventDefault(); }); })(el); } </script> {% endblock %}