All Reports done. Except where get_url is used
This commit is contained in:
parent
2b2430c5b2
commit
d62119882d
brewman
overlord/src/app/stock-movement
@ -31,6 +31,9 @@ from .routers.reports import (
|
||||
purchases,
|
||||
raw_material_cost,
|
||||
reconcile,
|
||||
stock_movement,
|
||||
trial_balance,
|
||||
unposted,
|
||||
)
|
||||
from .db.base_class import Base
|
||||
from .config import Settings as settings
|
||||
@ -86,6 +89,9 @@ app.include_router(purchase_entries.router, prefix="/api/purchase-entries", tags
|
||||
app.include_router(purchases.router, prefix="/api/purchases", tags=["reports"])
|
||||
app.include_router(raw_material_cost.router, prefix="/api/raw-material-cost", tags=["reports"])
|
||||
app.include_router(reconcile.router, prefix="/api/reconcile", tags=["reports"])
|
||||
app.include_router(stock_movement.router, prefix="/api/stock-movement", tags=["reports"])
|
||||
app.include_router(trial_balance.router, prefix="/api/trial-balance", tags=["reports"])
|
||||
app.include_router(unposted.router, prefix="/api/unposted", tags=["reports"])
|
||||
|
||||
|
||||
def init():
|
||||
|
@ -1,7 +1,12 @@
|
||||
import datetime
|
||||
|
||||
from fastapi import APIRouter, Depends, Security, Request
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy.sql.expression import func
|
||||
|
||||
from ...schemas.auth import UserToken
|
||||
from ...core.security import get_current_active_user as get_user
|
||||
from ...db.session import SessionLocal
|
||||
from brewman.models.master import Product, CostCentre
|
||||
from brewman.models.voucher import Voucher, Journal, VoucherType, Inventory
|
||||
from brewman.routers.services.session import (
|
||||
@ -10,36 +15,50 @@ from brewman.routers.services.session import (
|
||||
session_period_finish,
|
||||
)
|
||||
|
||||
from fastapi import APIRouter
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("/api/stock-movement") # "Stock Movement"
|
||||
def report_blank(request):
|
||||
# Dependency
|
||||
def get_db() -> Session:
|
||||
try:
|
||||
db = SessionLocal()
|
||||
yield db
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
@router.get("")
|
||||
def report_blank(
|
||||
request: Request,
|
||||
user: UserToken = Security(get_user, scopes=["stock-movement"]),
|
||||
):
|
||||
return {
|
||||
"startDate": session_period_start(request),
|
||||
"finishDate": session_period_finish(request),
|
||||
"startDate": session_period_start(request.session),
|
||||
"finishDate": session_period_finish(request.session),
|
||||
"body": [],
|
||||
}
|
||||
|
||||
|
||||
@router.get("/api/stock-movement", request_param=["s", "f"], permission="Stock Movement")
|
||||
def report_data(request):
|
||||
start_date = request.GET["s"]
|
||||
finish_date = request.GET["f"]
|
||||
body = build_stock_movement(start_date, finish_date, request.dbsession)
|
||||
session_period_set( start_date, finish_date, request)
|
||||
return {"startDate": start_date, "finishDate": finish_date, "body": body}
|
||||
@router.get("/{start}/{finish}")
|
||||
def report_data(
|
||||
start: str,
|
||||
finish: str,
|
||||
request: Request,
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["stock-movement"]),
|
||||
):
|
||||
body = build_stock_movement(start, finish, db)
|
||||
session_period_set( start, finish, request.session)
|
||||
return {"startDate": start, "finishDate": finish, "body": body}
|
||||
|
||||
|
||||
def build_stock_movement(start_date, finish_date, dbsession):
|
||||
def build_stock_movement(start_date, finish_date, db):
|
||||
start_date = datetime.datetime.strptime(start_date, "%d-%b-%Y")
|
||||
finish_date = datetime.datetime.strptime(finish_date, "%d-%b-%Y")
|
||||
dict_ = {}
|
||||
quantity_sum = func.sum(Journal.debit * Inventory.quantity).label("quantity")
|
||||
openings = (
|
||||
dbsession.query(Product, quantity_sum)
|
||||
db.query(Product, quantity_sum)
|
||||
.join(Product.inventories)
|
||||
.join(Inventory.voucher)
|
||||
.join(Voucher.journals)
|
||||
@ -56,7 +75,7 @@ def build_stock_movement(start_date, finish_date, dbsession):
|
||||
"opening": quantity,
|
||||
}
|
||||
purchases = (
|
||||
dbsession.query(Product, quantity_sum)
|
||||
db.query(Product, quantity_sum)
|
||||
.join(Product.inventories)
|
||||
.join(Inventory.voucher)
|
||||
.join(Voucher.journals)
|
||||
@ -78,7 +97,7 @@ def build_stock_movement(start_date, finish_date, dbsession):
|
||||
"purchase": quantity,
|
||||
}
|
||||
issues = (
|
||||
dbsession.query(Product, quantity_sum)
|
||||
db.query(Product, quantity_sum)
|
||||
.join(Product.inventories)
|
||||
.join(Inventory.voucher)
|
||||
.join(Voucher.journals)
|
||||
|
@ -1,7 +1,12 @@
|
||||
import datetime
|
||||
|
||||
from fastapi import APIRouter, Depends, Security, Request
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy.sql.expression import func
|
||||
|
||||
from ...schemas.auth import UserToken
|
||||
from ...core.security import get_current_active_user as get_user
|
||||
from ...db.session import SessionLocal
|
||||
from brewman.models.master import AccountBase
|
||||
from brewman.models.voucher import Voucher, Journal, VoucherType
|
||||
from brewman.routers.services.session import (
|
||||
@ -10,28 +15,42 @@ from brewman.routers.services.session import (
|
||||
session_period_finish,
|
||||
)
|
||||
|
||||
from fastapi import APIRouter
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("/api/trial-balance") # "Trial Balance"
|
||||
def report_blank(request):
|
||||
return {"date": session_period_finish(request), "body": []}
|
||||
# Dependency
|
||||
def get_db() -> Session:
|
||||
try:
|
||||
db = SessionLocal()
|
||||
yield db
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
@router.get("/api/trial-balance/{date}") # "Trial Balance"
|
||||
def report_data(request):
|
||||
date = request.matchdict.get("date", None)
|
||||
session_period_set(session_period_start(request), date, request)
|
||||
return {"date": date, "body": build_report(date, request.dbsession)}
|
||||
@router.get("")
|
||||
def report_blank(
|
||||
request: Request,
|
||||
user: UserToken = Security(get_user, scopes=["trial-balance"]),
|
||||
):
|
||||
return {"date": session_period_finish(request.session), "body": []}
|
||||
|
||||
|
||||
def build_report(date, dbsession):
|
||||
@router.get("/{date}")
|
||||
def report_data(
|
||||
date: str,
|
||||
request: Request,
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["trial-balance"]),
|
||||
):
|
||||
session_period_set(session_period_start(request.session), date, request.session)
|
||||
return {"date": date, "body": build_report(date, db)}
|
||||
|
||||
|
||||
def build_report(date, db):
|
||||
date = datetime.datetime.strptime(date, "%d-%b-%Y")
|
||||
amount_sum = func.sum(Journal.amount * Journal.debit).label("amount")
|
||||
query = (
|
||||
dbsession.query(AccountBase, amount_sum)
|
||||
db.query(AccountBase, amount_sum)
|
||||
.join(Journal.voucher)
|
||||
.join(Journal.account)
|
||||
.filter(Voucher.date <= date)
|
||||
|
@ -1,23 +1,37 @@
|
||||
from sqlalchemy.orm import joinedload_all
|
||||
from fastapi import APIRouter, Depends, Security, Request
|
||||
from sqlalchemy.orm import joinedload_all, 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 Voucher, Journal, VoucherType
|
||||
from brewman.routers.services.voucher import get_edit_url
|
||||
|
||||
from fastapi import APIRouter
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("/api/unposted") # "Post Vouchers"
|
||||
def report_data(request):
|
||||
return build_report(request)
|
||||
# Dependency
|
||||
def get_db() -> Session:
|
||||
try:
|
||||
db = SessionLocal()
|
||||
yield db
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
def build_report(request):
|
||||
@router.get("")
|
||||
def report_data(
|
||||
request: Request,
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["post-vouchers"]),
|
||||
):
|
||||
return build_report(db)
|
||||
|
||||
|
||||
def build_report(db: Session):
|
||||
body = []
|
||||
|
||||
query = (
|
||||
request.dbsession.query(Voucher)
|
||||
db.query(Voucher)
|
||||
.options(joinedload_all(Voucher.journals, Journal.account, innerjoin=True))
|
||||
.filter(Voucher.posted == False)
|
||||
.filter(Voucher.type != VoucherType.by_name("Issue").id)
|
||||
@ -44,7 +58,7 @@ def build_report(request):
|
||||
body.append(
|
||||
{
|
||||
"date": voucher.date.strftime("%d-%b-%Y"),
|
||||
"Url": get_edit_url(voucher, request),
|
||||
"Url": "", # get_edit_url(voucher, request),
|
||||
"voucherType": VoucherType.by_id(voucher.type).name,
|
||||
"narration": voucher.narration,
|
||||
"isPosted": voucher.posted,
|
||||
|
@ -21,14 +21,9 @@ export class StockMovementService {
|
||||
}
|
||||
|
||||
list(startDate: string, finishDate): Observable<StockMovement> {
|
||||
const options = {params: new HttpParams()};
|
||||
if (startDate !== null) {
|
||||
options.params = options.params.set('s', startDate);
|
||||
}
|
||||
if (finishDate !== null) {
|
||||
options.params = options.params.set('f', finishDate);
|
||||
}
|
||||
return <Observable<StockMovement>>this.http.get<StockMovement>(url, options)
|
||||
startDate = startDate ? `/${startDate}` : '';
|
||||
finishDate = finishDate ? `/${finishDate}` : '';
|
||||
return <Observable<StockMovement>>this.http.get<StockMovement>(`${url}${startDate}${finishDate}`)
|
||||
.pipe(
|
||||
catchError(this.log.handleError(serviceName, 'list'))
|
||||
);
|
||||
|
Loading…
x
Reference in New Issue
Block a user