Merge branch 'master' of https://bitbucket.org/sriramv18/sparqsineedge
This commit is contained in:
commit
b3dc7202d3
@ -1,10 +1,10 @@
|
|||||||
<form class="address" [formGroup]="rentalForm">
|
<form [formGroup]="rentalForm" novalidate>
|
||||||
|
|
||||||
<h2 mat-dialog-title class="paragraph_change">
|
<h2 mat-dialog-title class="paragraph_change">
|
||||||
<div fxFlex="70" align="left" style="padding: 10px !important;">
|
<!-- <div fxFlex="70" align="left" style="padding: 10px !important;">
|
||||||
<span>{{main_applicant}} ({{lender_applicant_id}}), {{customer_segment_abbr}} - {{subproduct_abbr}} </span><br>
|
<span>{{main_applicant}} ({{lender_applicant_id}}), {{customer_segment_abbr}} - {{subproduct_abbr}} </span><br>
|
||||||
{{pageTitle}}
|
{{pageTitle}}
|
||||||
</div>
|
</div> -->
|
||||||
<div fxFlex="30" align="end" style="padding: 10px !important;">
|
<div fxFlex="30" align="end" style="padding: 10px !important;">
|
||||||
<button mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" type="button" matTooltip="Close" matTooltipPosition="right" mat-dialog-close><mat-icon>close</mat-icon></button>
|
<button mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" type="button" matTooltip="Close" matTooltipPosition="right" mat-dialog-close><mat-icon>close</mat-icon></button>
|
||||||
|
|
||||||
@ -18,6 +18,48 @@
|
|||||||
<mat-tab label="Questions">
|
<mat-tab label="Questions">
|
||||||
<ng-template matTabContent>
|
<ng-template matTabContent>
|
||||||
<div fxLayout="row wrap">
|
<div fxLayout="row wrap">
|
||||||
|
<div fxFlex="100">
|
||||||
|
<mat-card>
|
||||||
|
<!-- <mat-card-header>
|
||||||
|
<mat-card-title></mat-card-title>
|
||||||
|
</mat-card-header> -->
|
||||||
|
<mat-card-content>
|
||||||
|
<div fxLayout="row wrap">
|
||||||
|
<mat-form-field style="width:100%" appearance="outline">
|
||||||
|
<mat-label>Name of the Person who is showing the Property to Sineedge Officer</mat-label>
|
||||||
|
<mat-select placeholder="Name"
|
||||||
|
formControlName="person_met" [compareWith]="compareObjects" multiple required>
|
||||||
|
<mat-optgroup *ngFor="let group of mergeCompanyApplicant" [label]="group.groupName">
|
||||||
|
<mat-option *ngFor="let val of group.groupValues" [value]="val">
|
||||||
|
{{val.name}}
|
||||||
|
</mat-option>
|
||||||
|
</mat-optgroup>
|
||||||
|
</mat-select>
|
||||||
|
</mat-form-field>
|
||||||
|
<!-- <mat-form-field style="width:28%" appearance="outline" *ngIf="rentalForm.controls['other_person_met']">
|
||||||
|
<mat-label>Specify Other Person</mat-label>
|
||||||
|
<input matInput autocomplete="off" placeholder="" formControlName="other_person_met" required>
|
||||||
|
</mat-form-field>
|
||||||
|
<mat-form-field style="width:35%" appearance="outline" *ngIf="rentalForm.controls['other_name_person_showing_property']">
|
||||||
|
<mat-label>Who is {{rentalForm.controls['other_person_met'].value}}</mat-label>
|
||||||
|
<mat-select placeholder=""
|
||||||
|
formControlName="other_name_person_showing_property" multiple required>
|
||||||
|
<mat-option mult *ngFor="let pType of personType" [value]="pType">
|
||||||
|
{{pType.name}}
|
||||||
|
</mat-option>
|
||||||
|
</mat-select>
|
||||||
|
</mat-form-field>
|
||||||
|
<mat-form-field style="width:25%" appearance="outline" *ngIf="rentalForm.controls['other_name_person_type']">
|
||||||
|
<mat-label>Specify Other</mat-label>
|
||||||
|
<input matInput autocomplete="off" placeholder="" formControlName="other_name_person_type" required>
|
||||||
|
</mat-form-field> -->
|
||||||
|
</div>
|
||||||
|
</mat-card-content>
|
||||||
|
</mat-card>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- <div fxLayout="row wrap">
|
||||||
<div fxFlex="100">
|
<div fxFlex="100">
|
||||||
|
|
||||||
<mat-form-field style="width:80%;">
|
<mat-form-field style="width:80%;">
|
||||||
@ -205,7 +247,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</mat-tab>
|
</mat-tab>
|
||||||
<mat-tab label="Docs">
|
<mat-tab label="Docs">
|
||||||
|
|||||||
@ -1,30 +1,3 @@
|
|||||||
// .address {
|
|
||||||
// display: flex;
|
|
||||||
// padding: 0 2%;
|
|
||||||
// flex-direction: column;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .address > * {
|
|
||||||
// width: 100%;
|
|
||||||
// }
|
|
||||||
// .matcard mat-form-field {
|
|
||||||
// margin: 0 2%;
|
|
||||||
// width:40%;
|
|
||||||
// }
|
|
||||||
// .address .button {
|
|
||||||
// float: right;
|
|
||||||
// width: 10px;
|
|
||||||
// background: #62B013;
|
|
||||||
// color: white;
|
|
||||||
// }
|
|
||||||
// mat-form-field {
|
|
||||||
// width: 27%;
|
|
||||||
// margin: 0 2%;
|
|
||||||
// }
|
|
||||||
// .fields mat-form-field {
|
|
||||||
// width: 45%;
|
|
||||||
// margin: 0 2%;
|
|
||||||
// }
|
|
||||||
::ng-deep .cdk-global-overlay-wrapper{
|
::ng-deep .cdk-global-overlay-wrapper{
|
||||||
justify-content: center !important;
|
justify-content: center !important;
|
||||||
}
|
}
|
||||||
@ -42,74 +15,5 @@
|
|||||||
mat-form-field {
|
mat-form-field {
|
||||||
margin: 0 2%;
|
margin: 0 2%;
|
||||||
}
|
}
|
||||||
$base-card-box-shadow:1.5px 2.6px 24px 0 rgba(0, 35, 136, 0.08) !important;
|
|
||||||
$product-bg-color-hover: rgba(103, 58, 183, 0.7);
|
|
||||||
.p-list-main {
|
|
||||||
background: white;
|
|
||||||
margin: auto;
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden !important;
|
|
||||||
border-radius: 10px 10px 10px 10px;
|
|
||||||
box-shadow: $base-card-box-shadow;
|
|
||||||
transform: scale(0.95);
|
|
||||||
transition: box-shadow 0.5s, transform 0.5s;
|
|
||||||
&:hover {
|
|
||||||
transform: scale(1);
|
|
||||||
box-shadow: 5px 20px 30px rgba(0, 0, 0, 0.2);
|
|
||||||
}
|
|
||||||
.p-list {
|
|
||||||
position: relative;
|
|
||||||
.top {
|
|
||||||
height: 100%;
|
|
||||||
width: 100%;
|
|
||||||
// background: url(https://s-media-cache-ak0.pinimg.com/736x/49/80/6f/49806f3f1c7483093855ebca1b8ae2c4.jpg) no-repeat center center;
|
|
||||||
-webkit-background-size: 100%;
|
|
||||||
-moz-background-size: 100%;
|
|
||||||
-o-background-size: 100%;
|
|
||||||
background-size: 100%;
|
|
||||||
}
|
|
||||||
.bottom {
|
|
||||||
width: 200%;
|
|
||||||
height: 15%;
|
|
||||||
transition: transform 0.5s;
|
|
||||||
h1 {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
p {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
.left {
|
|
||||||
height: 100%;
|
|
||||||
width: 50%;
|
|
||||||
background: #f4f4f4;
|
|
||||||
position: relative;
|
|
||||||
float: left;
|
|
||||||
.details {
|
|
||||||
padding: 5px;
|
|
||||||
float: left;
|
|
||||||
// width: calc(70% - 40px);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
.right {
|
|
||||||
width: 50%;
|
|
||||||
background: #A6CDDE;
|
|
||||||
color: white;
|
|
||||||
float: right;
|
|
||||||
height: 200%;
|
|
||||||
overflow: hidden;
|
|
||||||
.details {
|
|
||||||
padding: 20px;
|
|
||||||
float: right;
|
|
||||||
width: calc(70% - 40px);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -3,8 +3,6 @@ import {FormBuilder, FormGroup, Validators, FormControl, FormArray} from '@angul
|
|||||||
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA , DialogPosition} from '@angular/material';
|
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA , DialogPosition} from '@angular/material';
|
||||||
import {NotifierService} from 'angular-notifier';
|
import {NotifierService} from 'angular-notifier';
|
||||||
import {PdTrigerService} from './../../../../../pd-service/pd-triger.service';
|
import {PdTrigerService} from './../../../../../pd-service/pd-triger.service';
|
||||||
import {AwsService} from '../../../../../../AwsService/aws.service';
|
|
||||||
import {Key} from 'protractor';
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-rental-info',
|
selector: 'app-rental-info',
|
||||||
@ -12,38 +10,47 @@ import {Key} from 'protractor';
|
|||||||
styleUrls: ['./rental-info.component.scss']
|
styleUrls: ['./rental-info.component.scss']
|
||||||
})
|
})
|
||||||
export class RentalInfoComponent implements OnInit {
|
export class RentalInfoComponent implements OnInit {
|
||||||
customer_segment_abbr: any;
|
|
||||||
subproduct_abbr: any;
|
|
||||||
lender_applicant_id: any;
|
|
||||||
main_applicant: any;
|
|
||||||
|
|
||||||
// @Input() pdid: string;
|
|
||||||
// @Input() pd_all_details: any;
|
|
||||||
// form_id: number;
|
|
||||||
pageTitle: string ="Rental Information";
|
pageTitle: string ="Rental Information";
|
||||||
pdid: number;
|
pdid: number;
|
||||||
form_id: number;
|
form_id: number;
|
||||||
step: number;
|
|
||||||
|
|
||||||
public rentalForm: FormGroup;
|
public rentalForm: FormGroup;
|
||||||
tenantsList: FormArray;
|
|
||||||
propertyList: FormGroup;
|
|
||||||
private notifier: NotifierService;
|
private notifier: NotifierService;
|
||||||
|
existCompanyList: any =[];
|
||||||
|
mergeCompanyApplicant: any=[];
|
||||||
|
//personType: any=[{id:2,name:"Tenant / Lessee"},{id:3,name:"Owner of the Rented Property"},{id:4,name:"Property Caretaker"},{id:1,name:"Others (Please Specify)"}];
|
||||||
constructor(
|
constructor(
|
||||||
notifier: NotifierService,
|
notifier: NotifierService,
|
||||||
private _fb: FormBuilder,
|
private _fb: FormBuilder,
|
||||||
private _pd: PdTrigerService,
|
private _pd: PdTrigerService,
|
||||||
private _aws:AwsService,
|
|
||||||
private dialogRef: MatDialogRef<RentalInfoComponent>,
|
private dialogRef: MatDialogRef<RentalInfoComponent>,
|
||||||
@Inject(MAT_DIALOG_DATA) public pd_all_details: any) {
|
@Inject(MAT_DIALOG_DATA) public pd_all_details: any) {
|
||||||
this.pdid = this.pd_all_details.pdmaster_details.pd_id;
|
this.pdid = this.pd_all_details.pdmaster_details.pd_id;
|
||||||
this.notifier = notifier;
|
this.notifier = notifier;
|
||||||
this.form_id = 17;
|
this.form_id = 17;
|
||||||
this.main_applicant = this.pd_all_details.pdmaster_details.main_applicant;
|
// get applicant list
|
||||||
this.lender_applicant_id = this.pd_all_details.pdmaster_details.lender_applicant_id;
|
// this.pd_all_details.pdapplicants_detials.push({'pd_co_applicant_id':'0','applicant_name':'Others'});
|
||||||
this.subproduct_abbr = this.pd_all_details.pdmaster_details.subproduct_abbr;
|
// let modifyApplicantList: any=[];
|
||||||
this.customer_segment_abbr = this.pd_all_details.pdmaster_details.customer_segment_abbr;
|
// if(this.pd_all_details.pdapplicants_detials.length > 0){
|
||||||
|
// modifyApplicantList = this.pd_all_details.pdapplicants_detials.map(element => {
|
||||||
|
// return {id:element.pd_co_applicant_id,name:element.applicant_name,group_id:2};
|
||||||
|
// });
|
||||||
|
// this.mergeCompanyApplicant.push({groupName:'APPLICANTS',groupValues:modifyApplicantList})
|
||||||
|
|
||||||
|
// }
|
||||||
|
// this._pd.getCompaniesListsForBusiness(this.pdid).subscribe(data=>{
|
||||||
|
// if(data.dataStatus){
|
||||||
|
// this.existCompanyList = data.records.filter(val =>val.is_active===true && val.is_company_applicant===true);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// let modifyCompanyList : any=[];
|
||||||
|
// if(this.existCompanyList.length>0){
|
||||||
|
// modifyCompanyList = this.existCompanyList.map(element => {
|
||||||
|
// return {id:element.company_order_id.toString(),name:element.company_name,group_id:1};
|
||||||
|
// });
|
||||||
|
// this.mergeCompanyApplicant.push({groupName:'COMPANIES',groupValues:modifyCompanyList})
|
||||||
|
// }
|
||||||
|
|
||||||
|
// });
|
||||||
}
|
}
|
||||||
public viewerOptions: any = {
|
public viewerOptions: any = {
|
||||||
navbar: false,
|
navbar: false,
|
||||||
@ -65,147 +72,44 @@ export class RentalInfoComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.step = 0;
|
|
||||||
this.inintRentalForm();
|
this.inintRentalForm();
|
||||||
this.createpropertyArray();
|
// observe person met controls
|
||||||
let params: any = {};
|
// this.rentalForm.controls['person_met'].valueChanges.subscribe(val => {
|
||||||
params.pd_id = this.pdid;
|
// if(val && val.length>0){
|
||||||
params.pd_form_id = this.form_id;
|
// let otherPersonMetCheck = val.filter(fVal=>fVal.id==0);
|
||||||
this._pd.retriveForm(params).subscribe(value => {
|
// otherPersonMetCheck.length>0 ? this.rentalForm.addControl('other_person_met', new FormControl('', Validators.required)) : this.rentalForm.removeControl('other_person_met');
|
||||||
let subArray: any;
|
// otherPersonMetCheck.length>0 ? this.rentalForm.addControl('other_name_person_showing_property', new FormControl('', Validators.required)) : this.rentalForm.removeControl('other_name_person_showing_property');
|
||||||
const control = <FormArray>this.rentalForm.controls['rental_home'];
|
// }
|
||||||
if (value.status == 200) {
|
// else {
|
||||||
let rentalinfo = value.records;
|
// this.rentalForm.removeControl('other_person_met');
|
||||||
var result = Object.keys(value.records.rental_home).map(function (key) {
|
// this.rentalForm.removeControl('other_name_person_showing_property');
|
||||||
return value.records.rental_home[key];
|
// this.rentalForm.removeControl('other_name_person_type');
|
||||||
});
|
// }
|
||||||
if (result.length == 0) {
|
// });
|
||||||
const control = <FormArray>this.rentalForm.controls['rental_home'];
|
// observe other person type
|
||||||
control.push(this.createpropertyArray());
|
// this.rentalForm.controls['other_name_person_showing_property'].valueChanges.subscribe(val => {
|
||||||
} else {
|
// if(val && val.length>0){
|
||||||
result.forEach((datas, index) => {
|
// let otherCheck = val.filter(fVal=>fVal.id==0);
|
||||||
control.push(this.createpropertyArray());
|
// otherCheck.length>0 ? this.rentalForm.addControl('other_name_person_type', new FormControl('', Validators.required)) : this.rentalForm.removeControl('other_name_person_type');
|
||||||
const parentControl = <FormGroup>this.rentalForm.controls['rental_home']['controls'][index];
|
// }
|
||||||
const sub = <FormArray>parentControl.controls['details_tenants'];
|
// else {
|
||||||
// console.log('control', parentControl);
|
// this.rentalForm.removeControl('other_name_person_type');
|
||||||
subArray = Object.keys(datas.details_tenants).map(function (key) {
|
// }
|
||||||
return datas.details_tenants[key];
|
// });
|
||||||
});
|
|
||||||
if (subArray.length > 0) {
|
|
||||||
subArray.forEach((val) => {
|
|
||||||
// console.log('val', val);
|
|
||||||
sub.push(this.createTenatsArray());
|
|
||||||
})
|
|
||||||
sub.removeAt(0);
|
|
||||||
}
|
|
||||||
datas.details_tenants = subArray;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
rentalinfo.rental_home = result;
|
|
||||||
rentalinfo.pdid = this.pdid;
|
|
||||||
rentalinfo.formid = this.form_id;
|
|
||||||
rentalinfo.fk_createdby = this._aws.getlocale();
|
|
||||||
this.rentalForm.setValue(rentalinfo);
|
|
||||||
} else {
|
|
||||||
control.push(this.createpropertyArray());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inintRentalForm() {
|
inintRentalForm() {
|
||||||
this.rentalForm = this._fb.group({
|
return this.rentalForm = this._fb.group({
|
||||||
pdid: this.pdid,
|
pdid: this.pdid,
|
||||||
formid: this.form_id,
|
formid: this.form_id,
|
||||||
fk_createdby: this.pdid,
|
|
||||||
person_met: [''],
|
person_met: [''],
|
||||||
property_own: [''],
|
|
||||||
nature_property: [''],
|
|
||||||
rental_home: this._fb.array([])
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
// compare objects for merge two master table details
|
||||||
createpropertyArray() {
|
compareObjects(o1: any, o2: any) {
|
||||||
this.propertyList = this._fb.group({
|
if(o1.id == o2.id && o1.group_id == o2.group_id)
|
||||||
complete_add: [''],
|
return true;
|
||||||
area_of_property: [''],
|
else return false
|
||||||
structure_property: [''],
|
|
||||||
total_room: [''],
|
|
||||||
is_rent: [''],
|
|
||||||
date_agreement: [''],
|
|
||||||
date_validity: [''],
|
|
||||||
rent_agreement: [''],
|
|
||||||
actual_rent: [''],
|
|
||||||
photo_areegment: [''],
|
|
||||||
bank: [''],
|
|
||||||
cash: [''],
|
|
||||||
rent_each_floor: [''],
|
|
||||||
total_rent: [''],
|
|
||||||
related_doc_owner: [''],
|
|
||||||
property_photographs: [''],
|
|
||||||
third_party_check: [''],
|
|
||||||
details_tenants: this._fb.array([this.createTenatsArray()]),
|
|
||||||
});
|
|
||||||
return this.propertyList;
|
|
||||||
}
|
|
||||||
|
|
||||||
createTenatsArray() {
|
|
||||||
return this._fb.group({
|
|
||||||
name: [''],
|
|
||||||
mobile_no: [''],
|
|
||||||
tenants_seen: [''],
|
|
||||||
tenants_con_owner: [''],
|
|
||||||
staying_since: [''],
|
|
||||||
rent_paid: [''],
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
addProperty(event) {
|
|
||||||
event.stopPropagation();
|
|
||||||
|
|
||||||
const control = <FormArray>this.rentalForm.controls['rental_home'];
|
|
||||||
control.push(this.createpropertyArray());
|
|
||||||
let length = control.length;
|
|
||||||
this.step = length - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
deleteProperty(index) {
|
|
||||||
const control = <FormArray>this.rentalForm.controls['rental_home'];
|
|
||||||
control.removeAt(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
addTenant(parentIndex:number) {
|
|
||||||
const parentControl = <FormGroup>this.rentalForm.controls['rental_home']['controls'][parentIndex];
|
|
||||||
const control = <FormArray>parentControl.controls['details_tenants'];
|
|
||||||
// console.log(parentControl);
|
|
||||||
// console.log(control);
|
|
||||||
control.push(this.createTenatsArray());
|
|
||||||
}
|
|
||||||
|
|
||||||
deleteTenant(idx, parentIndex) {
|
|
||||||
const parentControl = <FormGroup>this.rentalForm.controls['rental_home']['controls'][parentIndex];
|
|
||||||
const control = <FormArray>parentControl.controls['details_tenants'];
|
|
||||||
control.removeAt(idx);
|
|
||||||
}
|
|
||||||
|
|
||||||
rentalSubmit() {
|
|
||||||
if (!this.rentalForm.valid) {
|
|
||||||
this.notifier.notify('warning', 'Please Fill All Mandatory Fields.!');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// console.log('form', this.rentalForm.value);
|
|
||||||
let records = this.rentalForm.value;
|
|
||||||
this._pd.saveForm(records).subscribe(data => {
|
|
||||||
if (data.status == 200) {
|
|
||||||
this.notifier.notify('success', 'Saved Successfully.');
|
|
||||||
setTimeout(() =>{
|
|
||||||
this.dialogRef.close();
|
|
||||||
},3000);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
this.notifier.notify('warning', 'Something Wents Wrong Try Again.!');
|
|
||||||
}
|
|
||||||
}, error => {
|
|
||||||
this.notifier.notify('warning', 'Something Wents Wrong Try Again.!');
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,212 @@
|
|||||||
|
<form [formGroup]="_rentalForm" novalidate>
|
||||||
|
<h2 mat-dialog-title class="paragraph_change">
|
||||||
|
<!-- <div fxFlex="70" align="left"> -->
|
||||||
|
<div fxFlex="70" align="left" style="padding: 10px !important;">
|
||||||
|
<div fxLayout="row wrap">
|
||||||
|
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="100" fxFlex.lg="100" fxFlex.xl="100">
|
||||||
|
<span>{{main_applicant}} ({{lender_applicant_id}}), {{customer_segment_abbr}} - {{subproduct_abbr}} </span><br>
|
||||||
|
{{pageTitle}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div fxFlex="30" align="end" style="padding: 10px !important;">
|
||||||
|
<button mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" type="button" matTooltip="Close" matTooltipPosition="right" mat-dialog-close><mat-icon>close</mat-icon></button>
|
||||||
|
</div>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<mat-dialog-content>
|
||||||
|
<mat-card>
|
||||||
|
<mat-card-content>
|
||||||
|
<div fxLayout="row wrap">
|
||||||
|
<!--start name of the who showing property to officer -->
|
||||||
|
<mat-form-field style="width:100%" appearance="outline">
|
||||||
|
<mat-label>Name of the Person who is showing the Property to Sineedge Officer</mat-label>
|
||||||
|
<mat-select placeholder="Name"
|
||||||
|
formControlName="person_met" [compareWith]="compareObjects" multiple required>
|
||||||
|
<mat-optgroup *ngFor="let group of mergeCompanyApplicant" [label]="group.groupName">
|
||||||
|
<mat-option *ngFor="let val of group.groupValues" [value]="val">
|
||||||
|
{{val.name}}
|
||||||
|
</mat-option>
|
||||||
|
</mat-optgroup>
|
||||||
|
</mat-select>
|
||||||
|
</mat-form-field>
|
||||||
|
<mat-form-field style="width:28%" appearance="outline" *ngIf="_rentalForm.controls['other_person_met']">
|
||||||
|
<mat-label>Specify Other Person</mat-label>
|
||||||
|
<input matInput autocomplete="off" placeholder="" formControlName="other_person_met" required>
|
||||||
|
</mat-form-field>
|
||||||
|
<mat-form-field style="width:35%" appearance="outline" *ngIf="_rentalForm.controls['other_name_person_showing_property']">
|
||||||
|
<mat-label>Who is {{_rentalForm.controls['other_person_met'].value}}</mat-label>
|
||||||
|
<mat-select placeholder=""
|
||||||
|
formControlName="other_name_person_showing_property" (selectionChange)="personShowingChanges(_rentalForm.controls['other_name_person_showing_property'].value)" multiple required>
|
||||||
|
<mat-option *ngFor="let pType of personType" [value]="pType">
|
||||||
|
{{pType.name}}
|
||||||
|
</mat-option>
|
||||||
|
</mat-select>
|
||||||
|
</mat-form-field>
|
||||||
|
|
||||||
|
|
||||||
|
<mat-form-field style="width:25%" appearance="outline" *ngIf="_rentalForm.controls['other_name_person_type']">
|
||||||
|
<mat-label>Specify Other</mat-label>
|
||||||
|
<input matInput autocomplete="off" placeholder="" formControlName="other_name_person_type" required>
|
||||||
|
</mat-form-field>
|
||||||
|
<!-- end -->
|
||||||
|
|
||||||
|
<!-- start owner of the property -->
|
||||||
|
<mat-form-field style="width:100%" appearance="outline">
|
||||||
|
<mat-label>Name of the Owner/Owners of the Let out Property as per Loan Applicants</mat-label>
|
||||||
|
<mat-select placeholder="Name"
|
||||||
|
formControlName="property_owner" [compareWith]="compareObjects" multiple required>
|
||||||
|
<mat-optgroup *ngFor="let group of mergeCompanyApplicant" [label]="group.groupName">
|
||||||
|
<mat-option *ngFor="let val of group.groupValues" [value]="val">
|
||||||
|
{{val.name}}
|
||||||
|
</mat-option>
|
||||||
|
</mat-optgroup>
|
||||||
|
</mat-select>
|
||||||
|
</mat-form-field>
|
||||||
|
<mat-form-field style="width:28%" appearance="outline" *ngIf="_rentalForm.controls['property_owner_other']">
|
||||||
|
<mat-label>Specify Other Owner/Owners</mat-label>
|
||||||
|
<input matInput autocomplete="off" placeholder="" formControlName="property_owner_other" required>
|
||||||
|
</mat-form-field>
|
||||||
|
<mat-form-field style="width:35%" appearance="outline" *ngIf="_rentalForm.controls['property_owner_other_relationship']">
|
||||||
|
<mat-label>Relation of Owner to Loan Applicant</mat-label>
|
||||||
|
<mat-select placeholder="" formControlName="property_owner_other_relationship" [compareWith]="compareObjects" required>
|
||||||
|
<mat-optgroup *ngFor="let rGroup of relationShipList" [label]="rGroup.groupName">
|
||||||
|
<!-- <mat-option>Select</mat-option> -->
|
||||||
|
<mat-option [value]="relation" *ngFor="let relation of rGroup.groupValues">{{relation.name | titlecase}}</mat-option>
|
||||||
|
</mat-optgroup>
|
||||||
|
</mat-select>
|
||||||
|
</mat-form-field>
|
||||||
|
<mat-form-field style="width:25%" appearance="outline" *ngIf="_rentalForm.controls['property_owner_other_relation_to']">
|
||||||
|
<mat-label>Relation To</mat-label>
|
||||||
|
<mat-select placeholder="" formControlName="property_owner_other_relation_to" [compareWith]="compareObjects" required>
|
||||||
|
<mat-optgroup *ngFor="let rtGroup of mergeCompanyApplicant" [label]="rtGroup.groupName">
|
||||||
|
<mat-option [value]="relationto" *ngFor="let relationto of rtGroup.groupValues" [disabled]="relationto.id ==0">{{relationto.name | titlecase}}</mat-option>
|
||||||
|
</mat-optgroup>
|
||||||
|
</mat-select>
|
||||||
|
</mat-form-field>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- end -->
|
||||||
|
</div>
|
||||||
|
</mat-card-content>
|
||||||
|
</mat-card>
|
||||||
|
<mat-card>
|
||||||
|
<mat-card-content>
|
||||||
|
<div fxLayout="row wrap">
|
||||||
|
<!--start payment -->
|
||||||
|
<mat-form-field style="width:46%" appearance="outline">
|
||||||
|
<mat-label>Monthly Rent Amount as per Loan Applicant</mat-label>
|
||||||
|
<input matInput OnlyNumber autocomplete="off" placeholder="" formControlName="monthly_rent_amount" (keyup)="inWords($event,1)" required>
|
||||||
|
<mat-hint align="start" style="font-size:90%" *ngIf="_rentalForm.controls['monthly_rent_amount'].value != ''">{{"₹"}} {{rentAmtInwords}} Only</mat-hint>
|
||||||
|
</mat-form-field>
|
||||||
|
<mat-form-field style="width:46%" appearance="outline">
|
||||||
|
<mat-label>Mode of Payment of Rent as per Loan Applicant</mat-label>
|
||||||
|
<mat-select placeholder=""
|
||||||
|
formControlName="payment_mode" required>
|
||||||
|
<mat-option *ngFor="let payment of paymentOptions" [value]="payment">
|
||||||
|
{{payment.name}}
|
||||||
|
</mat-option>
|
||||||
|
</mat-select>
|
||||||
|
</mat-form-field>
|
||||||
|
<mat-form-field style="width:26%" appearance="outline" *ngIf="_rentalForm.controls['amount_received_cash']">
|
||||||
|
<mat-label>Amount Received in Cash</mat-label>
|
||||||
|
<input matInput OnlyNumber autocomplete="off" placeholder="" formControlName="amount_received_cash" (keyup)="inWords($event,2)" required>
|
||||||
|
<mat-hint align="start" style="font-size:90%" *ngIf="_rentalForm.controls['amount_received_cash'].value != ''">{{"₹"}} {{amountReceivedCash}} Only</mat-hint>
|
||||||
|
</mat-form-field>
|
||||||
|
|
||||||
|
<mat-form-field style="width:26%" appearance="outline" *ngIf="_rentalForm.controls['amount_received_bank']">
|
||||||
|
<mat-label>Amount Received in Bank</mat-label>
|
||||||
|
<input matInput OnlyNumber autocomplete="off" placeholder="" formControlName="amount_received_bank" (keyup)="inWords($event,3)" required>
|
||||||
|
<mat-hint align="start" style="font-size:90%" *ngIf="_rentalForm.controls['amount_received_bank'].value != ''">{{"₹"}} {{amountReceivedBank}} Only</mat-hint>
|
||||||
|
</mat-form-field>
|
||||||
|
<mat-form-field style="width:36%" appearance="outline" *ngIf="_rentalForm.controls['payment_received_reason']">
|
||||||
|
<mat-label>Payment Received Reason</mat-label>
|
||||||
|
<textarea matInput placeholder="" formControlName="payment_received_reason"></textarea>
|
||||||
|
</mat-form-field>
|
||||||
|
<mat-form-field style="width:100%" appearance="outline">
|
||||||
|
<mat-label>Securtity Deposit amount as per Loan Applicant</mat-label>
|
||||||
|
<input matInput OnlyNumber autocomplete="off" placeholder="" formControlName="securtity_deposit_amount" (keyup)="inWords($event,4)" required>
|
||||||
|
<mat-hint align="start" style="font-size:90%" *ngIf="_rentalForm.controls['securtity_deposit_amount'].value != ''">{{"₹"}} {{securtityDepositAmount}} Only</mat-hint>
|
||||||
|
</mat-form-field>
|
||||||
|
<!-- end -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</mat-card-content>
|
||||||
|
</mat-card>
|
||||||
|
<mat-card>
|
||||||
|
<mat-card-content>
|
||||||
|
<div fxLayout="row wrap">
|
||||||
|
<!-- start nature of ther property -->
|
||||||
|
<mat-form-field style="width:67%" appearance="outline">
|
||||||
|
<mat-label>Nature of Let Out property as per Loan Applicant</mat-label>
|
||||||
|
<mat-select placeholder=""
|
||||||
|
formControlName="nature_property" required>
|
||||||
|
<mat-option *ngFor="let property of propertyNature" [value]="property">
|
||||||
|
{{property.name}}
|
||||||
|
</mat-option>
|
||||||
|
</mat-select>
|
||||||
|
</mat-form-field>
|
||||||
|
<mat-form-field style="width:25%" appearance="outline" *ngIf="_rentalForm.controls['other_nature_property']">
|
||||||
|
<mat-label>Other Property</mat-label>
|
||||||
|
<input matInput autocomplete="off" placeholder="" formControlName="other_nature_property" required>
|
||||||
|
</mat-form-field>
|
||||||
|
<!-- end -->
|
||||||
|
|
||||||
|
<!-- start type of units -->
|
||||||
|
<mat-form-field style="width:67%" appearance="outline">
|
||||||
|
<mat-label>Type of Units as per Loan Applicants</mat-label>
|
||||||
|
<mat-select placeholder=""
|
||||||
|
formControlName="unit_type" [compareWith]="compareObjects" required>
|
||||||
|
<mat-optgroup *ngFor="let ugroup of unitTypeList" [label]="ugroup.groupName">
|
||||||
|
<mat-option *ngFor="let unit of ugroup.groupValues" [value]="unit">
|
||||||
|
{{unit.name}}
|
||||||
|
</mat-option>
|
||||||
|
</mat-optgroup>
|
||||||
|
</mat-select>
|
||||||
|
</mat-form-field>
|
||||||
|
<mat-form-field style="width:25%" appearance="outline" *ngIf="_rentalForm.controls['other_unit_type']">
|
||||||
|
<mat-label>Other Units</mat-label>
|
||||||
|
<input matInput autocomplete="off" placeholder="" formControlName="other_unit_type" required>
|
||||||
|
</mat-form-field>
|
||||||
|
<mat-form-field style="width:25%" appearance="outline" *ngIf="_rentalForm.controls['no_floor']">
|
||||||
|
<mat-label>No Floor</mat-label>
|
||||||
|
<input matInput OnlyNumber autocomplete="off" placeholder="" formControlName="no_floor" maxlength="2" (keyup)="generateFloor($event)" required>
|
||||||
|
</mat-form-field>
|
||||||
|
<div fxFlex="100" *ngIf="_rentalForm.controls['floor_details']">
|
||||||
|
<div fxFlex="100" formArrayName="floor_details">
|
||||||
|
<div fxLayout="row nowrap" class="align-margin" *ngFor="let floor of _rentalForm.get('floor_details').controls; let f = index" [formGroupName]="f">
|
||||||
|
<mat-form-field style="width:40%;" appearance="outline">
|
||||||
|
<mat-label>Floor Level</mat-label>
|
||||||
|
<input matInput autocomplete="off" placeholder="" formControlName="floor_level" required>
|
||||||
|
</mat-form-field>
|
||||||
|
|
||||||
|
<mat-form-field style="width:51%;" appearance="outline">
|
||||||
|
<mat-label>No of Units on the Floor</mat-label>
|
||||||
|
<input OnlyNumber matInput autocomplete="off" placeholder="" formControlName="no_units_in_floor" maxlength="2" required>
|
||||||
|
</mat-form-field>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- end -->
|
||||||
|
|
||||||
|
<!-- start address as per applicant-->
|
||||||
|
|
||||||
|
<!-- end -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</mat-card-content>
|
||||||
|
</mat-card>
|
||||||
|
|
||||||
|
|
||||||
|
</mat-dialog-content>
|
||||||
|
|
||||||
|
<mat-dialog-actions>
|
||||||
|
<div fxFlex="100" align="end">
|
||||||
|
<button mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" type="button" matTooltip="Save" matTooltipPosition="above" (click)="saveRental(_rentalForm.value)"><mat-icon>save</mat-icon></button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</mat-dialog-actions>
|
||||||
|
</form>
|
||||||
|
<notifier-container></notifier-container>
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
.paragraph_change {
|
||||||
|
color: #fff !important;
|
||||||
|
background-color: #e00201 !important;
|
||||||
|
}
|
||||||
|
mat-form-field {
|
||||||
|
margin: 0 2%;
|
||||||
|
}
|
||||||
|
::ng-deep .cdk-global-overlay-wrapper{
|
||||||
|
justify-content: center !important;
|
||||||
|
}
|
||||||
|
.align-margin {
|
||||||
|
margin-left: 25%;
|
||||||
|
}
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { RentalVerificationComponent } from './rental-verification.component';
|
||||||
|
|
||||||
|
describe('RentalVerificationComponent', () => {
|
||||||
|
let component: RentalVerificationComponent;
|
||||||
|
let fixture: ComponentFixture<RentalVerificationComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ RentalVerificationComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(RentalVerificationComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,294 @@
|
|||||||
|
import { Component, OnInit, Input, Output, Inject } from '@angular/core';
|
||||||
|
import { FormBuilder, FormGroup, Validators, FormControl, FormArray } from '@angular/forms';
|
||||||
|
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA , DialogPosition} from '@angular/material';
|
||||||
|
import { NotifierService } from 'angular-notifier';
|
||||||
|
import { PdTrigerService } from './../../../../../pd-service/pd-triger.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-rental-verification',
|
||||||
|
templateUrl: './rental-verification.component.html',
|
||||||
|
styleUrls: ['./rental-verification.component.scss']
|
||||||
|
})
|
||||||
|
export class RentalVerificationComponent implements OnInit {
|
||||||
|
customer_segment_abbr: any;
|
||||||
|
subproduct_abbr: any;
|
||||||
|
lender_applicant_id: any;
|
||||||
|
main_applicant: any;
|
||||||
|
pageTitle: string = "Rental Information";
|
||||||
|
public _neighbourhoodForm: FormGroup;
|
||||||
|
pdid : string;
|
||||||
|
form_id:number;
|
||||||
|
private notifier: NotifierService;
|
||||||
|
public _rentalForm: FormGroup;
|
||||||
|
existCompanyList: any =[];
|
||||||
|
mergeCompanyApplicant: any=[];
|
||||||
|
personType: any=[{id:2,name:"Tenant / Lessee"},{id:3,name:"Owner of the Rented Property"},{id:4,name:"Property Caretaker"},{id:1,name:"Others (Please Specify)"}];
|
||||||
|
relationShipList: any=[];
|
||||||
|
relationToList: any=[];
|
||||||
|
rentAmtInwords : String;
|
||||||
|
paymentOptions: any=[{id:1,name:"Received in Cash"},{id:2,name:"Received through Banking Channel"},{id:3,name:"Combination of Cash & Bank"}];
|
||||||
|
amountReceivedCash: String;
|
||||||
|
amountReceivedBank: String;
|
||||||
|
securtityDepositAmount: String;
|
||||||
|
propertyNature: any=[{id:2,name:"ResiDential Property"},{id:3,name:"Commercial Property"},{id:4,name:"Industrial Property"},{id:1,name:"Others (Please Specify)"}];
|
||||||
|
unitTypeList: any=[];
|
||||||
|
stateList:any=[];
|
||||||
|
//floorList: any=[{id:1,name:"Ground Floor"},{id:1,name:"First Floor"},{id:1,name:"Second Floor"},{id:1,name:"Third Floor"}]
|
||||||
|
public viewerOptions: any = {
|
||||||
|
navbar: false,
|
||||||
|
toolbar: {
|
||||||
|
zoomIn: 4,
|
||||||
|
zoomOut: 4,
|
||||||
|
oneToOne: 4,
|
||||||
|
reset: 4,
|
||||||
|
prev: 4,
|
||||||
|
play: {
|
||||||
|
show: 4,
|
||||||
|
size: 'large',
|
||||||
|
},
|
||||||
|
next: 4,
|
||||||
|
rotateLeft: 4,
|
||||||
|
rotateRight: 4,
|
||||||
|
flipHorizontal: 4,
|
||||||
|
flipVertical: 4,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
constructor(notifier: NotifierService, private _pd: PdTrigerService ,private _fb: FormBuilder, @Inject(MAT_DIALOG_DATA) public data: any,private dialogRef: MatDialogRef<RentalVerificationComponent>) {
|
||||||
|
this.pdid = this.data.pdmaster_details.pd_id;
|
||||||
|
this.notifier = notifier;
|
||||||
|
this.form_id = 17;
|
||||||
|
this.main_applicant = this.data.pdmaster_details.main_applicant;
|
||||||
|
this.lender_applicant_id = this.data.pdmaster_details.lender_applicant_id;
|
||||||
|
this.subproduct_abbr = this.data.pdmaster_details.subproduct_abbr;
|
||||||
|
this.customer_segment_abbr = this.data.pdmaster_details.customer_segment_abbr;
|
||||||
|
// get applicant list
|
||||||
|
this.data.pdapplicants_detials.push({'pd_co_applicant_id':'0','applicant_name':'Others'});
|
||||||
|
let modifyApplicantList: any=[];
|
||||||
|
if(this.data.pdapplicants_detials.length > 0){
|
||||||
|
modifyApplicantList = this.data.pdapplicants_detials.map(element => {
|
||||||
|
return {id:element.pd_co_applicant_id,name:element.applicant_name,group_id:2};
|
||||||
|
});
|
||||||
|
this.mergeCompanyApplicant.push({groupName:'APPLICANTS',groupValues:modifyApplicantList})
|
||||||
|
|
||||||
|
}
|
||||||
|
// set unit type list details
|
||||||
|
let resiDentialProperty = [{id:2,name:'Independent Flat',group_id:1},{id:3,name:'Independent Flat',group_id:1},{id:4,name:'Independent Floor',group_id:1},
|
||||||
|
{id:5,name:'Independent Bungalow',group_id:1},{id:6,name:'Independent Row House',group_id:1},{id:7,name:'Multi Storey Building',group_id:1},{id:1,name:'Other (Please Specify)',group_id:1}];
|
||||||
|
|
||||||
|
let commercialProperty = [{id:2,name:'Independent Office',group_id:2},{id:3,name:'Independent Shop',group_id:2},{id:4,name:'Warehouse/Godown',group_id:2},
|
||||||
|
{id:5,name:'Workshop',group_id:2},{id:6,name:'Independent Clinic',group_id:2},{id:7,name:'Multi Storey Building',group_id:2},{id:1,name:'Other (Please Specify)',group_id:2}];
|
||||||
|
|
||||||
|
let industrialProperty = [{id:2,name:'Factory',group_id:3},{id:3,name:'Industrial Shed',group_id:3},{id:1,name:'Other (Please Specify)',group_id:3}];
|
||||||
|
|
||||||
|
this.unitTypeList.push({groupName:'Residential Property',groupValues:resiDentialProperty});
|
||||||
|
this.unitTypeList.push({groupName:'Commercial Property',groupValues:commercialProperty});
|
||||||
|
this.unitTypeList.push({groupName:'Industrial Property',groupValues:industrialProperty});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
this.initRentalForm();
|
||||||
|
this.getMasterDetails('RELATIONSHIPS', 1);
|
||||||
|
this.getMasterDetails('COMPANYRELATIONSHIPS', 2);
|
||||||
|
this._pd.getCompaniesListsForBusiness(this.pdid).subscribe(data=>{
|
||||||
|
if(data.dataStatus){
|
||||||
|
let modifyCompanyList: any;
|
||||||
|
modifyCompanyList = data.records.filter(val =>val.is_active==true && val.is_company_applicant==true);
|
||||||
|
if(modifyCompanyList.length>0){
|
||||||
|
modifyCompanyList = modifyCompanyList.map(element => {
|
||||||
|
return {id:element.company_order_id.toString(),name:element.company_name,group_id:1};
|
||||||
|
});
|
||||||
|
this.mergeCompanyApplicant.push({groupName:'COMPANIES',groupValues:modifyCompanyList})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// observe person met controls
|
||||||
|
this._rentalForm.controls['person_met'].valueChanges.subscribe(val => {
|
||||||
|
if(val && val.length>0){
|
||||||
|
let otherPersonMetCheck = val.filter(fVal=>fVal.id==0);
|
||||||
|
otherPersonMetCheck.length>0 ? this._rentalForm.addControl('other_person_met', new FormControl('', Validators.required)) : this._rentalForm.removeControl('other_person_met');
|
||||||
|
otherPersonMetCheck.length>0 ? this._rentalForm.addControl('other_name_person_showing_property', new FormControl('', Validators.required)) : this._rentalForm.removeControl('other_name_person_showing_property');
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this._rentalForm.removeControl('other_person_met');
|
||||||
|
this._rentalForm.removeControl('other_name_person_showing_property');
|
||||||
|
this._rentalForm.removeControl('other_name_person_type');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// observe owner of the property
|
||||||
|
this._rentalForm.controls['property_owner'].valueChanges.subscribe(val => {
|
||||||
|
if(val && val.length>0){
|
||||||
|
let otherOwnerCheck = val.filter(fVal=>fVal.id==0);
|
||||||
|
otherOwnerCheck.length>0 ? this._rentalForm.addControl('property_owner_other', new FormControl('', Validators.required)) : this._rentalForm.removeControl('property_owner_other');
|
||||||
|
otherOwnerCheck.length>0 ? this._rentalForm.addControl('property_owner_other_relationship', new FormControl('', Validators.required)) : this._rentalForm.removeControl('property_owner_other_relationship');
|
||||||
|
otherOwnerCheck.length>0 ? this._rentalForm.addControl('property_owner_other_relation_to', new FormControl('', Validators.required)) : this._rentalForm.removeControl('property_owner_other_relation_to');
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this._rentalForm.removeControl('property_owner_other');
|
||||||
|
this._rentalForm.removeControl('property_owner_other_relationship');
|
||||||
|
this._rentalForm.removeControl('other_name_person_type');
|
||||||
|
this._rentalForm.removeControl('property_owner_other_relation_to');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// mode of payment is both cash and bank means genereate dynamic fields
|
||||||
|
this._rentalForm.controls['payment_mode'].valueChanges.subscribe(val => {
|
||||||
|
val ? this._rentalForm.addControl('payment_received_reason', new FormControl('')) : this._rentalForm.removeControl('payment_received_reason');
|
||||||
|
|
||||||
|
if(val && val.id==1){
|
||||||
|
this._rentalForm.addControl('amount_received_cash', new FormControl('', Validators.required));
|
||||||
|
this._rentalForm.removeControl('amount_received_bank'); val.id==2 ? this._rentalForm.addControl('amount_received_bank', new FormControl('', Validators.required)) : this._rentalForm.removeControl('amount_received_bank');
|
||||||
|
}
|
||||||
|
else if(val && val.id==2){
|
||||||
|
this._rentalForm.addControl('amount_received_bank', new FormControl('', Validators.required));
|
||||||
|
this._rentalForm.removeControl('amount_received_cash');
|
||||||
|
}
|
||||||
|
else if(val && val.id==3){
|
||||||
|
this._rentalForm.addControl('amount_received_cash', new FormControl('', Validators.required));
|
||||||
|
this._rentalForm.addControl('amount_received_bank', new FormControl('', Validators.required));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this._rentalForm.removeControl('amount_received_cash');
|
||||||
|
this._rentalForm.removeControl('amount_received_bank');
|
||||||
|
this._rentalForm.removeControl('payment_received_reason');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// observe other property type
|
||||||
|
this._rentalForm.controls['nature_property'].valueChanges.subscribe(val => {
|
||||||
|
val.id==1 ? this._rentalForm.addControl('other_nature_property', new FormControl('', Validators.required)) : this._rentalForm.removeControl('other_nature_property');
|
||||||
|
});
|
||||||
|
|
||||||
|
// observe unit type changes
|
||||||
|
this._rentalForm.controls['unit_type'].valueChanges.subscribe(val => {
|
||||||
|
val.id==1 ? this._rentalForm.addControl('other_unit_type', new FormControl('', Validators.required)) : this._rentalForm.removeControl('other_unit_type');
|
||||||
|
val.group_id==1 && val.id==7 ? this._rentalForm.addControl('no_floor', new FormControl('', Validators.required)) : val.group_id==2 && val.id==7 ? this._rentalForm.addControl('no_floor', new FormControl('', Validators.required)) : this._rentalForm.removeControl('no_floor');
|
||||||
|
val.group_id==1 && val.id==7 ? this._rentalForm.addControl('floor_details', this._fb.array([])) : val.group_id==2 && val.id==7 ? this._rentalForm.addControl('floor_details', this._fb.array([])) : this._rentalForm.removeControl('floor_details');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
initRentalForm() {
|
||||||
|
return this._rentalForm = this._fb.group({
|
||||||
|
pdid: this.pdid,
|
||||||
|
formid: this.form_id,
|
||||||
|
person_met: ['',Validators.required],
|
||||||
|
property_owner: ['',Validators.required],
|
||||||
|
monthly_rent_amount: ['',Validators.required],
|
||||||
|
payment_mode: ['',Validators.required],
|
||||||
|
securtity_deposit_amount: ['',Validators.required],
|
||||||
|
nature_property: ['',Validators.required],
|
||||||
|
unit_type:['',Validators.required],
|
||||||
|
address:['',Validators.required],
|
||||||
|
state:['',Validators.required],
|
||||||
|
city:['',Validators.required],
|
||||||
|
pincode:['',Validators.required]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// other_name_person_showing_property changes
|
||||||
|
personShowingChanges(value: any): void {
|
||||||
|
if(value.length>0){
|
||||||
|
let otherCheck: any = value.filter(fVal=>fVal.id==1);
|
||||||
|
otherCheck.length >0 ? this._rentalForm.addControl('other_name_person_type', new FormControl('', Validators.required)) : this._rentalForm.removeControl('other_name_person_type');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this._rentalForm.removeControl('other_name_person_type');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*** get all master details **/
|
||||||
|
getMasterDetails(table: string, type: number) {
|
||||||
|
this._pd.getAllMasterDatas(table).subscribe(
|
||||||
|
data => {
|
||||||
|
if (data.status == 200) {
|
||||||
|
if (type == 1) {
|
||||||
|
let relationshipList: any = data.records.filter(item => item.isactive == 1).map(element => {
|
||||||
|
return {id:element.relationship_id.toString(),name:element.name,group_id:1};
|
||||||
|
});
|
||||||
|
relationshipList.length > 0 ? this.relationShipList.push({groupName:'Personal',groupValues:relationshipList}):'';
|
||||||
|
}
|
||||||
|
if (type == 2) {
|
||||||
|
let companyRelationShipList:any = data.records.filter(item => item.isactive == 1 && item.name != 'Others').map(element => {
|
||||||
|
return {id:element.company_relationship_id.toString(),name:element.name,group_id:2};
|
||||||
|
});
|
||||||
|
companyRelationShipList.length > 0 ? this.relationShipList.push({groupName:'Official',groupValues:companyRelationShipList}):'';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// generate floor rows
|
||||||
|
generateFloor(e:any): void{
|
||||||
|
let control = <FormArray>this._rentalForm.controls['floor_details'];
|
||||||
|
if(e.target.value && Math.round(e.target.value)!=0){
|
||||||
|
|
||||||
|
if(Math.round(e.target.value) > this._rentalForm.value.floor_details.length){
|
||||||
|
let rowValue = Math.round(e.target.value)-this._rentalForm.value.floor_details.length;
|
||||||
|
for(let i=rowValue;i>0;i--){
|
||||||
|
control.push(this.createFloorDetails(''));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(Math.round(e.target.value) < this._rentalForm.value.floor_details.length){
|
||||||
|
let rowValue = this._rentalForm.value.floor_details.length-Math.round(e.target.value);
|
||||||
|
for(let i=rowValue;i>0;i--){
|
||||||
|
control.removeAt(this._rentalForm.value.floor_details.length-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(e.target.value && Math.round(e.target.value)==0){
|
||||||
|
control.controls = [];
|
||||||
|
control.setValue([]);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
control.controls = [];
|
||||||
|
control.setValue([]);
|
||||||
|
}
|
||||||
|
e.stopPropagation();
|
||||||
|
}
|
||||||
|
|
||||||
|
// create floor details
|
||||||
|
createFloorDetails(details){
|
||||||
|
if(details){
|
||||||
|
return this._fb.group({
|
||||||
|
floor_level: [this._rentalForm.value.floor_details.length==0 ? 'Ground Floor' : this._rentalForm.value.floor_details.length+' Floor', Validators.compose([Validators.required])],
|
||||||
|
no_units_on_floor: ['', Validators.compose([Validators.required])],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
return this._fb.group({
|
||||||
|
floor_level: [this._rentalForm.value.floor_details.length==0 ? 'Ground Floor' : this._rentalForm.value.floor_details.length+' Floor', Validators.compose([Validators.required])],
|
||||||
|
no_units_in_floor: ['', Validators.compose([Validators.required])],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
// compare objects for merge two master table details
|
||||||
|
compareObjects(o1: any, o2: any) {
|
||||||
|
if(o1.id == o2.id && o1.group_id == o2.group_id)
|
||||||
|
return true;
|
||||||
|
else return false
|
||||||
|
}
|
||||||
|
/** Amount InWords */
|
||||||
|
inWords(e,flag){
|
||||||
|
switch(flag){
|
||||||
|
case 1:
|
||||||
|
this.rentAmtInwords = this._pd.convertNumberToWords(e.target.value);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
this.amountReceivedCash = this._pd.convertNumberToWords(e.target.value);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
this.amountReceivedBank = this._pd.convertNumberToWords(e.target.value);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
this.securtityDepositAmount = this._pd.convertNumberToWords(e.target.value);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
e.stopPropagation();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -17,7 +17,6 @@ import {StockComponent} from './forms/stock/stock.component';
|
|||||||
import {CurrentLoanComponent} from './forms/current-loan/current-loan.component';
|
import {CurrentLoanComponent} from './forms/current-loan/current-loan.component';
|
||||||
import {FinancialInfoComponent} from './forms/financial-info/financial-info.component';
|
import {FinancialInfoComponent} from './forms/financial-info/financial-info.component';
|
||||||
import {AssetsInfoComponent} from './forms/assets-info/assets-info.component';
|
import {AssetsInfoComponent} from './forms/assets-info/assets-info.component';
|
||||||
import {RentalInfoComponent} from './forms/rental-info/rental-info.component';
|
|
||||||
import {AssessedIncomeComponent} from './forms/assessed-income/assessed-income.component';
|
import {AssessedIncomeComponent} from './forms/assessed-income/assessed-income.component';
|
||||||
import {BankingDetailsComponent} from './forms/banking-details/banking-details.component';
|
import {BankingDetailsComponent} from './forms/banking-details/banking-details.component';
|
||||||
import {BusinessInfoComponent} from './forms/business-info/business-info.component';
|
import {BusinessInfoComponent} from './forms/business-info/business-info.component';
|
||||||
@ -29,6 +28,8 @@ import {FinalRemarksComponent} from './forms/final-remarks/final-remarks.compone
|
|||||||
import { BusinessInfoGroupComponent } from './forms/business-info-group/business-info-group.component';
|
import { BusinessInfoGroupComponent } from './forms/business-info-group/business-info-group.component';
|
||||||
import { BusinessAssetsInfoComponent } from './forms/business-assets-info/business-assets-info.component';
|
import { BusinessAssetsInfoComponent } from './forms/business-assets-info/business-assets-info.component';
|
||||||
import { PdStatusChangeDialogueComponent } from './../pd-status-change-dialogue/pd-status-change-dialogue.component';
|
import { PdStatusChangeDialogueComponent } from './../pd-status-change-dialogue/pd-status-change-dialogue.component';
|
||||||
|
import {RentalVerificationComponent} from './forms/rental-verification/rental-verification.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-start-pd',
|
selector: 'app-start-pd',
|
||||||
templateUrl: './start-pd.component.html',
|
templateUrl: './start-pd.component.html',
|
||||||
@ -396,7 +397,7 @@ export class StartPdComponent implements OnInit, OnDestroy {
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
if(this.selectedFormsCategory.form_id==17){
|
if(this.selectedFormsCategory.form_id==17){
|
||||||
const dialogRef = this.dialog.open(RentalInfoComponent, {
|
const dialogRef = this.dialog.open(RentalVerificationComponent, {
|
||||||
data: this.pdFullDetails,
|
data: this.pdFullDetails,
|
||||||
// position: { right: '0'},
|
// position: { right: '0'},
|
||||||
maxWidth: '100vw',
|
maxWidth: '100vw',
|
||||||
|
|||||||
@ -113,6 +113,7 @@ import { PdLocatedMapViewDirective } from './../pd-directive/pd-located-map-view
|
|||||||
import { ViewLocationComponent } from './../pd-directive/view-location/view-location.component';
|
import { ViewLocationComponent } from './../pd-directive/view-location/view-location.component';
|
||||||
import { GetAnswerableFormsPipe } from './../pd-pipes/get-answerable-forms.pipe';
|
import { GetAnswerableFormsPipe } from './../pd-pipes/get-answerable-forms.pipe';
|
||||||
import { ConfirmAiDetailsComponent } from './list-pd/start-pd/forms/assessed-income/confirm-ai-details/confirm-ai-details.component';
|
import { ConfirmAiDetailsComponent } from './list-pd/start-pd/forms/assessed-income/confirm-ai-details/confirm-ai-details.component';
|
||||||
|
import { RentalVerificationComponent } from './list-pd/start-pd/forms/rental-verification/rental-verification.component';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Custom angular notifier options
|
* Custom angular notifier options
|
||||||
@ -159,7 +160,7 @@ const pdCustomNotifierOptions: NotifierOptions = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [RentalInfoComponent, TelePdAllocationComponent, FinancialInfoComponent, BusinessInfoComponent, EmploymentInfoComponent, StockComponent, BankingDetailsComponent, ListPdComponent, FamilyDetailsComponent, AddressComponent, ManagePdComponent, MapPdViewComponent, AddPdComponent, ViewPdComponent, PdAllocationComponent, SmartPdAllocationComponent, SchedulePdComponent, EditPdApplicantComponent, EditPdMasterComponent, StartPdComponent, InprogressPdComponent, AllPdComponent, ScheduledPdComponent, CompletedPdComponent, QcCompletedPdComponent, ClientInfoComponent, CurrentLoanComponent, AssetsInfoComponent, LoanDetailsComponent, OtherIncomeComponent, SupplierInfoComponent, PersonalInfoComponent, LenderRepresentativeComponent, PdReportComponent, AssessedIncomeComponent, AllocationViewMoreComponent, PdRequirementComponent, GeneralInfoComponent, ModelEditPdReportComponent, OtherApplicantDetailsComponent, NeighbourHoodComponent, DialogChangeCurrentVenrsion, FinalRemarksComponent, BusinessOtherFamilyMemberComponent, QcReviewComponent, BusinessInfoGroupComponent, SearchRelationPipe, DeleteRecordsCountPipe, BusinessAssetsInfoComponent, BusinessBankingDetailsComponent, SalesDetailsComponent, DailySalesDetailsComponent, SalesCalculationComponent, ManageSalesComponent, PurchaseDetailsComponent, BusinessExpenseDetailsComponent, HouseHoldDetailsComponent, OtherBusinessIncomeDetailsComponent, ManagePurchaseComponent, ManageBusinesExpenseComponent, ManageHouseHoldComponent, ManageOtherBusinessIncomeComponent, GrossProfitCalculationComponent, ManageDailySalesComponent, PdStatusChangeDialogueComponent, PdLocatedMapViewDirective, ViewLocationComponent, GetAnswerableFormsPipe, ConfirmAiDetailsComponent],
|
declarations: [RentalInfoComponent, TelePdAllocationComponent, FinancialInfoComponent, BusinessInfoComponent, EmploymentInfoComponent, StockComponent, BankingDetailsComponent, ListPdComponent, FamilyDetailsComponent, AddressComponent, ManagePdComponent, MapPdViewComponent, AddPdComponent, ViewPdComponent, PdAllocationComponent, SmartPdAllocationComponent, SchedulePdComponent, EditPdApplicantComponent, EditPdMasterComponent, StartPdComponent, InprogressPdComponent, AllPdComponent, ScheduledPdComponent, CompletedPdComponent, QcCompletedPdComponent, ClientInfoComponent, CurrentLoanComponent, AssetsInfoComponent, LoanDetailsComponent, OtherIncomeComponent, SupplierInfoComponent, PersonalInfoComponent, LenderRepresentativeComponent, PdReportComponent, AssessedIncomeComponent, AllocationViewMoreComponent, PdRequirementComponent, GeneralInfoComponent, ModelEditPdReportComponent, OtherApplicantDetailsComponent, NeighbourHoodComponent, DialogChangeCurrentVenrsion, FinalRemarksComponent, BusinessOtherFamilyMemberComponent, QcReviewComponent, BusinessInfoGroupComponent, SearchRelationPipe, DeleteRecordsCountPipe, BusinessAssetsInfoComponent, BusinessBankingDetailsComponent, SalesDetailsComponent, DailySalesDetailsComponent, SalesCalculationComponent, ManageSalesComponent, PurchaseDetailsComponent, BusinessExpenseDetailsComponent, HouseHoldDetailsComponent, OtherBusinessIncomeDetailsComponent, ManagePurchaseComponent, ManageBusinesExpenseComponent, ManageHouseHoldComponent, ManageOtherBusinessIncomeComponent, GrossProfitCalculationComponent, ManageDailySalesComponent, PdStatusChangeDialogueComponent, PdLocatedMapViewDirective, ViewLocationComponent, GetAnswerableFormsPipe, ConfirmAiDetailsComponent, RentalVerificationComponent],
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
ManagePdRoutingModule,
|
ManagePdRoutingModule,
|
||||||
@ -192,13 +193,13 @@ const pdCustomNotifierOptions: NotifierOptions = {
|
|||||||
AgmCoreModule.forRoot({apiKey: 'AIzaSyBtdO5k6CRntAMJCF-H5uZjTCoSGX95cdk'}),OwlDateTimeModule,
|
AgmCoreModule.forRoot({apiKey: 'AIzaSyBtdO5k6CRntAMJCF-H5uZjTCoSGX95cdk'}),OwlDateTimeModule,
|
||||||
OwlNativeDateTimeModule,
|
OwlNativeDateTimeModule,
|
||||||
],
|
],
|
||||||
exports: [PdAllocationComponent, SmartPdAllocationComponent, TelePdAllocationComponent, SchedulePdComponent, EditPdApplicantComponent, EditPdMasterComponent, StartPdComponent, CompletedPdComponent, QcCompletedPdComponent, ClientInfoComponent, SupplierInfoComponent, PersonalInfoComponent, CurrentLoanComponent, LoanDetailsComponent, OtherIncomeComponent, AssetsInfoComponent, AddressComponent, FamilyDetailsComponent, BankingDetailsComponent, StockComponent, EmploymentInfoComponent, BusinessInfoComponent, FinancialInfoComponent, LenderRepresentativeComponent,RentalInfoComponent, AssessedIncomeComponent, AllocationViewMoreComponent, GeneralInfoComponent, PdRequirementComponent, OtherApplicantDetailsComponent, NeighbourHoodComponent, BusinessOtherFamilyMemberComponent, BusinessInfoGroupComponent,DailySalesDetailsComponent, SalesCalculationComponent, PurchaseDetailsComponent, BusinessExpenseDetailsComponent, HouseHoldDetailsComponent, OtherBusinessIncomeDetailsComponent, ManageSalesComponent, ManagePurchaseComponent, ManageBusinesExpenseComponent, ManageHouseHoldComponent, ManageOtherBusinessIncomeComponent, GrossProfitCalculationComponent, ManageDailySalesComponent, PdStatusChangeDialogueComponent, ViewLocationComponent, ConfirmAiDetailsComponent],
|
exports: [PdAllocationComponent, SmartPdAllocationComponent, TelePdAllocationComponent, SchedulePdComponent, EditPdApplicantComponent, EditPdMasterComponent, StartPdComponent, CompletedPdComponent, QcCompletedPdComponent, ClientInfoComponent, SupplierInfoComponent, PersonalInfoComponent, CurrentLoanComponent, LoanDetailsComponent, OtherIncomeComponent, AssetsInfoComponent, AddressComponent, FamilyDetailsComponent, BankingDetailsComponent, StockComponent, EmploymentInfoComponent, BusinessInfoComponent, FinancialInfoComponent, LenderRepresentativeComponent,RentalInfoComponent, AssessedIncomeComponent, AllocationViewMoreComponent, GeneralInfoComponent, PdRequirementComponent, OtherApplicantDetailsComponent, NeighbourHoodComponent, BusinessOtherFamilyMemberComponent, BusinessInfoGroupComponent,DailySalesDetailsComponent, SalesCalculationComponent, PurchaseDetailsComponent, BusinessExpenseDetailsComponent, HouseHoldDetailsComponent, OtherBusinessIncomeDetailsComponent, ManageSalesComponent, ManagePurchaseComponent, ManageBusinesExpenseComponent, ManageHouseHoldComponent, ManageOtherBusinessIncomeComponent, GrossProfitCalculationComponent, ManageDailySalesComponent, PdStatusChangeDialogueComponent, ViewLocationComponent, ConfirmAiDetailsComponent, RentalVerificationComponent],
|
||||||
providers: [PdTrigerService, GetGeometricLocationService,{provide: MAT_DATE_LOCALE, useValue: 'en-GB'},
|
providers: [PdTrigerService, GetGeometricLocationService,{provide: MAT_DATE_LOCALE, useValue: 'en-GB'},
|
||||||
{provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]},
|
{provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]},
|
||||||
{provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS}, PdLocatedMapViewDirective],
|
{provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS}, PdLocatedMapViewDirective],
|
||||||
|
|
||||||
entryComponents: [PdAllocationComponent, SmartPdAllocationComponent, SchedulePdComponent, EditPdApplicantComponent, EditPdMasterComponent, TelePdAllocationComponent, AllocationViewMoreComponent, PersonalInfoComponent,BusinessAssetsInfoComponent,
|
entryComponents: [PdAllocationComponent, SmartPdAllocationComponent, SchedulePdComponent, EditPdApplicantComponent, EditPdMasterComponent, TelePdAllocationComponent, AllocationViewMoreComponent, PersonalInfoComponent,BusinessAssetsInfoComponent,
|
||||||
ClientInfoComponent, SupplierInfoComponent, CurrentLoanComponent, LoanDetailsComponent, OtherIncomeComponent, AssetsInfoComponent, AddressComponent, FamilyDetailsComponent, BankingDetailsComponent, StockComponent, EmploymentInfoComponent, BusinessInfoComponent, FinancialInfoComponent, LenderRepresentativeComponent,RentalInfoComponent, AssessedIncomeComponent, GeneralInfoComponent, PdRequirementComponent, ModelEditPdReportComponent, OtherApplicantDetailsComponent, NeighbourHoodComponent, DialogChangeCurrentVenrsion, FinalRemarksComponent, BusinessOtherFamilyMemberComponent, QcReviewComponent, BusinessInfoGroupComponent,BusinessBankingDetailsComponent, ManageSalesComponent, ManagePurchaseComponent, ManageBusinesExpenseComponent, ManageHouseHoldComponent, ManageOtherBusinessIncomeComponent, ManageDailySalesComponent,PdStatusChangeDialogueComponent, ViewLocationComponent, ConfirmAiDetailsComponent],
|
ClientInfoComponent, SupplierInfoComponent, CurrentLoanComponent, LoanDetailsComponent, OtherIncomeComponent, AssetsInfoComponent, AddressComponent, FamilyDetailsComponent, BankingDetailsComponent, StockComponent, EmploymentInfoComponent, BusinessInfoComponent, FinancialInfoComponent, LenderRepresentativeComponent,RentalInfoComponent, AssessedIncomeComponent, GeneralInfoComponent, PdRequirementComponent, ModelEditPdReportComponent, OtherApplicantDetailsComponent, NeighbourHoodComponent, DialogChangeCurrentVenrsion, FinalRemarksComponent, BusinessOtherFamilyMemberComponent, QcReviewComponent, BusinessInfoGroupComponent,BusinessBankingDetailsComponent, ManageSalesComponent, ManagePurchaseComponent, ManageBusinesExpenseComponent, ManageHouseHoldComponent, ManageOtherBusinessIncomeComponent, ManageDailySalesComponent,PdStatusChangeDialogueComponent, ViewLocationComponent, ConfirmAiDetailsComponent, RentalVerificationComponent],
|
||||||
|
|
||||||
})
|
})
|
||||||
export class ManagePdModule {
|
export class ManagePdModule {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user