Done:
Issue Grid Batch
This commit is contained in:
parent
8dcda9cb56
commit
de4d248de7
@ -35,8 +35,13 @@ from .routers.reports import (
|
||||
trial_balance,
|
||||
unposted,
|
||||
)
|
||||
|
||||
from .routers.voucher import (
|
||||
issue_grid,
|
||||
batch,
|
||||
)
|
||||
from .db.base_class import Base
|
||||
from .config import Settings as settings
|
||||
from .config import Settings
|
||||
from .db.session import engine
|
||||
|
||||
Base.metadata.create_all(bind=engine)
|
||||
@ -93,6 +98,9 @@ app.include_router(stock_movement.router, prefix="/api/stock-movement", tags=["r
|
||||
app.include_router(trial_balance.router, prefix="/api/trial-balance", tags=["reports"])
|
||||
app.include_router(unposted.router, prefix="/api/unposted", tags=["reports"])
|
||||
|
||||
app.include_router(issue_grid.router, prefix="/api/issue-grid", tags=["vouchers"])
|
||||
app.include_router(batch.router, prefix="/api/batch", tags=["vouchers"])
|
||||
|
||||
|
||||
def init():
|
||||
uvicorn.run(app, host=settings.host, port=settings.port)
|
||||
uvicorn.run(app, host=Settings.host, port=Settings.port)
|
||||
|
@ -39,10 +39,10 @@ def report_blank(
|
||||
|
||||
@router.get("/{date}")
|
||||
def report_data(
|
||||
date: str,
|
||||
request: Request,
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["balance-sheet"]),
|
||||
date: str,
|
||||
request: Request,
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["balance-sheet"]),
|
||||
):
|
||||
body, footer = build_balance_sheet(date, db)
|
||||
set_period(get_start_date(request.session), date, request.session)
|
||||
|
@ -1,46 +0,0 @@
|
||||
import datetime
|
||||
|
||||
from brewman.models.voucher import Batch
|
||||
|
||||
|
||||
@router.get("/api/batch") # "Authenticated"
|
||||
def batch_term(request):
|
||||
filter_ = request.GET.get("t", None)
|
||||
filter_ = filter_ if filter_ is not None and filter_.strip() is not "" else None
|
||||
count = request.GET.get("c", None)
|
||||
count = None if count is None or count == "" else int(count)
|
||||
date = request.GET.get("d", None)
|
||||
date = (
|
||||
None
|
||||
if date is None or date == ""
|
||||
else datetime.datetime.strptime(date, "%d-%b-%Y")
|
||||
)
|
||||
list_ = []
|
||||
for index, item in enumerate(
|
||||
Batch.list(filter_, include_nil=False, date=date, dbsession=request.dbsession)
|
||||
):
|
||||
text = "{0} ({1}) {2:.2f}@{3:.2f} from {4}".format(
|
||||
item.product.name,
|
||||
item.product.units,
|
||||
item.quantity_remaining,
|
||||
item.rate,
|
||||
item.name.strftime("%d-%b-%Y"),
|
||||
)
|
||||
list_.append(
|
||||
{
|
||||
"id": item.id,
|
||||
"name": text,
|
||||
"quantityRemaining": item.quantity_remaining,
|
||||
"rate": item.rate,
|
||||
"tax": item.tax,
|
||||
"discount": item.discount,
|
||||
"product": {
|
||||
"id": item.product.id,
|
||||
"name": item.product.name,
|
||||
"units": item.product.units,
|
||||
},
|
||||
}
|
||||
)
|
||||
if count is not None and index == count - 1:
|
||||
break
|
||||
return list_
|
55
brewman/routers/voucher/batch.py
Normal file
55
brewman/routers/voucher/batch.py
Normal file
@ -0,0 +1,55 @@
|
||||
import datetime
|
||||
|
||||
from fastapi import APIRouter, Depends
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from ...schemas.auth import UserToken
|
||||
from ...core.security import get_current_active_user as get_user
|
||||
from ...db.session import SessionLocal
|
||||
from brewman.models.voucher import Batch
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
# Dependency
|
||||
def get_db() -> Session:
|
||||
try:
|
||||
db = SessionLocal()
|
||||
yield db
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
@router.get("")
|
||||
def batch_term(
|
||||
q: str,
|
||||
c: int = None,
|
||||
d: str = None,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: UserToken = Depends(get_user),
|
||||
):
|
||||
filter_ = q if q is not None and q.strip() is not "" else None
|
||||
date = None if not d else datetime.datetime.strptime(d, "%d-%b-%Y")
|
||||
list_ = []
|
||||
for index, item in enumerate(
|
||||
Batch.list(filter_, include_nil=False, date=date, dbsession=db)
|
||||
):
|
||||
text = f"{item.product.name} ({item.product.units}) {item.quantity_remaining:.2f}@{item.rate:.2f} from {item.name.strftime('%d-%b-%Y')}"
|
||||
list_.append(
|
||||
{
|
||||
"id": item.id,
|
||||
"name": text,
|
||||
"quantityRemaining": item.quantity_remaining,
|
||||
"rate": item.rate,
|
||||
"tax": item.tax,
|
||||
"discount": item.discount,
|
||||
"product": {
|
||||
"id": item.product.id,
|
||||
"name": item.product.name,
|
||||
"units": item.product.units,
|
||||
},
|
||||
}
|
||||
)
|
||||
if c is not None and index == c - 1:
|
||||
break
|
||||
return list_
|
@ -1,23 +1,45 @@
|
||||
import datetime
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
from fastapi import APIRouter, Depends, Security, Request
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy.orm.util import aliased
|
||||
|
||||
from ...schemas.auth import UserToken
|
||||
from ...core.security import get_current_active_user as get_user
|
||||
from ...db.session import SessionLocal
|
||||
from brewman.models.voucher import Voucher, Journal, VoucherType
|
||||
|
||||
|
||||
@router.get("/api/issue-grid/{date}") # "Issue"
|
||||
def grid_date(request):
|
||||
date = datetime.datetime.strptime(request.matchdict["date"], "%d-%b-%Y")
|
||||
return get_grid(date, request.dbsession)
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
def get_grid(date, dbsession):
|
||||
# Dependency
|
||||
def get_db() -> Session:
|
||||
try:
|
||||
db = SessionLocal()
|
||||
yield db
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
@router.get("/{date}")
|
||||
def grid_date(
|
||||
date: str,
|
||||
request: Request,
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["issue"]),
|
||||
):
|
||||
date = datetime.strptime(date, "%d-%b-%Y")
|
||||
return get_grid(date, db)
|
||||
|
||||
|
||||
def get_grid(date, db):
|
||||
list_ = []
|
||||
|
||||
source_journal = aliased(Journal)
|
||||
destination_journal = aliased(Journal)
|
||||
query = (
|
||||
dbsession.query(Voucher, source_journal.amount)
|
||||
db.query(Voucher, source_journal.amount)
|
||||
.join(source_journal, Voucher.journals)
|
||||
.join(destination_journal, Voucher.journals)
|
||||
.filter(Voucher.date == date)
|
0
brewman/routers/services/voucher/salary_deduction.py → brewman/routers/voucher/salary_deduction.py
0
brewman/routers/services/voucher/salary_deduction.py → brewman/routers/voucher/salary_deduction.py
@ -15,7 +15,7 @@ export class BatchService {
|
||||
}
|
||||
|
||||
autocomplete(date: string, term: string): Observable<Batch[]> {
|
||||
const options = {params: new HttpParams().set('t', term).set('d', date)};
|
||||
const options = {params: new HttpParams().set('q', term).set('d', date)};
|
||||
return <Observable<Batch[]>>this.http.get<Batch[]>(url, options)
|
||||
.pipe(
|
||||
catchError(this.log.handleError(serviceName, 'autocomplete'))
|
||||
|
Loading…
x
Reference in New Issue
Block a user