{% extends 'base.html.twig' %}
{% block stylesheets %}
{{ parent() }}
<style>
fieldset {
border: 1px dashed black;
width: 100%;
}
.datagrid-ftable .datagrid-cell {
font-size: 18px;
font-family: "monospace", sans-serif;
}
.datagrid-ftable .datagrid-row {
background: #cccccc;
}
.search-row {
margin-top: 20px;
margin-bottom: 10px;
}
.dates {
border: 1px solid #e4e0bf;
padding: 10px 10px 10px 0px;
margin: 1px 1px 1px 1px;
}
</style>
{% endblock %}
{% block parcelsLink %}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle active" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-gift"></i> Parcels
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{ path('bos_all_parcels') }}"><i class="fas fa-plus-circle"></i> All Parcels</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#"> <i class="fas fa-money-bill"></i> Transactions</a>
<a class="dropdown-item" href="{{ path('daily_accounts') }}"><i class="fas fa-calendar"></i> Daily Accounts</a>
</div>
</li>
{% endblock %}
{% block main %}
<div class="main-sub-nav col-lg-11 col-md-11 col-sm-12 col-xs-12 alert alert-light">
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link " href="{{ path('bos_all_parcels') }}"><i class="fas fa-gift"></i> <i class="fas fa-list"></i> Parcels</a>
</li>
<li class="nav-item">
<a class="nav-link active" href=""><i class="fas fa-list"></i> <i class="fas fa-money-bill"></i> Transactions</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ path('daily_accounts') }}">Daily Accounts</a></li>
<li class="nav-item">
<a class="nav-link" href="{{ path('bos_all_cancelled_transactions') }}">Cancelled</a></li>
</ul>
<div class="main">
<div class="search-row row">
{#<div class="col-lg-1 col-md-1">
<label for="date_search">Vehicle</label><br>
<input type="text" class="" style="width:100px">
</div>#}
<div class="dates col-lg-4 col-md-4">
<div class="row">
<div class="col-lg-6 col-md-6" style="">
<label for="date_search">From Date </label><br>
<input id="from_date" class="easyui-datebox from_date" data-options="formatter:myformatter,parser:myparser" name="from_date" style="width:150px">
</div>
<div class="col-lg-6 col-md-6" style="">
<label for="date_search">To Date </label><br>
<input id="to_date" class="easyui-datebox form-control" data-options="formatter:myformatter,parser:myparser" name="to_date" style="width:150px">
</div>
</div>
</div>
<div class="col-lg-1 col-md-1" style="">
<button onclick="search()" style="margin-top: 30px; font-family: 'Nova Flat', serif, FontAwesome" class="btn btn-success btn-sm"><i class="fa fa-search"></i> search </button>
</div>
<div class="col-lg-2 col-md-2" style="">
<button onclick="getCSV()" style="margin-top: 30px; font-family: 'Nova Flat', serif, FontAwesome" class="btn btn-success btn-sm"><i class="fa fa-search"></i> export to excel </button>
</div>
</div>
<div class="row">
{#<div id="tb" style="padding:2px 5px;">
<fieldset>
Date From: <input class="easyui-datebox" style="width:110px">
To: <input class="easyui-datebox" style="width:110px">
<a href="#" class="easyui-linkbutton" iconCls="icon-search">Search</a>
</fieldset>
</div>#}
<table id="transactions"
class="table table-responsive"
style="width:100%; height:auto; font-weight:normal; text-transform: uppercase;"
toolbar="#tb"
singleSelect=true
rownumbers=true
pageSize=30
fitColumns=true>
<thead>
<tr>
</tr>
</thead>
</table>
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script >
function search(){
$('#transactions').datagrid('load',{
from_date: $('#from_date').val(),
to_date: $('#to_date').val()
});
console.log($('#from_date').val());
console.log($('#to_date').val());
}
function myformatter(date){
var y = date.getFullYear();
var m = date.getMonth()+1;
var d = date.getDate();
return y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d);
}
function myparser(s){
if (!s) return new Date();
var ss = (s.split('-'));
var y = parseInt(ss[0],10);
var m = parseInt(ss[1],10);
var d = parseInt(ss[2],10);
if (!isNaN(y) && !isNaN(m) && !isNaN(d)){
return new Date(y,m-1,d);
} else {
return new Date();
}
}
function getCSV(){
$(".se-pre-con").fadeIn("slow");
/*var fromDate = $('#from_date').val();
var toDate = $('#to_date').val();
var data = JSON.stringify({
"from": $('#from_date').val(),
"to": $('#to_date').val()
});*/
var fromDate = $('#from_date').val();
var toDate = $('#to_date').val();
if(fromDate == null || toDate == null || fromDate === '' || toDate === '' ){
fromDate = 0;
toDate = 0;
}
let filters = $('#transactions').datagrid('options').filterRules;
console.log(JSON.stringify(filters));
$.ajax({
type: 'POST',
// contentType: 'application/json',
contentType: 'application/x-www-form-urlencoded',
data: {
filterRules: JSON.stringify(filters)
},
url: 'transactions/transaction-list/excel/'+fromDate+'/'+toDate ,
dataType: "text",
cache: false,
success: function(data, textStatus, jqXHR){
var min=4;
var max=5;
var random = Math.floor(Math.random() * (+max - +min)) + +min;
$(".se-pre-con").fadeOut("slow");
var s = window.open('reports/'+data,'data:application/vnd.ms-excel; charset=utf-8,');
// var s = window.open(data, 'text')
},
error: function(jqXHR, textStatus, errorThrown){
$(".se-pre-con").fadeOut("slow");
alert('updatePerson error: ' + errorThrown);
},
complete: function () {
$(".se-pre-con").fadeOut("slow");
}
});
}
$('#transactions').datagrid({
url:'transactions/transaction-list',
method: 'post',
pageSize:20,
singleSelect: true,
rownumbers:true,
remoteFilter:true,
pagination:true,
fitColumns:true,
collapsible:true,
showFooter: true,
loadMsg: 'Loading Transaction',
view: detailview,
detailFormatter: function(index, row) {
return '<div class="ddv" style="padding: 5px 0"></div>';
},
onLoadSuccess: function(){
console.log( $(this).datagrid('getData').total);
$(this).datagrid('freezeRow',$(this).datagrid('getData').total);
},
rowStyler: function(index,row){
if (row.is_cancelled === "1"){
console.log(row.is_cancelled);
return 'background-color:#ff7518;color:#fff;font-weight:bold;';
}
},
/*filterStringify: function(data){
$.map(data, function(item){
if (item.field == 'd.accountDate'){
item.value = "'"+item.value+"'";//$.fn.datebox.defaults.parser(item.value).getTime();
}
});
return JSON.stringify(data);
},*/
onExpandRow: function (index, row) {
var ddv = $(this).datagrid('getRowDetail', index).find('div.ddv');
ddv.panel({
height: 300,
border: false,
cache: false,
href: 'transactions/details/' + row.id,
onLoad: function () {
$('#transactions').datagrid('fixDetailRowHeight', index);
}
})
},
columns: [[
{field:'w.id',title:'WAYBILL',width:30,formatter:function(value,row,index){
return row.waybill;
}},
{field:'d.account_date',title:'Date',width:40,formatter:function(value,row,index){
// var date = new Date(row.account_date);
return row.account_date;
}},
{field:'fs.id',title:'From',width:50,formatter:function(value,row,index){
return row.from_station;
}},
{field:'ts.id',title:'To',width:50,formatter:function(value,row,index){
return row.to_station;
}},
{field:'w.parcel_count',title:'Parcels',width:20,formatter:function(value,row,index){
return row.percel_count;
}},
{field:'t.pin_number',title:'Buyer PIN',width:20,formatter:function(value,row,index){
if(row.pin_number){
return row.pin_number;
}
return 'NA';
}},
{field:'t.amount',title:'Amount',width:20,formatter:function(value,row,index){
return row.amount.toLocaleString();
}},
{field:'t.expenses',title:'Expenses',width:20,formatter:function(value,row,index){
return row.expenses.toLocaleString();
}},
{field:'t.tax_amount',title:'Tax',width:20,formatter:function(value,row,index){
return row.tax_amount.toLocaleString();
}},
{field:'t.balance',title:'Balance',width:20,formatter:function(value,row,index){
return row.balance.toLocaleString();
}}
]]
});
$(function(){
var transactionDataGrid = $('#transactions').datagrid();
var isStationLoaded = 0;
var isToStationLoaded = 0;
transactionDataGrid.datagrid('enableFilter', [
{
field:'fs.id',
type: 'combobox',
options:{
method: 'GET',
mode:'remote',
panelHeight: 'auto',
valueField:'id',
textField:'station_name',
url:'/form/stations',
onSelect:function(value){
console.log(value.id);
// alert(value.station_name);
if (value.id === -1){
transactionDataGrid.datagrid('removeFilterRule', 'w.fromStation');
}else {
transactionDataGrid.datagrid('addFilterRule', {
field: 'w.from_station_id',
op: 'equal',
value: value.id
});
}
transactionDataGrid.datagrid('doFilter');
},
onLoadSuccess: function(items){
// if (items.length && isStationLoaded === 0){
// isStationLoaded = 1;
// var opts = $(this).combobox('options');
// $(this).combobox('select', items[items.length-1][opts.valueField]);
// }
}
}
},
{
field:'ts.id',
type: 'combobox',
options:{
method: 'GET',
mode:'remote',
panelHeight: 'auto',
valueField:'id',
textField:'station_name',
url:'/form/stations',
onSelect:function(value){
console.log(value.id);
if (value.id === -1){
transactionDataGrid.datagrid('removeFilterRule', 'w.toStation');
} else {
transactionDataGrid.datagrid('addFilterRule', {
field: 'w.to_station_id',
op: 'equal',
value: value.id
});
}
transactionDataGrid.datagrid('doFilter');
},
onLoadSuccess: function(items){
// if (items.length && isToStationLoaded === 0){
// isToStationLoaded = 1;
// var opts = $(this).combobox('options');
// $(this).combobox('select', items[items.length-1][opts.valueField]);
// }
}
}
},
{
field:'d.accountDate',
type:'datebox',
options:{
precision:1,
formatter: function(date) {
var y = date.getFullYear();
var m = date.getMonth()+1;
var d = date.getDate();
return y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d);
},
parser: function(s) {
if (!s) return new Date();
var ss = (s.split('-'));
var y = parseInt(ss[0],10);
var m = parseInt(ss[1],10);
var d = parseInt(ss[2],10);
if (!isNaN(y) && !isNaN(m) && !isNaN(d)){
return new Date(y,m-1,d);
} else {
return new Date();
}
}
},
op:['equal','less','greater']
},
{
field:'w.parcel_count',
type:'numberbox',
options:{precision:1},
op:['less','greater','equal']
},
{
field:'t.amount',
type:'numberbox',
options:{precision:1},
op:['less','greater','equal']
}
]);
});
function formatAmount(val,row){
return val.toLocaleString();
}
</script>
{% endblock %}