Net Transactions!!
This commit is contained in:
parent
5f783e1f45
commit
6ec4068ed0
brewman
@ -1,4 +1,4 @@
|
|||||||
import datetime
|
from datetime import datetime, date
|
||||||
|
|
||||||
from fastapi import APIRouter, Depends, Security, Request
|
from fastapi import APIRouter, Depends, Security, Request
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
@ -9,6 +9,7 @@ from ...core.security import get_current_active_user as get_user
|
|||||||
from ...db.session import SessionLocal
|
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
|
||||||
|
import brewman.schemas.reports as schemas
|
||||||
from ...core.session import (
|
from ...core.session import (
|
||||||
set_period,
|
set_period,
|
||||||
get_start_date,
|
get_start_date,
|
||||||
@ -27,7 +28,7 @@ def get_db() -> Session:
|
|||||||
db.close()
|
db.close()
|
||||||
|
|
||||||
|
|
||||||
@router.get("")
|
@router.get("", response_model=schemas.NetTransactions)
|
||||||
def show_blank(
|
def show_blank(
|
||||||
request: Request,
|
request: Request,
|
||||||
user: UserToken = Security(get_user, scopes=["net-transactions"]),
|
user: UserToken = Security(get_user, scopes=["net-transactions"]),
|
||||||
@ -39,7 +40,7 @@ def show_blank(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{start}/{finish}")
|
@router.get("/{start}/{finish}", response_model=schemas.NetTransactions)
|
||||||
def show_data(
|
def show_data(
|
||||||
start: str,
|
start: str,
|
||||||
finish: str,
|
finish: str,
|
||||||
@ -51,16 +52,11 @@ def show_data(
|
|||||||
return {
|
return {
|
||||||
"startDate": start,
|
"startDate": start,
|
||||||
"finishDate": finish,
|
"finishDate": finish,
|
||||||
"body": build_report(start, finish, db),
|
"body": build_report(datetime.strptime(start, "%d-%b-%Y"), datetime.strptime(finish, "%d-%b-%Y"), db),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def build_report(start_date, finish_date, db):
|
def build_report(start_date: date, finish_date: date, db: Session):
|
||||||
if not isinstance(start_date, datetime.datetime):
|
|
||||||
start_date = datetime.datetime.strptime(start_date, "%d-%b-%Y")
|
|
||||||
if not isinstance(finish_date, datetime.datetime):
|
|
||||||
finish_date = datetime.datetime.strptime(finish_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 = (
|
||||||
db.query(AccountBase, amount_sum)
|
db.query(AccountBase, amount_sum)
|
||||||
|
@ -229,3 +229,44 @@ class Daybook(BaseModel):
|
|||||||
value,
|
value,
|
||||||
"%d-%b-%Y"
|
"%d-%b-%Y"
|
||||||
).date()
|
).date()
|
||||||
|
|
||||||
|
|
||||||
|
class NetTransactionsItem(BaseModel):
|
||||||
|
type_: str
|
||||||
|
name: str
|
||||||
|
debit: Optional[Decimal] = Field(multiple_of=0.01)
|
||||||
|
credit: Optional[Decimal] = Field(multiple_of=0.01)
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
anystr_strip_whitespace = True
|
||||||
|
alias_generator = to_camel
|
||||||
|
json_encoders = {
|
||||||
|
date: lambda v: v.strftime("%d-%b-%Y")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class NetTransactions(BaseModel):
|
||||||
|
start_date: date
|
||||||
|
finish_date: date
|
||||||
|
body: List[NetTransactionsItem]
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
anystr_strip_whitespace = True
|
||||||
|
alias_generator = to_camel
|
||||||
|
json_encoders = {
|
||||||
|
date: lambda v: v.strftime("%d-%b-%Y")
|
||||||
|
}
|
||||||
|
|
||||||
|
@validator("start_date", pre=True)
|
||||||
|
def parse_start_date(cls, value):
|
||||||
|
return datetime.strptime(
|
||||||
|
value,
|
||||||
|
"%d-%b-%Y"
|
||||||
|
).date()
|
||||||
|
|
||||||
|
@validator("finish_date", pre=True)
|
||||||
|
def parse_finish_date(cls, value):
|
||||||
|
return datetime.strptime(
|
||||||
|
value,
|
||||||
|
"%d-%b-%Y"
|
||||||
|
).date()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user