Renamed Report permissions to make more sense

Removed the void and reprints report and added it to the bill settlement report
updated the import to add a new sql to be executed later to update the settlements and report permission names
Export works on all reports
This commit is contained in:
Amritanshu
2019-08-25 15:08:59 +05:30
parent 05860fb0b9
commit 6d0f30503a
98 changed files with 527 additions and 1079 deletions

View File

@ -369,38 +369,36 @@ def includeme(config):
config.add_route("v1_move_kot", "/v1/move-kot")
config.add_route("v1_active_cashiers", "/v1/active-cashiers")
config.add_route("v1_checkout_id", "/v1/checkout/{id}")
config.add_route("checkout_id", "/checkout/{id}")
config.add_route("v1_cashier_report_id", "/v1/cashier-report/{id}")
config.add_route("cashier_report_id", "/cashier-report/{id}")
config.add_view(
"barker.views.home",
route_name="checkout_id",
route_name="cashier_report_id",
request_method="GET",
permission="Cashier Checkout",
)
config.add_route("v1_checkout_blank", "/v1/checkout")
config.add_route("checkout_blank", "/checkout")
config.add_route("v1_cashier_report", "/v1/cashier-report")
config.add_route("cashier_report", "/cashier-report")
config.add_view(
"barker.views.home",
route_name="checkout_blank",
route_name="cashier_report",
request_method="GET",
permission="Cashier Checkout",
)
config.add_route("v1_sa_sale", "/v1/sale-analysis/sale")
config.add_route("v1_sa_settlements", "/v1/sale-analysis/settlements")
config.add_route("v1_sa_tax", "/v1/sale-analysis/tax")
config.add_route("v1_sale_analysis", "/v1/sale-analysis")
config.add_route("sale_analysis", "/sale-analysis")
config.add_route("v1_sale_report", "/v1/sale-report")
config.add_route("sale_report", "/sale-report")
config.add_view(
"barker.views.home",
route_name="sale_analysis",
route_name="sale_report",
request_method="GET",
permission="Sales Analysis",
)
config.add_route("tax_analysis", "/tax-analysis")
config.add_route("v1_tax_report", "/v1/tax-report")
config.add_route("tax_report", "/tax-report")
config.add_view(
"barker.views.home",
route_name="tax_analysis",
route_name="tax_report",
request_method="GET",
permission="Tax Analysis",
)
@ -440,14 +438,6 @@ def includeme(config):
permission="Discount Report",
)
config.add_route("v1_voids_reprints_report", "/v1/voids-reprints-report")
config.add_route("voids_reprints_report", "/voids-reprints-report")
config.add_view(
"barker.views.home",
route_name="voids_reprints_report",
request_method="GET",
permission="Void or Reprinted Bill Report",
)
# config.add_route("v1_bills_new", "/v1/bills/new")
# config.add_route("v1_bills_id", "/v1/bills/{id}")

View File

@ -12,7 +12,7 @@ from barker.views.reports import get_start_date, get_finish_date
request_method="GET",
route_name="v1_beer_consumption_report",
renderer="json",
permission="Beer Consumption",
permission="Beer Consumption Report",
)
def beer_consumption(request):
start_date = get_start_date(request.GET.get("s", None)) - timedelta(hours=7)

View File

@ -2,7 +2,7 @@ from datetime import datetime, timedelta
from pyramid.view import view_config
from barker.models import Settlement, SettleOption, Voucher, VoucherType
from barker.models import Settlement, SettleOption, Voucher, VoucherType, Reprint
from barker.models.validation_exception import ValidationError
from barker.views.reports import get_start_date, get_finish_date
@ -11,7 +11,7 @@ from barker.views.reports import get_start_date, get_finish_date
request_method="GET",
route_name="v1_bill_settlement_report",
renderer="json",
permission="Bill Details",
permission="Bill Settlement Report",
)
def bill_details(request):
start_date = get_start_date(request.GET.get("s", None))
@ -22,8 +22,17 @@ def bill_details(request):
).days > 5 and "Accounts Audit" not in request.effective_principals:
raise ValidationError("Accounts Audit")
return {
"startDate": start_date.date().strftime("%d-%b-%Y"),
"finishDate": (finish_date - timedelta(days=1)).date().strftime("%d-%b-%Y"),
"amounts": settlements(start_date, finish_date, request.dbsession)
+ reprints(start_date, finish_date, request.dbsession),
}
def settlements(start_date, finish_date, dbsession):
vouchers = (
request.dbsession.query(Voucher)
dbsession.query(Voucher)
.join(Voucher.settlements)
.join(Settlement.settle_option)
.filter(Voucher.date >= start_date, Voucher.date <= finish_date)
@ -34,37 +43,43 @@ def bill_details(request):
report = []
for item in vouchers:
if item.voucher_type == VoucherType.VOID:
amount = (
next(
s.amount
for s in item.settlements
if s.settled == SettleOption.AMOUNT()
)
* -1
)
for so in (so for so in item.settlements if so.settle_option.show_in_choices):
if item.voucher_type == VoucherType.VOID:
details = f"Void: {item.reason}"
elif item.voucher_type == VoucherType.STAFF:
details = f"Staff: {item.reason}"
elif item.voucher_type == VoucherType.NO_CHARGE:
details = f"NC: {item.reason}"
else:
details = so.settle_option.name
report.append(
{
"date": item.date.strftime("%d-%b-%Y %H:%M:%S"),
"billId": item.full_bill_id,
"settlement": "Void: {0}".format(item.void_reason),
"amount": round(amount, 2),
"settlement": details,
"amount": round(so.amount, 2),
}
)
else:
for so in (
so for so in item.settlements if so.settle_option.show_in_choices
):
report.append(
{
"date": item.date.strftime("%d-%b-%Y %H:%M:%S"),
"billId": item.full_bill_id,
"settlement": so.settle_option.name,
"amount": round(so.amount, 2),
}
return report
def reprints(start_date, finish_date, dbsession):
return [
{
"date": item.date.strftime("%d-%b-%Y %H:%M:%S"),
"billId": item.voucher.full_bill_id,
"settlement": f"Reprinted by {item.user.name}",
"Amount": round(
next(
s.amount
for s in item.voucher.settlements
if s.settled == SettleOption.AMOUNT()
)
return {
"startDate": start_date.date().strftime("%d-%b-%Y"),
"finishDate": (finish_date - timedelta(days=1)).date().strftime("%d-%b-%Y"),
"amounts": report,
}
* -1,
2,
),
}
for item in dbsession.query(Reprint)
.filter(Reprint.date >= start_date, Reprint.date <= finish_date)
.all()
]

View File

@ -14,7 +14,7 @@ __author__ = "tanshu"
request_method="GET",
route_name="v1_active_cashiers",
renderer="json",
permission="Cashier Checkout",
permission="Cashier Report",
)
def active_cashiers(request):
start_date = get_start_date(request.GET.get("s", None))
@ -38,9 +38,9 @@ def active_cashiers(request):
@view_config(
request_method="GET",
route_name="v1_checkout_blank",
route_name="v1_cashier_report",
renderer="json",
permission="Cashier Checkout",
permission="Cashier Report",
)
def blank_out(request):
start_date = request.GET.get("s", datetime.today().strftime("%d-%b-%Y"))
@ -57,9 +57,9 @@ def blank_out(request):
@view_config(
request_method="GET",
route_name="v1_checkout_id",
route_name="v1_cashier_report_id",
renderer="json",
permission="Cashier Checkout",
permission="Cashier Report",
request_param=("s", "f"),
)
def check_me_out(request):

View File

@ -19,7 +19,7 @@ from barker.views.reports import get_start_date, get_finish_date
request_method="GET",
route_name="v1_product_sale_report",
renderer="json",
permission="Sales Detail",
permission="Product Sale Report",
)
def product_sale_report_view(request):
start_date = get_start_date(request.GET.get("s", None))

View File

@ -19,9 +19,9 @@ from barker.views.reports import get_start_date, get_finish_date
@view_config(
request_method="GET",
route_name="v1_sale_analysis",
route_name="v1_sale_report",
renderer="json",
permission="Sales Analysis",
permission="Sale Report",
)
def get_sale_analysis(request):
start_date = get_start_date(request.GET.get("s", None))
@ -45,28 +45,6 @@ def get_sale_analysis(request):
}
@view_config(
request_method="GET",
route_name="v1_sa_sale",
renderer="json",
permission="Sales Analysis",
)
def get_sale_view(request):
start_date = get_start_date(request.GET.get("s", None))
finish_date = get_finish_date(request.GET.get("f", None))
if (
datetime.today() - start_date.replace(hour=0)
).days > 5 and "Accounts Audit" not in request.effective_principals:
raise ValidationError("Accounts Audit")
return {
"startDate": start_date.date().strftime("%d-%b-%Y"),
"finishDate": (finish_date - timedelta(days=1)).date().strftime("%d-%b-%Y"),
"amounts": get_sale(start_date, finish_date, request.dbsession),
}
def get_sale(start_date, finish_date, dbsession):
list_ = (
dbsession.query(SaleCategory.name, func.sum(Inventory.net))
@ -91,28 +69,6 @@ def get_sale(start_date, finish_date, dbsession):
return info + [{"name": "Total Settled", "amount": total}]
@view_config(
request_method="GET",
route_name="v1_sa_settlements",
renderer="json",
permission="Sales Analysis",
)
def get_settlements_view(request):
start_date = get_start_date(request.GET.get("s", None))
finish_date = get_finish_date(request.GET.get("f", None))
if (
datetime.today() - start_date.replace(hour=0)
).days > 5 and "Accounts Audit" not in request.effective_principals:
raise ValidationError("Accounts Audit")
return {
"startDate": start_date.date().strftime("%d-%b-%Y"),
"finishDate": (finish_date - timedelta(days=1)).date().strftime("%d-%b-%Y"),
"amounts": get_settlements(start_date, finish_date, request.dbsession),
}
def get_settlements(start_date, finish_date, dbsession):
list_ = (
dbsession.query(SettleOption.name, func.sum(Settlement.amount))
@ -133,9 +89,9 @@ def get_settlements(start_date, finish_date, dbsession):
@view_config(
request_method="GET",
route_name="v1_sa_tax",
route_name="v1_tax_report",
renderer="json",
permission=("Tax Analysis", "Sales Analysis"),
permission="Tax Report",
)
def get_tax_view(request):
start_date = get_start_date(request.GET.get("s", None))

View File

@ -1,65 +0,0 @@
from datetime import datetime, timedelta
from pyramid.view import view_config
from barker.models import Settlement, SettleOption, Voucher, VoucherType, Reprint
from barker.models.validation_exception import ValidationError
from barker.views.reports import get_start_date, get_finish_date
@view_config(
request_method="GET",
route_name="v1_voids_reprints_report",
renderer="json",
permission="Void or Reprinted Bill Report",
)
def voids_reprints_report_view(request):
start_date = get_start_date(request.GET.get("s", None))
finish_date = get_finish_date(request.GET.get("f", None))
if (
datetime.today() - start_date.replace(hour=0)
).days > 5 and "Accounts Audit" not in request.effective_principals:
raise ValidationError("Accounts Audit")
return {
"startDate": start_date.date().strftime("%d-%b-%Y"),
"finishDate": (finish_date - timedelta(days=1)).date().strftime("%d-%b-%Y"),
"amounts": voids_reprints_report(start_date, finish_date, request.dbsession),
}
def voids_reprints_report(start_date, finish_date, dbsession):
vouchers = (
dbsession.query(Voucher, Settlement.amount * -1)
.join(Voucher.settlements)
.filter(Voucher.date >= start_date, Voucher.date <= finish_date, Voucher.voucher_type == VoucherType.VOID.value, Settlement.settled == SettleOption.AMOUNT())
.order_by(Voucher.date)
.all()
)
print(str(vouchers))
report = []
for item, amount in vouchers:
report.append(
{
"date": item.date.strftime("%d-%b-%Y %H:%M:%S"),
"billId": item.full_bill_id,
"settlement": f"Void: {item.void_reason}",
"amount": round(amount, 2),
}
)
reprints = dbsession.query(Reprint).filter(
Reprint.date >= start_date,
Reprint.date <= finish_date
).all()
for item in reprints:
report.append({
'date': item.date.strftime('%d-%b-%Y %H:%M:%S'),
'billId': item.voucher.full_bill_id,
'settlement': f"Reprinted by {item.user.name}",
'Amount': round(next(
s.amount for s in item.voucher.settlements if s.settled == SettleOption.AMOUNT()
) * -1, 2)
})
return report