Commit 26e8cb7c by Tatang

purchase payment

1 parent 6aa5f382
......@@ -4,6 +4,7 @@ from deform import widget, Form, ValidationFailure
from opensipkd.base.views import DataTables
from pyramid.httpexceptions import HTTPFound
from pyramid.view import view_config
from sqlalchemy import case
from sqlalchemy.orm import aliased
from . import BaseView
......@@ -12,7 +13,7 @@ from opensipkd.base.tools import format_json
from opensipkd.base.tools.db import column_concat
status_payment = (
(-1, '--Semua--'),
(9999, '--Semua--'),
(0, 'Pending'),
(1, 'Sukses'),
(2, 'Batal'),
......@@ -40,7 +41,7 @@ class ViewData(BaseView):
params = {
'form': form,
'status_payment': [s for k, s in status_payment if k > -1],
'status_payment': [s for k, s in status_payment if k != 9999],
'columns': [
dict(title="ID"),
dict(title="No. Invoice"),
......@@ -79,7 +80,7 @@ class ViewData(BaseView):
url_dict = request.matchdict
act = url_dict['act']
if act == "grid":
status = -1
status = 9999
if 'status' in request.params:
status = int(request.params['status'])
......@@ -100,12 +101,20 @@ class ViewData(BaseView):
),
ColumnDT(vendor.nama, mData='vendor'),
ColumnDT(PartnerPay.amt_sell, mData='amount'),
ColumnDT(PartnerPay.status, mData='status'),
ColumnDT(case(
[
(PartnerPay.status <= 0, 0)
],
else_=PartnerPay.status
), mData='status'),
]
query = DBSession.query().select_from(PartnerPay)\
.join(vendor, vendor.id == PartnerPay.vendor_id)\
.join(customer, customer.id == PartnerPay.customer_id)
if status > -1:
if status != 9999:
if status <= 0:
query = query.filter(PartnerPay.status <= status)
else:
query = query.filter(PartnerPay.status == status)
row_table = DataTables(request.GET, query, columns)
return row_table.output_result()
......
......@@ -4,14 +4,21 @@ from deform import widget, Form, ValidationFailure
from opensipkd.base.views import DataTables
from pyramid.httpexceptions import HTTPFound
from pyramid.view import view_config
from sqlalchemy import func
from sqlalchemy import func, case
from . import BaseView
from ..models import (DBSession, H2hArInvoice, H2hArInvoiceDet, Partner)
from ..models import (DBSession, H2hArInvoice, H2hArInvoiceDet, Partner, Produk)
from opensipkd.base.tools import format_json
status_purchase = (
(9999, '--Semua--'),
(0, 'Pending'),
(1, 'Sukses'),
(2, 'Batal'),
)
invoice_type = (
(0, '--None--'),
(0, '--Semua--'),
(1, 'Payment'),
(2, 'Register'),
)
......@@ -30,7 +37,15 @@ class ViewData(BaseView):
inv_type = colander.SchemaNode(
colander.Integer(),
default=1,
oid="inv_type", widget=widget.SelectWidget(values=invoice_type, css_class='form-toolbar')
oid="inv_type",
widget=widget.SelectWidget(values=invoice_type, css_class='form-toolbar'),
title="Jenis"
)
status = colander.SchemaNode(
colander.String(),
oid="status",
widget=widget.SelectWidget(values=status_purchase, css_class='form-toolbar'),
title="Status"
)
toolbar = ToolbarSchema(Validator=form_validator)
......@@ -40,17 +55,24 @@ class ViewData(BaseView):
params = {
'form': form,
'invoice_type': [k and s or '-' for k, s in invoice_type],
'status_purchase': [s for k, s in status_purchase if k != 9999],
'columns': [
dict(title="ID"),
dict(title="No. Invoice"),
dict(title="Customer"),
dict(title="Jenis"),
dict(title="Produk"),
dict(title="Harga"),
dict(title="Status"),
],
'column_data': [
dict(data="id", width="0px"),
dict(data="nomor", width="150px"),
dict(data="customer"),
dict(data="inv_type", width="100px"),
dict(data="produk"),
dict(data="harga", width="100px"),
dict(data="status", width="100px"),
],
'buttons': [
dict(id="btn_view", cls="btn btn btn-primary", title="View"),
......@@ -75,16 +97,34 @@ class ViewData(BaseView):
act = url_dict['act']
if act == "grid":
jenis = 'jenis' in request.params and request.params['jenis'] and int(request.params['jenis']) or None
status = 9999
if 'status' in request.params:
status = int(request.params['status'])
columns = [
ColumnDT(H2hArInvoice.id, mData='id'),
ColumnDT(H2hArInvoiceDet.id, mData='id'),
ColumnDT(H2hArInvoice.cust_inv_no, mData='nomor'),
ColumnDT(Partner.nama, mData='customer'),
ColumnDT(func.coalesce(H2hArInvoice.cust_inv_type, 0), mData='inv_type'),
ColumnDT(Produk.nama, mData='produk'),
ColumnDT(H2hArInvoiceDet.amt_sell, mData='harga'),
ColumnDT(case(
[
(H2hArInvoiceDet.status <= 0, 0)
],
else_=H2hArInvoiceDet.status
), mData='status'),
]
query = DBSession.query().select_from(H2hArInvoice)\
.join(Partner, Partner.id == H2hArInvoice.customer_id)
query = DBSession.query().select_from(H2hArInvoice) \
.join(H2hArInvoiceDet, H2hArInvoiceDet.ar_invoice_id == H2hArInvoice.id) \
.join(Partner, Partner.id == H2hArInvoice.customer_id) \
.join(Produk, Produk.id == H2hArInvoiceDet.produk_id)
query = query.filter(H2hArInvoice.cust_inv_type == jenis)
if status != 9999:
if status <= 0:
query = query.filter(H2hArInvoiceDet.status <= status)
else:
query = query.filter(H2hArInvoiceDet.status == status)
row_table = DataTables(request.GET, query, columns)
return row_table.output_result()
......@@ -95,19 +135,21 @@ class ViewData(BaseView):
request = self.req
url_dict = request.matchdict
view_id = url_dict['id']
data = H2hArInvoice.query_id(id=view_id).first()
data = H2hArInvoiceDet.query_id(id=view_id).first()
params = dict(
form=None
)
if data:
invoice = data.h2h_ar_invoice
customer = invoice.customer
form_list = (
('inv_no', data.cust_inv_no or '', 'text'),
('customer', data.customer.nama, 'text'),
('amount', data.amount or 0, 'text'),
('inv_no', invoice.cust_inv_no or '', 'text'),
('customer', customer.nama, 'text'),
('harga', data.amt_sell or 0, 'text'),
('inquiry', format_json(data.inquiry), 'textarea'),
('payment', format_json(data.payment), 'textarea'),
('advice', format_json(data.advice), 'textarea'),
('notify', format_json(data.notify), 'textarea'),
)
sm = colander.Schema()
......
......@@ -7,8 +7,11 @@
overflow-y: auto;
}
</style>
<div id="tmp-toolbar">
<div id="tmp-toolbar" style="display: inline-block;">
<span tal:repeat="f params.form" tal:omit-tag="">
<label for="${f.oid}" class="control-label">
${f.title}
</label>
${structure:f.serialize()}
</span>
</div>
......@@ -82,20 +85,20 @@
[10, 25, 50, 100],
[10, 25, 50, 100]
],
// columns: [
// {'data': 'id', 'width': '0px'},
// {'data': 'nomor', 'width': '150px'},
// {'data': 'customer'},
// {'data': 'vendor'},
// {'data': 'amount', 'width': '100px'},
// {'data': 'status', 'width': '100px',
// 'render': function(data, type, full, meta) {
// var st = ${params.status_payment};
// return st[data];
// }
// }
// ],
columns: ${params.column_data},
columns: [
{'data': 'id', 'width': '0px'},
{'data': 'nomor', 'width': '150px'},
{'data': 'customer'},
{'data': 'vendor'},
{'data': 'amount', 'width': '100px'},
{'data': 'status', 'width': '100px',
'render': function(data, type, full, meta) {
var st = ${params.status_payment};
return st[data];
}
}
],
//columns: ${params.column_data},
columnDefs: [{
searchable: false,
visible: false,
......@@ -128,8 +131,7 @@
var tb = tb_array.join(' ');
$("div.toolbar").html(tb)
.attr('style', 'display:block; float: left; margin-bottom:6px; line-height:16px;');
$('select.form-toolbar').appendTo($("div.toolbar"));
$('tmp-toolbar').hide();
$('#tmp-toolbar').appendTo($("div.toolbar"));
//events
$('#table1 tbody').on('click', 'tr', function() {
......
......@@ -7,8 +7,11 @@
overflow-y: auto;
}
</style>
<div id="tmp-toolbar">
<div id="tmp-toolbar" style="display: inline-block;">
<span tal:repeat="f params.form" tal:omit-tag="">
<label for="${f.oid}" class="control-label">
${f.title}
</label>
${structure:f.serialize()}
</span>
</div>
......@@ -56,8 +59,9 @@
var oTableUrl = oTableUri + "/grid/act";
function getDataUrl() {
var opt = $('select#inv_type').val();
return oTableUrl + '?jenis=' + opt.toString();
var jns = $('select#inv_type').val();
var sts = $('select#status').val();
return oTableUrl + '?jenis=' + jns.toString() + '&status=' + sts.toString();
}
function getViewUrl(vid) {
......@@ -91,6 +95,14 @@
var st = ${params.invoice_type};
return st[data];
}
},
{'data': 'produk'},
{'data': 'harga', 'width': '100px'},
{'data': 'status', 'width': '100px',
'render': function(data, type, full, meta) {
var st = ${params.status_purchase};
return st[data];
}
}
],
//columns: ${params.column_data},
......@@ -126,8 +138,7 @@
var tb = tb_array.join(' ');
$("div.toolbar").html(tb)
.attr('style', 'display:block; float: left; margin-bottom:6px; line-height:16px;');
$('select.form-toolbar').appendTo($("div.toolbar"));
$('tmp-toolbar').hide();
$('#tmp-toolbar').appendTo($("div.toolbar"));
//events
$('#table1 tbody').on('click', 'tr', function() {
......@@ -170,7 +181,7 @@
}
});
$('select#inv_type').on('change', function() {
$('select#inv_type,select#status').on('change', function() {
mID = 0;
oTable.ajax.url(getDataUrl()).load();
});
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!