diff --git a/brewman/brewman/routers/batch_integrity.py b/brewman/brewman/routers/batch_integrity.py index 8121215e..96f2c0ea 100644 --- a/brewman/brewman/routers/batch_integrity.py +++ b/brewman/brewman/routers/batch_integrity.py @@ -52,10 +52,10 @@ def negative_batches(db: Session) -> list[schemas.BatchIntegrity]: select(Batch, ProductVersion.name, inv_sum) .join(Batch.sku) .join(StockKeepingUnit.product) - .join(ProductVersion, onclause=product_version_onclause) .join(Batch.inventories) .join(Inventory.voucher) .join(Voucher.journals) + .join(ProductVersion, onclause=product_version_onclause) .where( Journal.cost_centre_id == CostCentre.cost_centre_purchase(), ) @@ -121,9 +121,9 @@ def batch_dates(db: Session) -> list[schemas.BatchIntegrity]: select(Batch) .join(Batch.sku) .join(StockKeepingUnit.product) - .join(ProductVersion, onclause=product_version_onclause) .join(Batch.inventories) .join(Inventory.voucher) + .join(ProductVersion, onclause=product_version_onclause) .where(Voucher.date_ < Batch.name) .options( contains_eager(Batch.sku).contains_eager(StockKeepingUnit.product), diff --git a/brewman/brewman/routers/reports/cash_flow.py b/brewman/brewman/routers/reports/cash_flow.py index a4add3de..70fd1a85 100644 --- a/brewman/brewman/routers/reports/cash_flow.py +++ b/brewman/brewman/routers/reports/cash_flow.py @@ -114,15 +114,15 @@ def build_report( amount=round(amount * -1, 2), ) ) - + cash_id_sq = select(func.distinct(AccountType.id)).where(AccountType.name == "Cash").subquery() opening: Decimal = db.execute( select(func.sum(Journal.amount * Journal.debit)) .join(Journal.voucher) .join(Journal.account) .where( Voucher.date_ < start_date, - not_(Voucher.voucher_type.in_([VoucherType.ISSUE, VoucherType.CLOSING_STOCK])), - AccountBase.type_id == select(AccountType.id).where(AccountType.name == "Cash"), + Voucher.voucher_type.not_in([VoucherType.ISSUE, VoucherType.CLOSING_STOCK]), + AccountBase.type_id == cash_id_sq, ) ).scalar() or Decimal(0) @@ -132,8 +132,8 @@ def build_report( .join(Journal.account) .where( Voucher.date_ <= finish_date, - not_(Voucher.voucher_type.in_([VoucherType.ISSUE, VoucherType.CLOSING_STOCK])), - AccountBase.type_id == select(AccountType.id).where(AccountType.name == "Cash"), + Voucher.voucher_type.not_in([VoucherType.ISSUE, VoucherType.CLOSING_STOCK]), + AccountBase.type_id == cash_id_sq, ) ).scalar() or Decimal(0) diff --git a/brewman/brewman/routers/reports/non_contract_purchase.py b/brewman/brewman/routers/reports/non_contract_purchase.py index 40dd8daf..28756130 100644 --- a/brewman/brewman/routers/reports/non_contract_purchase.py +++ b/brewman/brewman/routers/reports/non_contract_purchase.py @@ -1,6 +1,6 @@ from fastapi import APIRouter, Security from sqlalchemy import and_, or_, select -from sqlalchemy.orm import Session, contains_eager, joinedload +from sqlalchemy.orm import Session, contains_eager from ...core.security import get_current_active_user as get_user from ...db.session import SessionFuture @@ -36,9 +36,7 @@ def report(db: Session) -> list[schemas.NonContractPurchase]: .join(RateContract.vendor) .join(RateContract.items) .options( - joinedload(RateContract.items, innerjoin=True), contains_eager(RateContract.items), - joinedload(RateContract.vendor, innerjoin=True), contains_eager(RateContract.vendor), ) ) diff --git a/brewman/brewman/routers/reports/stock_movement.py b/brewman/brewman/routers/reports/stock_movement.py index 21070c69..51cd80e6 100644 --- a/brewman/brewman/routers/reports/stock_movement.py +++ b/brewman/brewman/routers/reports/stock_movement.py @@ -2,8 +2,8 @@ from datetime import date, datetime from decimal import Decimal from fastapi import APIRouter, Request, Security -from sqlalchemy import and_, not_, or_ -from sqlalchemy.orm import Session, contains_eager +from sqlalchemy import and_, or_ +from sqlalchemy.orm import Session from sqlalchemy.sql.expression import func, select from ...core.security import get_current_active_user as get_user @@ -89,12 +89,6 @@ def build_stock_movement(start_date: date, finish_date: date, db: Session) -> li .join(StockKeepingUnit.product) .join(ProductVersion, onclause=product_version_onclause) .join(ProductVersion.product_group) - .options( - contains_eager(SkuVersion.sku) - .contains_eager(StockKeepingUnit.product) - .contains_eager(Product.versions) - .contains_eager(ProductVersion.product_group) - ) .where(Voucher.date_ < start_date, Journal.cost_centre_id == CostCentre.cost_centre_purchase()) .group_by(StockKeepingUnit, Product, ProductVersion, ProductGroup, SkuVersion) # type: ignore ).all() @@ -120,16 +114,10 @@ def build_stock_movement(start_date: date, finish_date: date, db: Session) -> li .join(StockKeepingUnit.product) .join(ProductVersion, onclause=product_version_onclause) .join(ProductVersion.product_group) - .options( - contains_eager(SkuVersion.sku) - .contains_eager(StockKeepingUnit.product) - .contains_eager(Product.versions) - .contains_eager(ProductVersion.product_group) - ) .where( Voucher.date_ >= start_date, Voucher.date_ <= finish_date, - not_(Voucher.voucher_type.in_([VoucherType.ISSUE, VoucherType.CLOSING_STOCK])), + Voucher.voucher_type.not_in([VoucherType.ISSUE, VoucherType.CLOSING_STOCK]), Journal.cost_centre_id == CostCentre.cost_centre_purchase(), ) .group_by(StockKeepingUnit, Product, ProductVersion, ProductGroup, SkuVersion) # type: ignore @@ -159,12 +147,6 @@ def build_stock_movement(start_date: date, finish_date: date, db: Session) -> li .join(StockKeepingUnit.product) .join(ProductVersion, onclause=product_version_onclause) .join(ProductVersion.product_group) - .options( - contains_eager(SkuVersion.sku) - .contains_eager(StockKeepingUnit.product) - .contains_eager(Product.versions) - .contains_eager(ProductVersion.product_group) - ) .where( Voucher.date_ >= start_date, Voucher.date_ <= finish_date, diff --git a/brewman/brewman/routers/reports/trial_balance.py b/brewman/brewman/routers/reports/trial_balance.py index 74b269d9..91e8d4a3 100644 --- a/brewman/brewman/routers/reports/trial_balance.py +++ b/brewman/brewman/routers/reports/trial_balance.py @@ -1,8 +1,7 @@ from datetime import date, datetime from fastapi import APIRouter, Request, Security -from sqlalchemy import not_ -from sqlalchemy.orm import Session, contains_eager, joinedload +from sqlalchemy.orm import Session, contains_eager from sqlalchemy.sql.expression import func, select from ...core.security import get_current_active_user as get_user @@ -51,12 +50,11 @@ def build_report(date_: date, db: Session) -> list[schemas.TrialBalanceItem]: .join(AccountBase.type_) .where( Voucher.date_ <= date_, - not_(Voucher.voucher_type.in_([VoucherType.ISSUE, VoucherType.CLOSING_STOCK])), + Voucher.voucher_type.not_in([VoucherType.ISSUE, VoucherType.CLOSING_STOCK]), ) .group_by(AccountBase, AccountType) # type: ignore .order_by(AccountBase.type_id, func.abs(amount_sum).desc()) .options( - joinedload(AccountBase.type_, innerjoin=True), contains_eager(AccountBase.type_), ) ).all() diff --git a/overlord/src/app/app.component.scss b/overlord/src/app/app.component.scss index e340780b..dbb8a7f3 100644 --- a/overlord/src/app/app.component.scss +++ b/overlord/src/app/app.component.scss @@ -1,3 +1,3 @@ -.basic-container { - padding: 30px; -} +// .basic-container { +// padding: 30px; +// } diff --git a/overlord/src/app/app.config.ts b/overlord/src/app/app.config.ts index 999b272b..1a2dd074 100644 --- a/overlord/src/app/app.config.ts +++ b/overlord/src/app/app.config.ts @@ -1,5 +1,5 @@ import { LayoutModule } from '@angular/cdk/layout'; -import { provideHttpClient, withInterceptors } from '@angular/common/http'; +import { provideHttpClient, withInterceptors, withFetch } from '@angular/common/http'; import { ApplicationConfig, importProvidersFrom, LOCALE_ID, provideZonelessChangeDetection } from '@angular/core'; import { ReactiveFormsModule } from '@angular/forms'; import { MomentDateAdapter } from '@angular/material-moment-adapter'; @@ -51,7 +51,7 @@ export const appConfig: ApplicationConfig = { ), { provide: LOCALE_ID, useValue: 'en-IN' }, AuthService, - provideHttpClient(withInterceptors([refreshInterceptor, jwtInterceptor, authInterceptor])), + provideHttpClient(withFetch(), withInterceptors([refreshInterceptor, jwtInterceptor, authInterceptor])), provideAnimations(), provideRouter( routes, diff --git a/overlord/src/app/ledger/ledger.component.ts b/overlord/src/app/ledger/ledger.component.ts index b045bf1a..8b90abb7 100644 --- a/overlord/src/app/ledger/ledger.component.ts +++ b/overlord/src/app/ledger/ledger.component.ts @@ -1,6 +1,15 @@ import { SelectionModel } from '@angular/cdk/collections'; import { AsyncPipe, CurrencyPipe } from '@angular/common'; -import { AfterViewInit, Component, ElementRef, HostListener, inject, OnInit, ViewChild } from '@angular/core'; +import { + AfterViewInit, + Component, + ElementRef, + HostListener, + inject, + OnInit, + ViewChild, + ChangeDetectorRef, +} from '@angular/core'; import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms'; import { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete'; import { MatButtonModule } from '@angular/material/button'; @@ -66,6 +75,7 @@ export class LedgerComponent implements OnInit, AfterViewInit { private toCsv = inject(ToCsvService); private accountSer = inject(AccountService); private tagSer = inject(TagService); + private cd = inject(ChangeDetectorRef); @ViewChild('accountElement', { static: true }) accountElement!: ElementRef; @ViewChild('startDateElement', { static: true }) startDate!: ElementRef; @@ -139,6 +149,7 @@ export class LedgerComponent implements OnInit, AfterViewInit { this.dataSource.sort = this.sort; } this.selection.clear(); + this.cd.detectChanges(); }); } diff --git a/overlord/src/app/rate-contract/rate-contract-list/rate-contract-list.component.ts b/overlord/src/app/rate-contract/rate-contract-list/rate-contract-list.component.ts index 2fcd5f95..91b06560 100644 --- a/overlord/src/app/rate-contract/rate-contract-list/rate-contract-list.component.ts +++ b/overlord/src/app/rate-contract/rate-contract-list/rate-contract-list.component.ts @@ -1,5 +1,6 @@ import { CurrencyPipe } from '@angular/common'; import { Component, inject, OnInit, ViewChild } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator'; import { MatSort, MatSortModule } from '@angular/material/sort'; @@ -13,7 +14,15 @@ import { RateContractListDatasource } from './rate-contract-list-datasource'; selector: 'app-rate-contract-list', templateUrl: './rate-contract-list.component.html', styleUrls: ['./rate-contract-list.component.css'], - imports: [RouterModule, MatIconModule, MatTableModule, MatSortModule, MatPaginatorModule, CurrencyPipe], + imports: [ + RouterModule, + MatIconModule, + MatTableModule, + MatSortModule, + MatPaginatorModule, + CurrencyPipe, + MatButtonModule, + ], }) export class RateContractListComponent implements OnInit { private route = inject(ActivatedRoute);