ledger-pyreport/ledger_pyreport/jinja2/index.html

157 lines
6.5 KiB
HTML

{#
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 %}