Commit e7c348a4 by yasir

update cetak CSV

1 parent aacf6f6b
......@@ -2,6 +2,7 @@ import colander
from datatables import ColumnDT
from deform import widget, Form, ValidationFailure
from opensipkd.base.views import DataTables
from opensipkd.base.tools.report import csv_response
from pyramid.httpexceptions import HTTPFound
from pyramid.view import view_config
from sqlalchemy import case
......@@ -21,6 +22,71 @@ status_payment = (
)
def filter_tanggal(request, query, field):
awal = request.session['awal'] + ' 00:00:00' #None
akhir = request.session['akhir'] + ' 23:59:59'#None
if awal and akhir:
tglawal = datetime.strptime(awal, '%d-%m-%Y %H:%M:%S')
tglakhir = datetime.strptime(akhir, '%d-%m-%Y %H:%M:%S')
query = query.filter(field.between(tglawal, tglakhir))
return query
def query_csv(request, status):
# ColumnDT(PartnerPay.id, mData='id'),
# ColumnDT(PartnerPay.cust_inv_no, mData='nomor'),
# ColumnDT(PartnerPay.created, mData = 'created'),
# ColumnDT(
# column_concat([
# PartnerPay.inv_cust_nm,
# ' - (',
# customer.nama,
# ')'
# ]),
# mData='customer'
# ),
# ColumnDT(vendor.nama, mData='vendor'),
# ColumnDT(PartnerPay.amt_sell, mData='amount'),
# ColumnDT(case(
# [
# (PartnerPay.status <= 0, 0)
# ],
# else_=PartnerPay.status
# ), mData='status'),
vendor = aliased(Partner, name='vendor')
customer = aliased(Partner, name='customer')
query = DBSession.query(PartnerPay.cust_inv_no.label('Nomor_Invoice'),
PartnerPay.created.label('Tanggal'),
column_concat([
PartnerPay.inv_cust_nm,
' - (',
customer.nama,
')'
]).label('Nama_Customer'),
vendor.nama.label('Nama_Vendor'),
PartnerPay.amt_sell.label('Harga'),
case(
[
(PartnerPay.status <= 0, 0)
],
else_=PartnerPay.status).label('Status')
).\
join(vendor, vendor.id == PartnerPay.vendor_id)\
.join(customer, customer.id == PartnerPay.customer_id)
if status != 9999:
if status <= 0:
query = query.filter(H2hArInvoiceDet.status <= status)
else:
query = query.filter(H2hArInvoiceDet.status == status)
filter_tanggal(request, query, PartnerPay.created)
return query
def form_validator(form, value):
pass
......@@ -74,6 +140,7 @@ class ViewData(BaseView):
'buttons': [
dict(id="btn_view", cls="btn btn btn-primary", title="View"),
dict(id="btn_close", cls="btn btn-danger", title="Tutup"),
dict(id="btn_csv", cls="btn btn-primary", title="CSV"),
],
'route': "/api/payment",
'scripts': """
......@@ -146,6 +213,35 @@ class ViewData(BaseView):
filter_tanggal(query, PartnerPay.created)
row_table = DataTables(request.GET, query, columns)
return row_table.output_result()
elif act == "csv":
status = 9999
if 'status' in request.params:
status = int(request.params['status'])
query = query_csv(request, status)
row = query.first()
if row == None:
header = [
'Nomor_Invoice',
'Tanggal',
'Nama_Customer',
'Nama_Vendor',
'Harga',
'Status'
]
else:
header = row.keys()
rows = []
for item in query.all():
rows.append(list(item))
filename = 'list_payment.csv'
value = {
'header': header,
'rows' : rows,
}
return csv_response(request, value, filename)
@view_config(route_name='api-payment-view',
permission="api-payment-list",
......
......@@ -2,6 +2,7 @@ import colander
from datatables import ColumnDT
from deform import widget, Form, ValidationFailure
from opensipkd.base.views import DataTables
from opensipkd.base.tools.report import csv_response
from pyramid.httpexceptions import HTTPFound
from pyramid.view import view_config
from sqlalchemy import case
......@@ -24,12 +25,50 @@ status_purchase = (
# (1, 'Payment'),
# (2, 'Register'),
# )
def filter_tanggal(request, query, field):
awal = request.session['awal'] + ' 00:00:00' #None
akhir = request.session['akhir'] + ' 23:59:59'#None
if awal and akhir:
tglawal = datetime.strptime(awal, '%d-%m-%Y %H:%M:%S')
tglakhir = datetime.strptime(akhir, '%d-%m-%Y %H:%M:%S')
query = query.filter(field.between(tglawal, tglakhir))
return query
def query_csv(request, status):
vendor = aliased(Partner, name='vendor')
customer = aliased(Partner, name='customer')
query = DBSession.query(H2hArInvoice.cust_inv_no.label('Nomor_Invoice'),
H2hArInvoice.created.label('Tanggal'),
customer.nama.label('Nama_Customer'),
vendor.nama.label('Nama_Vendor'),
Produk.nama.label('Nama_Produk'),
H2hArInvoiceDet.amt_sell.label('Harga'),
case(
[
(H2hArInvoiceDet.status <= 0, 0)
],
else_=H2hArInvoiceDet.status).label('Status')
).\
join(H2hArInvoiceDet, H2hArInvoiceDet.ar_invoice_id == H2hArInvoice.id) \
.join(customer, customer.id == H2hArInvoice.customer_id) \
.join(vendor, vendor.id == H2hArInvoiceDet.vendor_id) \
.join(Produk, Produk.id == H2hArInvoiceDet.produk_id)
if status != 9999:
if status <= 0:
query = query.filter(H2hArInvoiceDet.status <= status)
else:
query = query.filter(H2hArInvoiceDet.status == status)
filter_tanggal(request, query, H2hArInvoice.created)
return query
def form_validator(form, value):
pass
class ViewData(BaseView):
@view_config(route_name='api-purchase-list',
permission="api-purchase-list",
......@@ -93,6 +132,7 @@ class ViewData(BaseView):
'buttons': [
dict(id="btn_view", cls="btn btn btn-primary", title="View"),
dict(id="btn_close", cls="btn btn-danger", title="Tutup"),
dict(id="btn_csv", cls="btn btn-primary", title="CSV"),
],
'route': "/api/purchase",
'scripts': """
......@@ -112,16 +152,7 @@ class ViewData(BaseView):
url_dict = request.matchdict
act = url_dict['act']
def filter_tanggal(query, field):
awal = request.session['awal'] + ' 00:00:00' #None
akhir = request.session['akhir'] + ' 23:59:59'#None
if awal and akhir:
tglawal = datetime.strptime(awal, '%d-%m-%Y %H:%M:%S')
tglakhir = datetime.strptime(akhir, '%d-%m-%Y %H:%M:%S')
query = query.filter(field.between(tglawal, tglakhir))
return query
if act == "grid":
# jenis = 'jenis' in request.params and request.params['jenis'] and int(request.params['jenis']) or None
......@@ -159,9 +190,39 @@ class ViewData(BaseView):
query = query.filter(H2hArInvoiceDet.status <= status)
else:
query = query.filter(H2hArInvoiceDet.status == status)
filter_tanggal(query, H2hArInvoice.created)
filter_tanggal(request, query, H2hArInvoice.created)
row_table = DataTables(request.GET, query, columns)
return row_table.output_result()
elif act == "csv":
status = 9999
if 'status' in request.params:
status = int(request.params['status'])
query = query_csv(request, status)
row = query.first()
if row == None:
header = [
'Nomor_Invoice',
'Tanggal',
'Nama_Customer',
'Nama_Produk',
'Harga',
'Status'
]
else:
header = row.keys()
rows = []
for item in query.all():
rows.append(list(item))
filename = 'list_purchase.csv'
value = {
'header': header,
'rows' : rows,
}
return csv_response(request, value, filename)
@view_config(route_name='api-purchase-view',
permission="api-purchase-list",
......
......@@ -220,6 +220,43 @@
var el = $('#table1_filter').parent();
el.addClass('col-md-3');
el.removeClass('col-md-4');
function getCSV_url(){
var csvUrl = oTableUri + "/csv/act";
var opt = $('select#status').val();
var param = '';
var awalControl = $('#awal');
var akhirControl = $('#akhir');
var awal = awalControl.val();
var akhir = akhirControl.val();
var tgl = new Date();
var tgl_indo = tgl.getDate() + '-' + (tgl.getMonth()+1) + '-' + tgl.getFullYear();
if (awal == '' || awal == undefined){
awalControl.val(tgl_indo)
}
if (akhir == '' || akhir == undefined){
akhirControl.val(tgl_indo)
}
if (awal != '' && awal != undefined) {
param += '&awal=' + awal;
}
if (akhir != '' && akhir != undefined) {
param += '&akhir=' + akhir;
}
return csvUrl + '?status=' + opt.toString() + param;
}
$('#btn_csv').click(function() {
console.log(getCSV_url());
window.open(getCSV_url());
});
});
</script>
......
......@@ -222,6 +222,43 @@
el.addClass('col-md-3');
el.removeClass('col-md-4');
function getCSV_url(){
var csvUrl = oTableUri + "/csv/act";
var opt = $('select#status').val();
var param = '';
var awalControl = $('#awal');
var akhirControl = $('#akhir');
var awal = awalControl.val();
var akhir = akhirControl.val();
var tgl = new Date();
var tgl_indo = tgl.getDate() + '-' + (tgl.getMonth()+1) + '-' + tgl.getFullYear();
if (awal == '' || awal == undefined){
awalControl.val(tgl_indo)
}
if (akhir == '' || akhir == undefined){
akhirControl.val(tgl_indo)
}
if (awal != '' && awal != undefined) {
param += '&awal=' + awal;
}
if (akhir != '' && akhir != undefined) {
param += '&akhir=' + akhir;
}
return csvUrl + '?status=' + opt.toString() + param;
}
$('#btn_csv').click(function() {
console.log(getCSV_url());
window.open(getCSV_url());
});
});
</script>
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!