diff --git a/brewman/brewman/__init__.py b/brewman/brewman/__init__.py
index 0bfa2597..f4312162 100644
--- a/brewman/brewman/__init__.py
+++ b/brewman/brewman/__init__.py
@@ -94,9 +94,6 @@ def main(global_config, **settings):
config.add_route('issue', '/Issue')
config.add_route('issues_grid', '/Issues/Services/{date}')
- config.add_route('day_book', '/Reports/DayBook')
- config.add_route('unposted', '/Reports/Unposted')
-
config.add_route('ledger_id', '/Ledger/{id}')
config.add_route('ledger', '/Ledger')
@@ -109,6 +106,9 @@ def main(global_config, **settings):
config.add_route('cash_flow_id', '/CashFlow/{id}')
config.add_route('cash_flow', '/CashFlow')
+ config.add_route('daybook', '/Daybook')
+ config.add_route('unposted', '/Unposted')
+
config.add_route('profit_loss', '/Reports/ProfitLoss')
config.add_route('group_roles_id', '/Admin/GroupRoles/{id}')
diff --git a/brewman/brewman/static/partial/daybook.html b/brewman/brewman/static/partial/daybook.html
new file mode 100644
index 00000000..595934f7
--- /dev/null
+++ b/brewman/brewman/static/partial/daybook.html
@@ -0,0 +1,42 @@
+
diff --git a/brewman/brewman/static/partial/unposted.html b/brewman/brewman/static/partial/unposted.html
new file mode 100644
index 00000000..a0d95bda
--- /dev/null
+++ b/brewman/brewman/static/partial/unposted.html
@@ -0,0 +1,35 @@
+
diff --git a/brewman/brewman/static/scripts/angular_service.js b/brewman/brewman/static/scripts/angular_service.js
index 6250c96f..c7017cb0 100644
--- a/brewman/brewman/static/scripts/angular_service.js
+++ b/brewman/brewman/static/scripts/angular_service.js
@@ -92,6 +92,16 @@ overlord_service.factory('CashFlow', ['$resource', function ($resource) {
return $resource('/CashFlow/:id');
}]);
+// TODO: Replace hardcoded url with route_url
+overlord_service.factory('Daybook', ['$resource', function ($resource) {
+ return $resource('/Daybook');
+}]);
+
+// TODO: Replace hardcoded url with route_url
+overlord_service.factory('Unposted', ['$resource', function ($resource) {
+ return $resource('/Unposted');
+}]);
+
// TODO: Replace hardcoded url with route_url
overlord_service.factory('LedgerService', ['$resource', function ($resource) {
return $resource('/Services/Accounts/:type');
diff --git a/brewman/brewman/static/scripts/daybook.js b/brewman/brewman/static/scripts/daybook.js
index eb123fce..28121dad 100644
--- a/brewman/brewman/static/scripts/daybook.js
+++ b/brewman/brewman/static/scripts/daybook.js
@@ -1,27 +1,15 @@
-function Populate(response) {
- if (response != null) {
- var stateObj = { 'StartDate': response.start_date, 'FinishDate': response.finish_date };
- history.pushState(stateObj, 'Display', response.url);
- var $table = $('#tbodyMain')
- $table.html(response.body);
+function DaybookCtrl($scope, $routeParams, $location, Daybook) {
+ if (typeof $routeParams.StartDate === 'undefined') {
+ $scope.info = Daybook.get({});
+ } else if (typeof $routeParams.id === 'undefined') {
+ $scope.info = Daybook.get({StartDate:$routeParams.StartDate, FinishDate:$routeParams.FinishDate});
}
+ $scope.show = function () {
+ $scope.info = Daybook.get({StartDate:$scope.info.StartDate, FinishDate:$scope.info.FinishDate}, function (u, putResponseHeaders) {
+ $location.path('/Daybook').search({StartDate:u.StartDate, FinishDate:u.FinishDate});
+ }, function (data, status) {
+ $scope.toasts.push({Type:'Error', Message:data.data});
+ });
+ };
+ $('#txtStartDate').focus();
}
-
-function Show(startDate, finishDate) {
- $.ajax({
- type: "POST",
- contentType: "application/json; charset=utf-8",
- url: show_url,
- data: JSON.stringify({ startDate: startDate, finishDate: finishDate }),
- dataType: "json",
- success: function(response) {
- Populate(response);
- },
- error: function(jqXHR, textStatus) {
- $("#ctl00_statusDiv").removeClass().addClass("error");
- var msg = $.parseJSON(jqXHR.responseText).Message;
- $("#ctl00_statusDiv").html(msg);
- }
- });
- return false;
-}
\ No newline at end of file
diff --git a/brewman/brewman/static/scripts/overlord.js b/brewman/brewman/static/scripts/overlord.js
index 992552b2..e158e795 100644
--- a/brewman/brewman/static/scripts/overlord.js
+++ b/brewman/brewman/static/scripts/overlord.js
@@ -32,6 +32,9 @@ var overlord = angular.module('overlord', ['overlord.directive', 'overlord.filte
// when('/Ledger', {templateUrl:'/partial/ledger.html', controller:LedgerCtrl, resolve: LedgerCtrl.resolve}).
// when('/Ledger/:id', {templateUrl:'/partial/ledger.html', controller:LedgerCtrl, resolve: LedgerCtrl.resolve}).
+ when('/Daybook', {templateUrl:'/partial/daybook.html', controller:DaybookCtrl}).
+ when('/Unposted', {templateUrl:'/partial/unposted.html', controller:UnpostedCtrl}).
+
when('/TrialBalance', {templateUrl:'/partial/trial-balance.html', controller:TrialBalanceCtrl}).
when('/TrialBalance/:date', {templateUrl:'/partial/trial-balance.html', controller:TrialBalanceCtrl}).
diff --git a/brewman/brewman/static/scripts/unposted.js b/brewman/brewman/static/scripts/unposted.js
new file mode 100644
index 00000000..2e8a8516
--- /dev/null
+++ b/brewman/brewman/static/scripts/unposted.js
@@ -0,0 +1,3 @@
+function UnpostedCtrl($scope, Unposted) {
+ $scope.info = Unposted.query();
+}
diff --git a/brewman/brewman/templates/angular_base.mako b/brewman/brewman/templates/angular_base.mako
index fbf3b2ca..0fc02b8f 100644
--- a/brewman/brewman/templates/angular_base.mako
+++ b/brewman/brewman/templates/angular_base.mako
@@ -42,6 +42,8 @@
${h.ScriptLink(request, 'product-ledger.js')}
${h.ScriptLink(request, 'trial-balance.js')}
${h.ScriptLink(request, 'cash-flow.js')}
+ ${h.ScriptLink(request, 'daybook.js')}
+ ${h.ScriptLink(request, 'unposted.js')}
${h.ScriptLink(request, 'account.js')}
${h.ScriptLink(request, 'user.js')}
diff --git a/brewman/brewman/templates/nav_bar/report.mako b/brewman/brewman/templates/nav_bar/report.mako
index 2d1ea2e6..4bd0ea78 100644
--- a/brewman/brewman/templates/nav_bar/report.mako
+++ b/brewman/brewman/templates/nav_bar/report.mako
@@ -5,7 +5,7 @@
Product Ledger
## Raw Material Cost
Cash Flow
- Day Book
+ Day Book
Purchases
- Purchase Entry
diff --git a/brewman/brewman/templates/reports/day_book.pt b/brewman/brewman/templates/reports/day_book.pt
deleted file mode 100644
index d65e995e..00000000
--- a/brewman/brewman/templates/reports/day_book.pt
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
- ${h.JsLink(request, 'daybook.js')}
-
-
-
-
-
-
\ No newline at end of file
diff --git a/brewman/brewman/templates/reports/unposted.pt b/brewman/brewman/templates/reports/unposted.pt
deleted file mode 100644
index 464191dd..00000000
--- a/brewman/brewman/templates/reports/unposted.pt
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
- Date |
- Type |
- Debit |
- Amount |
- Credit |
- Amount |
- Narration |
-
-
-
- ${body}
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/brewman/brewman/views/reports/day_book.py b/brewman/brewman/views/reports/day_book.py
deleted file mode 100644
index abd25b11..00000000
--- a/brewman/brewman/views/reports/day_book.py
+++ /dev/null
@@ -1,81 +0,0 @@
-import datetime
-from sqlalchemy.orm import joinedload_all
-
-from pyramid.view import view_config
-from brewman.helpers import Literal
-
-from brewman.models.voucher import Voucher, Journal, VoucherType
-
-@view_config(request_method='GET', route_name='day_book', permission='DayBook', renderer='brewman:templates/reports/day_book.pt')
-def day_book_get(request):
- startDate = request.GET.get('startDate', None)
- finishDate = request.GET.get('finishDate', None)
- should_build_report = False if startDate is None else True
-
- if not should_build_report:
- body = ""
- else:
- report = build_report(request, startDate, finishDate)
- body = Literal(report['body'])
-
- if startDate == None:
- startDate = Literal(
- "StartDate('#txtStartDate', '{0}');".format(request.route_url('services_session_period_start')))
- finishDate = Literal(
- "FinishDate('#txtFinishDate', '{0}');".format(request.route_url('services_session_period_finish')))
- else:
- startDate = Literal("$('#txtStartDate').val('{0}');".format(startDate))
- finishDate = Literal("$('#txtFinishDate').val('{0}');".format(finishDate))
-
- return {'title': 'Day Book - Hops n Grains',
- 'pageclass': "page-blogpost page-sidebar-right",
- 'pagecontentclass': "page-content grid_12",
- 'page_header': '',
- 'body': body,
- 'startDate': startDate,
- 'finishDate': finishDate}
-
-
-@view_config(request_method='POST', route_name='day_book', permission='DayBook', renderer='json', xhr=True)
-def day_book_post(request):
- startDate = request.json_body['startDate']
- finishDate = request.json_body['finishDate']
- return build_report(request, startDate, finishDate)
-
-
-def build_report(request, startDate, finishDate):
- editUrl = ''
- body = ''
-
- query = Voucher.query().options(joinedload_all(Voucher.journals, Journal.ledger, innerjoin=True))\
- .filter(Voucher.date >= datetime.datetime.strptime(startDate, '%d-%b-%Y'))\
- .filter(Voucher.date <= datetime.datetime.strptime(finishDate, '%d-%b-%Y'))\
- .filter(Voucher.type != VoucherType.by_name('Issue').id)\
- .order_by(Voucher.date).order_by(Voucher.last_edit_date).all()
-
- for voucher in query:
- debit = 0
- credit = 0
- nameDebit = ""
- nameCredit = ""
- for journal in voucher.journals:
- if journal.debit == 1:
- debit += journal.amount
- nameDebit += "{0} / ".format(journal.ledger.name)
- else:
- credit += journal.amount
- nameCredit += "{0} / ".format(journal.ledger.name)
- nameDebit = nameDebit[:-3]
- nameCredit = nameCredit[:-3]
-
- nameDebit = '' + nameDebit + ''
- nameCredit = '' + nameCredit + ''
-
- body += '{2} | {3} | ' \
- '{4} | \u20B9 {5:.2f} | {6}' \
- ' | \u20B9 {7:.2f} | {8} |
'.format(
- ('' if voucher.posted else ' unposted'), str(voucher.id),
- voucher.date.strftime('%d-%b-%Y'), VoucherType.by_id(voucher.type).name, nameDebit, debit,
- nameCredit, credit, voucher.narration)
- return {'body': body, 'start_date': startDate, 'finish_date': finishDate,
- 'url': request.route_url('day_book', _query={'startDate': startDate, 'finishDate': finishDate})}
\ No newline at end of file
diff --git a/brewman/brewman/views/reports/daybook.py b/brewman/brewman/views/reports/daybook.py
new file mode 100644
index 00000000..910da588
--- /dev/null
+++ b/brewman/brewman/views/reports/daybook.py
@@ -0,0 +1,56 @@
+import datetime
+from sqlalchemy.orm import joinedload_all
+
+from pyramid.view import view_config
+
+from brewman.models.voucher import Voucher, Journal, VoucherType
+from brewman.views.services.session import services_session_period_finish, services_session_period_start
+from brewman.views.transactions import get_edit_url
+
+@view_config(request_method='GET', route_name='daybook', renderer='brewman:templates/angular_base.mako',
+ xhr=False)
+def daybook_get(request):
+ return {}
+
+
+@view_config(request_method='GET', route_name='daybook', renderer='json', xhr=True)
+def daybook_report(request):
+ start_date = request.GET.get('StartDate', None)
+ finish_date = request.GET.get('FinishDate', None)
+ if start_date and finish_date:
+ return build_report(request, start_date, finish_date)
+ else:
+ return {'StartDate': services_session_period_start(request),
+ 'FinishDate': services_session_period_finish(request), 'Body': []}
+
+
+def build_report(request, start_date, finish_date):
+ report = {'StartDate': start_date, 'FinishDate': finish_date, 'Body': []}
+
+ query = Voucher.query().options(joinedload_all(Voucher.journals, Journal.ledger, innerjoin=True))\
+ .filter(Voucher.date >= datetime.datetime.strptime(start_date, '%d-%b-%Y'))\
+ .filter(Voucher.date <= datetime.datetime.strptime(finish_date, '%d-%b-%Y'))\
+ .filter(Voucher.type != VoucherType.by_name('Issue').id)\
+ .order_by(Voucher.date).order_by(Voucher.last_edit_date).all()
+
+ for voucher in query:
+ debit = 0
+ credit = 0
+ nameDebit = ""
+ nameCredit = ""
+ for journal in voucher.journals:
+ if journal.debit == 1:
+ debit += journal.amount
+ nameDebit += "{0} / ".format(journal.ledger.name)
+ else:
+ credit += journal.amount
+ nameCredit += "{0} / ".format(journal.ledger.name)
+ nameDebit = nameDebit[:-3]
+ nameCredit = nameCredit[:-3]
+
+ report['Body'].append({'Date': voucher.date.strftime('%d-%b-%Y'), 'Url': get_edit_url(request, voucher),
+ 'Type': VoucherType.by_id(voucher.type).name,
+ 'Narration': voucher.narration, 'Posted': voucher.posted,
+ 'DebitN': nameDebit, 'DebitA': "\u20B9\u00A0{0:.2f}".format(debit),
+ 'CreditN': nameCredit,'CreditA': "\u20B9\u00A0{0:.2f}".format(credit)})
+ return report
diff --git a/brewman/brewman/views/reports/unposted.py b/brewman/brewman/views/reports/unposted.py
index b6a02ee2..ae340e90 100644
--- a/brewman/brewman/views/reports/unposted.py
+++ b/brewman/brewman/views/reports/unposted.py
@@ -1,26 +1,22 @@
-import datetime
from sqlalchemy.orm import joinedload_all
from pyramid.view import view_config
-from brewman.helpers import Literal
from brewman.models.voucher import Voucher, Journal, VoucherType
from brewman.views.transactions import get_edit_url
-@view_config(request_method='GET', route_name='unposted', renderer='brewman:templates/reports/unposted.pt')
-def unposted(request):
- body = Literal(build_report(request))
+@view_config(request_method='GET', route_name='unposted', renderer='brewman:templates/angular_base.mako',
+ xhr=False)
+def unposted_get(request):
+ return {}
- return {'title': 'Day Book - Hops n Grains',
- 'pageclass': "page-blogpost page-sidebar-right",
- 'pagecontentclass': "page-content grid_12",
- 'page_header': '',
- 'body': body}
+@view_config(request_method='GET', route_name='unposted', renderer='json', xhr=True)
+def unposted_report(request):
+ return build_report(request)
def build_report(request):
- editUrl = ''
- body = ''
+ body = []
query = Voucher.query().options(joinedload_all(Voucher.journals, Journal.ledger, innerjoin=True))\
.filter(Voucher.posted == False)\
@@ -42,12 +38,10 @@ def build_report(request):
nameDebit = nameDebit[:-3]
nameCredit = nameCredit[:-3]
- nameDebit = '' + nameDebit + ''
- nameCredit = '' + nameCredit + ''
+ body.append({'Date': voucher.date.strftime('%d-%b-%Y'), 'Url': get_edit_url(request, voucher),
+ 'Type': VoucherType.by_id(voucher.type).name,
+ 'Narration': voucher.narration, 'Posted': voucher.posted,
+ 'DebitN': nameDebit, 'DebitA': "\u20B9 {0:.2f}".format(debit),
+ 'CreditN': nameCredit,'CreditA': "\u20B9 {0:.2f}".format(credit)})
- body += '{1} | {2} | '\
- '{3} | \u20B9 {4:.2f} | {5}'\
- ' | \u20B9 {6:.2f} | {7} |
'.format(
- str(voucher.id), voucher.date.strftime('%d-%b-%Y'), VoucherType.by_id(voucher.type).name, nameDebit, debit,
- nameCredit, credit, voucher.narration)
return body
\ No newline at end of file