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