Void Bill Working
This commit is contained in:
@ -54,7 +54,6 @@ def receive_payment(request):
|
||||
Overview.voucher_id == item.id
|
||||
).delete()
|
||||
transaction.commit()
|
||||
item = request.dbsession.query(Voucher).filter(Voucher.id == item.id).first()
|
||||
return voucher_info(item)
|
||||
return True
|
||||
|
||||
|
||||
|
||||
@ -3,46 +3,55 @@ import uuid
|
||||
import transaction
|
||||
from pyramid.view import view_config
|
||||
|
||||
from barker.models import Voucher, SettleOption, Settlement
|
||||
from barker.views.voucher import get_settlements
|
||||
from barker.views.voucher.show import voucher_info
|
||||
from barker.models import Voucher, SettleOption, Settlement, Overview
|
||||
|
||||
|
||||
@view_config(
|
||||
request_method="POST",
|
||||
route_name="voucher_void",
|
||||
route_name="v1_vouchers_id",
|
||||
renderer="json",
|
||||
request_param="v",
|
||||
permission="Void Bill",
|
||||
trans=True,
|
||||
)
|
||||
def void_voucher(request):
|
||||
update_table = request.GET["u"]
|
||||
json = request.json_body
|
||||
id_ = uuid.UUID(request.matchdict["id"])
|
||||
reason = request.GET["v"]
|
||||
update_table = request.GET["u"]
|
||||
|
||||
item = request.dbsession.query(Voucher).filter(Voucher.id == id_).first()
|
||||
|
||||
item.void = True
|
||||
item.void_reason = json["Reason"]
|
||||
item.void_reason = reason
|
||||
|
||||
amount = round(-1 * sum(i.amount for k in item.kots for i in k.inventories), 5) * -1
|
||||
s = Settlement(item.id, SettleOption.VOID(), amount)
|
||||
item.settlements.append(s)
|
||||
request.dbsession.add(s)
|
||||
allowed = [
|
||||
SettleOption.AMOUNT(),
|
||||
SettleOption.ROUND_OFF(),
|
||||
SettleOption.UNSETTLED(),
|
||||
SettleOption.VOID(),
|
||||
]
|
||||
for i in (s for s in item.settlements if s.settled not in allowed):
|
||||
settlements = []
|
||||
total_amount = item.amount
|
||||
settlements.append({"id": SettleOption.AMOUNT(), "amount": -total_amount})
|
||||
round_off = round(total_amount) - total_amount
|
||||
if round_off != 0:
|
||||
settlements.append({"id": SettleOption.ROUND_OFF(), "amount": -round_off})
|
||||
settlements.append({"id": SettleOption.VOID(), "amount": round(total_amount)})
|
||||
|
||||
for i in settlements:
|
||||
amount = i["amount"]
|
||||
settlement_type_id = i["id"]
|
||||
old = [s for s in item.settlements if s.settled == settlement_type_id]
|
||||
if len(old) == 1:
|
||||
old[0].amount = amount
|
||||
else:
|
||||
s = Settlement(item.id, settlement_type_id, amount)
|
||||
item.settlements.append(s)
|
||||
request.dbsession.add(s)
|
||||
|
||||
for i in (i for i in item.settlements if i.settled not in [x["id"] for x in settlements]):
|
||||
item.settlements.remove(i)
|
||||
request.dbsession.delete(i)
|
||||
get_settlements(item, request.dbsession)
|
||||
|
||||
if update_table:
|
||||
request.dbsession.delete(item.status)
|
||||
request.dbsession.query(Overview).filter(
|
||||
Overview.voucher_id == item.id
|
||||
).delete()
|
||||
transaction.commit()
|
||||
item = request.dbsession.query(Voucher).filter(Voucher.id == item.id).first()
|
||||
return voucher_info(item)
|
||||
return True
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user