This commit is contained in:
Wolfgang Hottgenroth 2021-09-08 18:13:59 +02:00
parent c6e865eca1
commit 0ae59c644e
Signed by: wn
GPG Key ID: 6C1E5E531E0D5D7F
6 changed files with 113 additions and 38 deletions

View File

@ -251,7 +251,7 @@ UPDATE tenant_t
def get_tenant_by_account(user, token_info, accountId=None):
return dbGetOne(user, token_info, {
return dbGetMany(user, token_info, {
"statement": """
SELECT
id
@ -474,7 +474,7 @@ UPDATE flat_t
def get_flat_by_premise(user, token_info, premiseId=None):
return dbGetOne(user, token_info, {
return dbGetMany(user, token_info, {
"statement": """
SELECT
id
@ -643,7 +643,7 @@ SELECT
def get_overhead_advance_flat_mapping_by_overhead_advance(user, token_info, overhead_advanceId=None):
return dbGetOne(user, token_info, {
return dbGetMany(user, token_info, {
"statement": """
SELECT
id
@ -657,7 +657,7 @@ SELECT
)
def get_overhead_advance_flat_mapping_by_flat(user, token_info, flatId=None):
return dbGetOne(user, token_info, {
return dbGetMany(user, token_info, {
"statement": """
SELECT
id
@ -753,7 +753,7 @@ UPDATE parking_t
def get_parking_by_premise(user, token_info, premiseId=None):
return dbGetOne(user, token_info, {
return dbGetMany(user, token_info, {
"statement": """
SELECT
id
@ -849,7 +849,7 @@ UPDATE commercial_premise_t
def get_commercial_premise_by_premise(user, token_info, premiseId=None):
return dbGetOne(user, token_info, {
return dbGetMany(user, token_info, {
"statement": """
SELECT
id
@ -975,7 +975,7 @@ UPDATE tenancy_t
def get_tenancy_by_tenant(user, token_info, tenantId=None):
return dbGetOne(user, token_info, {
return dbGetMany(user, token_info, {
"statement": """
SELECT
id
@ -994,7 +994,7 @@ SELECT
)
def get_tenancy_by_flat(user, token_info, flatId=None):
return dbGetOne(user, token_info, {
return dbGetMany(user, token_info, {
"statement": """
SELECT
id
@ -1013,7 +1013,7 @@ SELECT
)
def get_tenancy_by_parking(user, token_info, parkingId=None):
return dbGetOne(user, token_info, {
return dbGetMany(user, token_info, {
"statement": """
SELECT
id
@ -1032,7 +1032,7 @@ SELECT
)
def get_tenancy_by_commercial_premise(user, token_info, commercial_premiseId=None):
return dbGetOne(user, token_info, {
return dbGetMany(user, token_info, {
"statement": """
SELECT
id
@ -1207,7 +1207,7 @@ SELECT
def get_tenancy_fee_mapping_by_tenancy(user, token_info, tenancyId=None):
return dbGetOne(user, token_info, {
return dbGetMany(user, token_info, {
"statement": """
SELECT
id
@ -1221,7 +1221,7 @@ SELECT
)
def get_tenancy_fee_mapping_by_fee(user, token_info, feeId=None):
return dbGetOne(user, token_info, {
return dbGetMany(user, token_info, {
"statement": """
SELECT
id
@ -1303,7 +1303,7 @@ SELECT
def get_account_entry_by_account(user, token_info, accountId=None):
return dbGetOne(user, token_info, {
return dbGetMany(user, token_info, {
"statement": """
SELECT
id

View File

@ -120,7 +120,7 @@ UPDATE ${table.name}_t
#if (('foreignkey' in $column) and $column.foreignkey)
def get_${table.name}_by_${column.name}(user, token_info, ${column.name}Id=None):
return dbGetOne(user, token_info, {
return dbGetMany(user, token_info, {
"statement": """
SELECT
id

View File

@ -41,7 +41,6 @@ import { MatNativeDateModule } from '@angular/material/core';
import { FeeListComponent } from './fee-list/fee-list.component';
import { FeeDetailsComponent } from './fee-details/fee-details.component';
@NgModule({
declarations: [
AppComponent,
@ -84,7 +83,7 @@ import { FeeDetailsComponent } from './fee-details/fee-details.component';
MatFormFieldModule,
MatSelectModule,
MatDatepickerModule,
MatNativeDateModule
MatNativeDateModule,
],
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: ErrorHandlerInterceptor, multi: true },

View File

@ -0,0 +1,11 @@
table {
width: 75%;
}
.spacer {
flex: 1 1 auto;
}
#addoverheadfield {
margin-right: 15px;
}

View File

@ -3,12 +3,14 @@
<mat-card-header>
<mat-card-title>
{{tenant?.firstname}} {{tenant?.lastname}}
<button mat-button *ngIf="!collapseTenantDetails" (click)="collapseTenantDetails=true">Collapse</button>
<button mat-button *ngIf="collapseTenantDetails" (click)="collapseTenantDetails=false">Expand</button>
</mat-card-title>
<mat-card-subtitle>
ID: {{tenant?.id}}
</mat-card-subtitle>
</mat-card-header>
<mat-card-content>
<mat-card-content *ngIf="!collapseTenantDetails">
<div>
<form (ngSubmit)="saveTenant()">
<div>
@ -75,4 +77,44 @@
</div>
</mat-card-content>
</mat-card>
<mat-card class="defaultCard">
<mat-card-header>
<mat-card-title>
Mietverhältnisse
</mat-card-title>
</mat-card-header>
<mat-card-content>
<div>
<table mat-table [dataSource]="tenancyDataSource" #zftable>
<ng-container matColumnDef="description">
<th mat-header-cell *matHeaderCellDef>Beschreibung</th>
<td mat-cell *matCellDef="let element">{{element.rawTenancy.description}}</td>
</ng-container>
<ng-container matColumnDef="flat">
<th mat-header-cell *matHeaderCellDef>Wohnung</th>
<td mat-cell *matCellDef="let element">{{element.flat}}</td>
</ng-container>
<ng-container matColumnDef="parking">
<th mat-header-cell *matHeaderCellDef>Garage</th>
<td mat-cell *matCellDef="let element">{{element.parking}}</td>
</ng-container>
<ng-container matColumnDef="commercial_premise">
<th mat-header-cell *matHeaderCellDef>Büro</th>
<td mat-cell *matCellDef="let element">{{element.commercial_premise}}</td>
</ng-container>
<ng-container matColumnDef="startdate">
<th mat-header-cell *matHeaderCellDef>Beginn</th>
<td mat-cell *matCellDef="let element">{{element.rawTenancy.startdate}}</td>
</ng-container>
<ng-container matColumnDef="enddate">
<th mat-header-cell *matHeaderCellDef>Ende</th>
<td mat-cell *matCellDef="let element">{{element.rawTenancy.enddate}}</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="tenancyDisplayColumns"></tr>
<tr mat-row *matRowDef="let row; columns: tenancyDisplayColumns;"></tr>
</table>
</div>
</mat-card-content>
</mat-card>
</section>

View File

@ -1,9 +1,18 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { AccountService, TenantService } from '../data-object-service';
import { Account, Tenant } from '../data-objects';
import { AccountService, CommercialPremiseService, FlatService, ParkingService, PremiseService, TenancyService, TenantService } from '../data-object-service';
import { Account, CommercialPremise, Flat, NULL_Account, NULL_CommercialPremise, NULL_Flat, NULL_Parking, NULL_Tenant, Parking, Premise, Tenancy, Tenant } from '../data-objects';
import { MessageService } from '../message.service';
import { MatButton } from '@angular/material/button';
import { MatTableDataSource } from '@angular/material/table';
interface DN_Tenancy {
rawTenancy: Tenancy
flat: string
parking: string
commercialPremise: string
}
@Component({
selector: 'app-tenant-details',
@ -12,32 +21,28 @@ import { MatButton } from '@angular/material/button';
})
export class TenantDetailsComponent implements OnInit {
tenant: Tenant = {
id: 0,
salutation: '',
firstname: '',
lastname: '',
address1: '',
address2: '',
address3: '',
zip: '',
city: '',
phone1: '',
phone2: '',
iban: '',
account: 0
}
tenant: Tenant = NULL_Tenant
account: Account = {
id: 0,
description: ''
}
account: Account = NULL_Account
tenancies: DN_Tenancy[] = []
tenancyDataSource: MatTableDataSource<DN_Tenancy>
tenancyDisplayColumns: string[] = [ "description", "flat", "parking", "commercial_premise", "startdate", "enddate" ]
collapseTenantDetails: boolean = false
collapseTenancies: boolean = false
@ViewChild('submitButton') submitButton: MatButton
constructor(
private tenantService: TenantService,
private accountService: AccountService,
private tenancyService: TenancyService,
private flatService: FlatService,
private parkingService: ParkingService,
private commercialPremiseService: CommercialPremiseService,
private premiseService: PremiseService,
private messageService: MessageService,
private route: ActivatedRoute,
private router: Router
@ -49,6 +54,24 @@ export class TenantDetailsComponent implements OnInit {
if (id != 0) {
this.tenant = await this.tenantService.getTenant(id)
this.account = await this.accountService.getAccount(this.tenant.account)
const premises: Premise[] = await this.premiseService.getPremises()
const premisesDict = new Map<number, Premise>()
for (let p of premises) {
premisesDict.set(p.id, p)
}
for (let t of await this.tenancyService.getTenancysByTenant(this.tenant.id)) {
const flat: Flat = (t.flat) ? await this.flatService.getFlat(t.flat) : NULL_Flat
const parking: Parking = (t.parking) ? await this.parkingService.getParking(t.parking) : NULL_Parking
const commercialPremise: CommercialPremise = (t.commercial_premise) ? await this.commercialPremiseService.getCommercialPremise(t.commercial_premise) : NULL_CommercialPremise
this.tenancies.push({
rawTenancy: t,
flat: (flat != NULL_Flat) ? `${flat.description} (${premisesDict.get(flat.premise).description})` : '',
parking: (parking != NULL_Parking) ? `${parking.description} (${premisesDict.get(parking.premise).description})` : '',
commercialPremise: (commercialPremise != NULL_CommercialPremise) ? `${commercialPremise.description} (${premisesDict.get(commercialPremise.premise).description})` : ''
})
}
this.tenancyDataSource = new MatTableDataSource<DN_Tenancy>(this.tenancies)
}
} catch (err) {
this.messageService.add(JSON.stringify(err, undefined, 4))