Commit 5588f645 by Tatang

purchase

1 parent 26e8cb7c
...@@ -4,7 +4,8 @@ from deform import widget, Form, ValidationFailure ...@@ -4,7 +4,8 @@ from deform import widget, Form, ValidationFailure
from opensipkd.base.views import DataTables from opensipkd.base.views import DataTables
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 func, case from sqlalchemy import case
from sqlalchemy.orm import aliased
from . import BaseView from . import BaseView
from ..models import (DBSession, H2hArInvoice, H2hArInvoiceDet, Partner, Produk) from ..models import (DBSession, H2hArInvoice, H2hArInvoiceDet, Partner, Produk)
...@@ -17,11 +18,11 @@ status_purchase = ( ...@@ -17,11 +18,11 @@ status_purchase = (
(2, 'Batal'), (2, 'Batal'),
) )
invoice_type = ( # invoice_type = (
(0, '--Semua--'), # (0, '--Semua--'),
(1, 'Payment'), # (1, 'Payment'),
(2, 'Register'), # (2, 'Register'),
) # )
def form_validator(form, value): def form_validator(form, value):
...@@ -34,13 +35,13 @@ class ViewData(BaseView): ...@@ -34,13 +35,13 @@ class ViewData(BaseView):
renderer='templates/purchase/list.pt') renderer='templates/purchase/list.pt')
def view_list(self): def view_list(self):
class ToolbarSchema(colander.Schema): class ToolbarSchema(colander.Schema):
inv_type = colander.SchemaNode( # inv_type = colander.SchemaNode(
colander.Integer(), # colander.Integer(),
default=1, # default=1,
oid="inv_type", # oid="inv_type",
widget=widget.SelectWidget(values=invoice_type, css_class='form-toolbar'), # widget=widget.SelectWidget(values=invoice_type, css_class='form-toolbar'),
title="Jenis" # title="Jenis"
) # )
status = colander.SchemaNode( status = colander.SchemaNode(
colander.String(), colander.String(),
oid="status", oid="status",
...@@ -54,13 +55,13 @@ class ViewData(BaseView): ...@@ -54,13 +55,13 @@ class ViewData(BaseView):
params = { params = {
'form': form, 'form': form,
'invoice_type': [k and s or '-' for k, s in invoice_type], # 'invoice_type': [k and s or '-' for k, s in invoice_type],
'status_purchase': [s for k, s in status_purchase if k != 9999], 'status_purchase': [s for k, s in status_purchase if k != 9999],
'columns': [ 'columns': [
dict(title="ID"), dict(title="ID"),
dict(title="No. Invoice"), dict(title="No. Invoice"),
dict(title="Customer"), dict(title="Customer"),
dict(title="Jenis"), dict(title="Vendor"),
dict(title="Produk"), dict(title="Produk"),
dict(title="Harga"), dict(title="Harga"),
dict(title="Status"), dict(title="Status"),
...@@ -69,7 +70,7 @@ class ViewData(BaseView): ...@@ -69,7 +70,7 @@ class ViewData(BaseView):
dict(data="id", width="0px"), dict(data="id", width="0px"),
dict(data="nomor", width="150px"), dict(data="nomor", width="150px"),
dict(data="customer"), dict(data="customer"),
dict(data="inv_type", width="100px"), dict(data="vendor"),
dict(data="produk"), dict(data="produk"),
dict(data="harga", width="100px"), dict(data="harga", width="100px"),
dict(data="status", width="100px"), dict(data="status", width="100px"),
...@@ -96,16 +97,19 @@ class ViewData(BaseView): ...@@ -96,16 +97,19 @@ class ViewData(BaseView):
url_dict = request.matchdict url_dict = request.matchdict
act = url_dict['act'] act = url_dict['act']
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
status = 9999 status = 9999
if 'status' in request.params: if 'status' in request.params:
status = int(request.params['status']) status = int(request.params['status'])
vendor = aliased(Partner, name='vendor')
customer = aliased(Partner, name='customer')
columns = [ columns = [
ColumnDT(H2hArInvoiceDet.id, mData='id'), ColumnDT(H2hArInvoiceDet.id, mData='id'),
ColumnDT(H2hArInvoice.cust_inv_no, mData='nomor'), ColumnDT(H2hArInvoice.cust_inv_no, mData='nomor'),
ColumnDT(Partner.nama, mData='customer'), ColumnDT(customer.nama, mData='customer'),
ColumnDT(func.coalesce(H2hArInvoice.cust_inv_type, 0), mData='inv_type'), ColumnDT(vendor.nama, mData='vendor'),
ColumnDT(Produk.nama, mData='produk'), ColumnDT(Produk.nama, mData='produk'),
ColumnDT(H2hArInvoiceDet.amt_sell, mData='harga'), ColumnDT(H2hArInvoiceDet.amt_sell, mData='harga'),
ColumnDT(case( ColumnDT(case(
...@@ -117,9 +121,10 @@ class ViewData(BaseView): ...@@ -117,9 +121,10 @@ class ViewData(BaseView):
] ]
query = DBSession.query().select_from(H2hArInvoice) \ query = DBSession.query().select_from(H2hArInvoice) \
.join(H2hArInvoiceDet, H2hArInvoiceDet.ar_invoice_id == H2hArInvoice.id) \ .join(H2hArInvoiceDet, H2hArInvoiceDet.ar_invoice_id == H2hArInvoice.id) \
.join(Partner, Partner.id == H2hArInvoice.customer_id) \ .join(customer, customer.id == H2hArInvoice.customer_id) \
.join(vendor, vendor.id == H2hArInvoiceDet.vendor_id) \
.join(Produk, Produk.id == H2hArInvoiceDet.produk_id) .join(Produk, Produk.id == H2hArInvoiceDet.produk_id)
query = query.filter(H2hArInvoice.cust_inv_type == jenis) # query = query.filter(H2hArInvoice.cust_inv_type == jenis)
if status != 9999: if status != 9999:
if status <= 0: if status <= 0:
query = query.filter(H2hArInvoiceDet.status <= status) query = query.filter(H2hArInvoiceDet.status <= status)
...@@ -147,7 +152,7 @@ class ViewData(BaseView): ...@@ -147,7 +152,7 @@ class ViewData(BaseView):
('customer', customer.nama, 'text'), ('customer', customer.nama, 'text'),
('harga', data.amt_sell or 0, 'text'), ('harga', data.amt_sell or 0, 'text'),
('inquiry', format_json(data.inquiry), 'textarea'), ('inquiry', format_json(data.inquiry), 'textarea'),
('payment', format_json(data.payment), 'textarea'), ('purchase', format_json(data.payment), 'textarea'),
('advice', format_json(data.advice), 'textarea'), ('advice', format_json(data.advice), 'textarea'),
('notify', format_json(data.notify), 'textarea'), ('notify', format_json(data.notify), 'textarea'),
) )
......
...@@ -59,9 +59,8 @@ ...@@ -59,9 +59,8 @@
var oTableUrl = oTableUri + "/grid/act"; var oTableUrl = oTableUri + "/grid/act";
function getDataUrl() { function getDataUrl() {
var jns = $('select#inv_type').val();
var sts = $('select#status').val(); var sts = $('select#status').val();
return oTableUrl + '?jenis=' + jns.toString() + '&status=' + sts.toString(); return oTableUrl + '?status=' + sts.toString();
} }
function getViewUrl(vid) { function getViewUrl(vid) {
...@@ -90,12 +89,7 @@ ...@@ -90,12 +89,7 @@
{'data': 'id', 'width': '0px'}, {'data': 'id', 'width': '0px'},
{'data': 'nomor', 'width': '150px'}, {'data': 'nomor', 'width': '150px'},
{'data': 'customer'}, {'data': 'customer'},
{'data': 'inv_type', 'width': '100px', {'data': 'vendor'},
'render': function(data, type, full, meta) {
var st = ${params.invoice_type};
return st[data];
}
},
{'data': 'produk'}, {'data': 'produk'},
{'data': 'harga', 'width': '100px'}, {'data': 'harga', 'width': '100px'},
{'data': 'status', 'width': '100px', {'data': 'status', 'width': '100px',
...@@ -181,7 +175,7 @@ ...@@ -181,7 +175,7 @@
} }
}); });
$('select#inv_type,select#status').on('change', function() { $('select#status').on('change', function() {
mID = 0; mID = 0;
oTable.ajax.url(getDataUrl()).load(); 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!