Commit e7c348a4 by yasir

update cetak CSV

1 parent aacf6f6b
...@@ -2,6 +2,7 @@ import colander ...@@ -2,6 +2,7 @@ import colander
from datatables import ColumnDT from datatables import ColumnDT
from deform import widget, Form, ValidationFailure from deform import widget, Form, ValidationFailure
from opensipkd.base.views import DataTables from opensipkd.base.views import DataTables
from opensipkd.base.tools.report import csv_response
from pyramid.httpexceptions import HTTPFound from pyramid.httpexceptions import HTTPFound
from pyramid.view import view_config from pyramid.view import view_config
from sqlalchemy import case from sqlalchemy import case
...@@ -21,6 +22,71 @@ status_payment = ( ...@@ -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): def form_validator(form, value):
pass pass
...@@ -74,6 +140,7 @@ class ViewData(BaseView): ...@@ -74,6 +140,7 @@ class ViewData(BaseView):
'buttons': [ 'buttons': [
dict(id="btn_view", cls="btn btn btn-primary", title="View"), dict(id="btn_view", cls="btn btn btn-primary", title="View"),
dict(id="btn_close", cls="btn btn-danger", title="Tutup"), dict(id="btn_close", cls="btn btn-danger", title="Tutup"),
dict(id="btn_csv", cls="btn btn-primary", title="CSV"),
], ],
'route': "/api/payment", 'route': "/api/payment",
'scripts': """ 'scripts': """
...@@ -146,6 +213,35 @@ class ViewData(BaseView): ...@@ -146,6 +213,35 @@ class ViewData(BaseView):
filter_tanggal(query, PartnerPay.created) filter_tanggal(query, PartnerPay.created)
row_table = DataTables(request.GET, query, columns) row_table = DataTables(request.GET, query, columns)
return row_table.output_result() 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', @view_config(route_name='api-payment-view',
permission="api-payment-list", permission="api-payment-list",
......
...@@ -2,6 +2,7 @@ import colander ...@@ -2,6 +2,7 @@ import colander
from datatables import ColumnDT from datatables import ColumnDT
from deform import widget, Form, ValidationFailure from deform import widget, Form, ValidationFailure
from opensipkd.base.views import DataTables from opensipkd.base.views import DataTables
from opensipkd.base.tools.report import csv_response
from pyramid.httpexceptions import HTTPFound from pyramid.httpexceptions import HTTPFound
from pyramid.view import view_config from pyramid.view import view_config
from sqlalchemy import case from sqlalchemy import case
...@@ -24,12 +25,50 @@ status_purchase = ( ...@@ -24,12 +25,50 @@ status_purchase = (
# (1, 'Payment'), # (1, 'Payment'),
# (2, 'Register'), # (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): def form_validator(form, value):
pass pass
class ViewData(BaseView): class ViewData(BaseView):
@view_config(route_name='api-purchase-list', @view_config(route_name='api-purchase-list',
permission="api-purchase-list", permission="api-purchase-list",
...@@ -93,6 +132,7 @@ class ViewData(BaseView): ...@@ -93,6 +132,7 @@ class ViewData(BaseView):
'buttons': [ 'buttons': [
dict(id="btn_view", cls="btn btn btn-primary", title="View"), dict(id="btn_view", cls="btn btn btn-primary", title="View"),
dict(id="btn_close", cls="btn btn-danger", title="Tutup"), dict(id="btn_close", cls="btn btn-danger", title="Tutup"),
dict(id="btn_csv", cls="btn btn-primary", title="CSV"),
], ],
'route': "/api/purchase", 'route': "/api/purchase",
'scripts': """ 'scripts': """
...@@ -112,16 +152,7 @@ class ViewData(BaseView): ...@@ -112,16 +152,7 @@ class ViewData(BaseView):
url_dict = request.matchdict url_dict = request.matchdict
act = url_dict['act'] 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": if act == "grid":
# jenis = 'jenis' in request.params and request.params['jenis'] and int(request.params['jenis']) or None # jenis = 'jenis' in request.params and request.params['jenis'] and int(request.params['jenis']) or None
...@@ -159,9 +190,39 @@ class ViewData(BaseView): ...@@ -159,9 +190,39 @@ class ViewData(BaseView):
query = query.filter(H2hArInvoiceDet.status <= status) query = query.filter(H2hArInvoiceDet.status <= status)
else: else:
query = query.filter(H2hArInvoiceDet.status == status) query = query.filter(H2hArInvoiceDet.status == status)
filter_tanggal(query, H2hArInvoice.created) filter_tanggal(request, query, H2hArInvoice.created)
row_table = DataTables(request.GET, query, columns) row_table = DataTables(request.GET, query, columns)
return row_table.output_result() 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', @view_config(route_name='api-purchase-view',
permission="api-purchase-list", permission="api-purchase-list",
......
...@@ -220,6 +220,43 @@ ...@@ -220,6 +220,43 @@
var el = $('#table1_filter').parent(); var el = $('#table1_filter').parent();
el.addClass('col-md-3'); el.addClass('col-md-3');
el.removeClass('col-md-4'); 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> </script>
......
...@@ -222,6 +222,43 @@ ...@@ -222,6 +222,43 @@
el.addClass('col-md-3'); el.addClass('col-md-3');
el.removeClass('col-md-4'); 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> </script>
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!