diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/rental-verification/rental-verification.component.html b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/rental-verification/rental-verification.component.html index e8e80f279..e6bbb9a9e 100644 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/rental-verification/rental-verification.component.html +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/rental-verification/rental-verification.component.html @@ -18,11 +18,63 @@ + + Property Details + + +
+ +
+ + Address of the Property + + +
+
+ + + State + + + {{stVal.name}} + + + + + City + + + {{ctVal.city_name}} + + + + + + Pincode + + + {{pinVal.pincode}} + + + +
+ Is Address Validated During Visit ? ( {{_rentalForm.value.validate_visited_address===true ? 'Yes' : 'No'}} ) +
+ + Actual Address Visited + + +
+ +
- Name of the Person who is showing the Property to Sineedge Officer + Name of the Person Who is Showing the Property to Sineedge Officer @@ -36,10 +88,10 @@ Specify Other Person - - Who is {{_rentalForm.controls['other_person_met'].value}} + + Who is {{_rentalForm.controls['other_person_met'].value}} ? + formControlName="other_name_person_showing_property" [compareWith]="compareSingleObjects" (selectionChange)="personShowingChanges(_rentalForm.controls['other_name_person_showing_property'].value)" multiple required> {{pType.name}} @@ -47,8 +99,8 @@ - - Specify Other + + Who is {{_rentalForm.controls['other_person_met'].value}} ? @@ -82,119 +134,445 @@ Relation To - {{relationto.name | titlecase}} + {{relationto.id=="0" ? 'Not Applicable' : relationto.name | titlecase}} - - + + + + Ownership Proof Documents Sighted + + Yes + No + + + + Type of Document Sighted + + {{prDocs.name | titlecase}} + + + + Other Type of Document + + + + + + + + + Nature of Let Out Property as per Loan Applicant + + + {{property.name}} + + + + + Other Property + + + + + + Type of Units as per Loan Applicants + + + + {{unit.name}} + + + + + + Specify Other Unit Type + + + + No of Floors + + + + Tot No of Units + + +
- - -
- - - Monthly Rent Amount as per Loan Applicant - - {{"₹"}} {{rentAmtInwords}} Only + + + + + + + + Unit {{u+1}} + + + +
+ + + Name of the Tenant(s)/Lessees(s) of the Let out Property + + Yes + Name(s) not provided + + + + Name of Tenant(s)/Lessees(s) + + + + Why Tenant(s)/Lessees(s) Name not Provided + + + + + + + Monthly Rent Amount as per Loan Applicant + + + {{"₹"}} {{units.value.monthly_rent_amount | numberToWords}} Only + + + Mode of Payment of Rent as per Loan Applicant + + + {{payment.name}} + + + + + Amount Received in Cash + + {{"₹"}} {{units.value.amount_received_cash | numberToWords}} Only + + + + Amount Received in Bank + + {{"₹"}} {{units.value.amount_received_bank | numberToWords}} Only + + + Reason for Receiving Multiple Payment Mode + + + + Securtity Deposit amount as per Loan Applicant + + {{"₹"}} {{units.value.securtity_deposit_amount | numberToWords}} Only + + + + + Area Covered by the Property + + + + + + + Unit of Measurement + + + {{unitM.name}} + + + + + + Other Unit of Measurement + + + + + + Is Rent Agreement executed for the Property let out + + Yes + No + + + + + + + Rent Agreement Seen + + Yes + No + + + + + + Is the Rent Agreement Registered at Sub-Registrar Office + + Yes + No + - - Mode of Payment of Rent as per Loan Applicant + + + + Date of Agreement + + + + + + + No of Months for Which Property has been let out as per Agreement + + + + + Date on which Agreement is Expiring + + + + No of Rental Months Remaining as per Agreement + + + + + + Monthly Rent Amount as per Agreement + + {{"₹"}} {{units.value.agreement_monthly_rent_amount | numberToWords}} Only + + + + + + Security Deposit Amount as per Agreement + + {{"₹"}} {{units.value.agreement_security_deposit_amount | numberToWords}} Only + + + + + + There is a Difference of Rs.{{validateAgreementAmt(units.value.monthly_rent_amount,units.value.agreement_monthly_rent_amount)}} in the rent amount as per agreement and actual rent received. Why? + + + + + + + Name of Owner / Owners of Rented Property as per Rent Agreement + + + + {{val.name}} + + + + + + Specify Other Owner/Owners + + + + Relation of Owner to Rent Agreement + + + + {{relation.name | titlecase}} + + + + + Relation To + + + {{relationto.id=="0" ? 'Not Applicable' : relationto.name | titlecase}} + + + + + + + + Name of Tenants / Lessees as per Rent Agreement + + + + + + + + Tenant(s) / Lessee(s) Met During Visit of the Rented Property + + Yes + No + + + + Name of the Tenant / Lessee Met + + + + + Why Tenant / Lessee not Met ? + + + + + + + Name of Owner as per Tenant / Lessee Met + + + + {{val.name}} + + + + + + Specify Other Owner/Owners + + + + Relation of Owner to Loan Applicant + + + + {{relation.name | titlecase}} + + + + + Relation To + + + {{relationto.id=="0" ? 'Not Applicable' : relationto.name | titlecase}} + + + + + + + + Monthly Rent Amount Paid as per Tenant / Lessee Met + + {{"₹"}} {{units.value.paid_monthly_rent_per_met | numberToWords}} Only + + + + Period (Months) of Stay as per Tenant / Lessee Met + + + + + Mode of Payment of Rent as Validated by PD Officer with Tenant / Lessee During Visit + formControlName="payment_mode_per_met" [compareWith]="compareSingleObjects" (selectionChange)="generatePaymentOptions(units.value,u,2)" required> {{payment.name}} - + Amount Received in Cash - - {{"₹"}} {{amountReceivedCash}} Only + + {{"₹"}} {{units.value.amount_received_cash_per_met | numberToWords}} Only - + Amount Received in Bank - - {{"₹"}} {{amountReceivedBank}} Only + + {{"₹"}} {{units.value.amount_received_bank_per_met | numberToWords}} Only - - Payment Received Reason - + + Reason for Receiving Multiple Payment Mode + - - Securtity Deposit amount as per Loan Applicant - - {{"₹"}} {{securtityDepositAmount}} Only - - - -
-
-
+ + + + What is the Reason for Difference in Rent Amount or Mode of Payment + + + + + +
+ +
+ + + +
+ +
+
+ +
+
+ + + + + + Third Party Check + +
- - - Nature of Let Out property as per Loan Applicant - - - {{property.name}} - + + + Third party check done on prevailing rent in the area + + Yes + No - - - Other Property - - - - - - - Type of Units as per Loan Applicants - - - - {{unit.name}} - - - - - - Other Units - - - - No Floor - - -
-
-
- - Floor Level - - - - - No of Units on the Floor - - -
-
-
- +
- + + Name of person with whom Third Party Check on going rentals in the area done + + + + Description of the person with whom the Third Party Check is done + + + + Rental rates in the area as per the person with whom Third Party Check is done + + + + Why Third party check not done + + + + + + - -
diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/rental-verification/rental-verification.component.scss b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/rental-verification/rental-verification.component.scss index 183e27284..2fd9cea87 100644 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/rental-verification/rental-verification.component.scss +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/rental-verification/rental-verification.component.scss @@ -9,5 +9,6 @@ justify-content: center !important; } .align-margin { - margin-left: 25%; + margin-left: 4%; + margin-right: 4%; } diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/rental-verification/rental-verification.component.ts b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/rental-verification/rental-verification.component.ts index c186fea7e..8f716ffc3 100644 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/rental-verification/rental-verification.component.ts +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/rental-verification/rental-verification.component.ts @@ -1,15 +1,19 @@ 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 { DatePipe } from '@angular/common'; +import { Pipe, PipeTransform } from '@angular/core'; 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'] + styleUrls: ['./rental-verification.component.scss'], }) export class RentalVerificationComponent implements OnInit { + + pipe = new DatePipe('en-US'); customer_segment_abbr: any; subproduct_abbr: any; lender_applicant_id: any; @@ -27,13 +31,15 @@ export class RentalVerificationComponent implements OnInit { 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=[]; + cityList:any=[]; + pincodeList:any=[]; + documentList: any=[{id:2,name:"Property Title Document"},{id:3,name:"Electricity Bill with name of owner mentioned therein"},{id:4,name:"Property tax Receipts"},{id:1,name:"Others (Please Specify)"}]; //floorList: any=[{id:1,name:"Ground Floor"},{id:1,name:"First Floor"},{id:1,name:"Second Floor"},{id:1,name:"Third Floor"}] + //unitMeasurementList: any=[{id:2,name:"Square Feet"},{id:3,name:"Square Yards"},{id:4,name:"Square Meters"},{id:5,name:"Acres"},{id:6,name:"Hectares"},{id:1,name:"Others (Please Specify)"}]; + unitMeasurementList: any=[]; public viewerOptions: any = { navbar: false, toolbar: { @@ -91,6 +97,8 @@ export class RentalVerificationComponent implements OnInit { this.initRentalForm(); this.getMasterDetails('RELATIONSHIPS', 1); this.getMasterDetails('COMPANYRELATIONSHIPS', 2); + this.getMasterDetails('STATE',3); + this.getMasterDetails('UOM',4); this._pd.getCompaniesListsForBusiness(this.pdid).subscribe(data=>{ if(data.dataStatus){ let modifyCompanyList: any; @@ -103,12 +111,16 @@ export class RentalVerificationComponent implements OnInit { } } }); + //load form details with data + this.loadFormData(); // 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'); + otherPersonMetCheck.length>0 ? '' : this._rentalForm.removeControl('other_name_person_type'); + } else { @@ -133,58 +145,68 @@ export class RentalVerificationComponent implements OnInit { 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 => { + 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'); + val.group_id==1 && val.id==7 ? this._rentalForm.addControl('no_floor', new FormControl('')) : val.group_id==2 && val.id==7 ? this._rentalForm.addControl('no_floor', new FormControl('')) : this._rentalForm.removeControl('no_floor'); }); + + // observe visit address + this._rentalForm.controls['validate_visited_address'].valueChanges.subscribe(val => { + if(val===false){ + this._rentalForm.addControl('other_visited_address', new FormControl('', Validators.required)); + } + else { + this._rentalForm.removeControl('other_visited_address'); + } + }); + // get city list based on state changes + this._rentalForm.controls['state'].valueChanges.subscribe(val => { + this._pd.getStateWiseCities(val).subscribe(data => { + if (data.status == 200) { + this.cityList = data.records.cities; + this.pincodeList = data.records.pincode; + } + }); + }); + + // ownership property documents during the visit + this._rentalForm.controls['property_ownership_proof_documents'].valueChanges.subscribe(val => { + val=="1" ? this._rentalForm.addControl('sighted_documents', new FormControl('', Validators.required)) : this._rentalForm.removeControl('sighted_documents'); + val=="1" ? '' : this._rentalForm.removeControl('other_sighted_documents'); + }); + + // listen third party check + this._rentalForm.controls['done_third_party_check'].valueChanges.subscribe(val => { + val=="1" ? this._rentalForm.addControl('whom_third_party_check_done', new FormControl('', Validators.required)) : this._rentalForm.removeControl('whom_third_party_check_done'); + val=="1" ? this._rentalForm.addControl('description_third_party_check_done', new FormControl('', Validators.required)) : this._rentalForm.removeControl('description_third_party_check_done'); + val=="1" ? this._rentalForm.addControl('rental_rates_third_party_check_done', new FormControl('', Validators.required)) : this._rentalForm.removeControl('rental_rates_third_party_check_done'); + val=="0" ? this._rentalForm.addControl('why_third_party_check_not_done', new FormControl('', Validators.required)) : this._rentalForm.removeControl('why_third_party_check_not_done'); + }); } 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], + address_property:['',Validators.required], state:['',Validators.required], city:['',Validators.required], - pincode:['',Validators.required] + pincode:['',Validators.required], + validate_visited_address:[true], + person_met: ['',Validators.required], + property_owner: ['',Validators.required], + property_ownership_proof_documents: ['',Validators.required], + nature_property: ['',Validators.required], + unit_type:['',Validators.required], + no_units:[''], + property_unit_details : this._fb.array([]), + done_third_party_check :['',Validators.required], }); } // other_name_person_showing_property changes @@ -198,6 +220,11 @@ else { } } +// dynamic form control generate for other documents sighted +getSightedDocs(value): void{ + value.id==1 ? this._rentalForm.addControl('other_sighted_documents', new FormControl('', Validators.required)) : this._rentalForm.removeControl('other_sighted_documents'); +} + /*** get all master details **/ getMasterDetails(table: string, type: number) { this._pd.getAllMasterDatas(table).subscribe( @@ -209,91 +236,504 @@ getMasterDetails(table: string, type: number) { }); relationshipList.length > 0 ? this.relationShipList.push({groupName:'Personal',groupValues:relationshipList}):''; } - if (type == 2) { + else 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}):''; } + else if(type==3) { + this.stateList = data.records.filter(item => item.isactive == 1); + } + else if(type==4){ + this.unitMeasurementList = data.records.filter(item => item.isactive == 1 && item.is_land_uom == 1 || item.is_land_uom == 2).map(mval=>({id : mval.uom_id , name:mval.name})) + + } } }); } -// generate floor rows -generateFloor(e:any): void{ - let control = 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('')); +// load form data +loadFormData(){ + let params: any = {}; + params.pd_id = this.pdid; + params.pd_form_id = this.form_id; + this._pd.retriveForm(params).subscribe(data => { + let rentalVal = data.records; + rentalVal.pdid = this.pdid; + rentalVal.formid = this.form_id; + rentalVal.other_name_person_type ? this._rentalForm.addControl('other_name_person_type', new FormControl('', Validators.required)): this._rentalForm.removeControl('other_name_person_type'); + rentalVal.other_sighted_documents ? this._rentalForm.addControl('other_sighted_documents', new FormControl('', Validators.required)) : this._rentalForm.removeControl('other_sighted_documents'); + + // get property unit details + if(data.records.property_unit_details){ + let selectedUnitDetails = Object.keys(data.records.property_unit_details).map(function (key) { + return data.records.property_unit_details[key]; + }); + if(selectedUnitDetails.length>0){ + selectedUnitDetails.forEach((element,index) => { + let control: any = this._rentalForm.controls['property_unit_details']; + control.push(this.createUnitDetails('')); + (element.name_tenant_lessees && element.tenant_lessees_options=="1") ? control.controls[index].addControl('name_tenant_lessees', new FormControl('', Validators.required)) : control.controls[index].removeControl('name_tenant_lessees'); + (element.name_tenant_lessees_reason && element.tenant_lessees_options=="0") ? control.controls[index].addControl('name_tenant_lessees_reason', new FormControl('', Validators.required)) : control.controls[index].removeControl('name_tenant_lessees_reason'); + // for payment options + element.amount_received_cash ? control.controls[index].addControl('amount_received_cash', new FormControl('', Validators.required)) : control.controls[index].removeControl('amount_received_cash'); + element.amount_received_bank ? control.controls[index].addControl('amount_received_bank', new FormControl('', Validators.required)) : control.controls[index].removeControl('amount_received_bank'); + element.payment_received_reason ? control.controls[index].addControl('payment_received_reason', new FormControl('', Validators.required)) : control.controls[index].removeControl('payment_received_reason'); + + // unit of other measurement + element.other_unit_measurement ? control.controls[index].addControl('other_unit_measurement', new FormControl('', Validators.required)) : control.controls[index].removeControl('other_unit_measurement'); + // rent agreement seen + element.rent_agreement_seen ? control.controls[index].addControl('rent_agreement_seen', new FormControl('', Validators.required)) : control.controls[index].removeControl('rent_agreement_seen'); + element.rent_agreement_registered ? control.controls[index].addControl('rent_agreement_registered', new FormControl('', Validators.required)) : control.controls[index].removeControl('rent_agreement_registered'); + element.agreement_date ? control.controls[index].addControl('agreement_date', new FormControl('', Validators.required)) : control.controls[index].removeControl('agreement_date'); + element.agreement_no_months ? control.controls[index].addControl('agreement_no_months', new FormControl('', Validators.required)) : control.controls[index].removeControl('agreement_no_months'); + element.agreement_expiring_date ? control.controls[index].addControl('agreement_expiring_date', new FormControl('', Validators.required)) : control.controls[index].removeControl('agreement_expiring_date'); + element.rental_remaining_months ? control.controls[index].addControl('rental_remaining_months', new FormControl('', Validators.required)) : control.controls[index].removeControl('rental_remaining_months'); + element.agreement_monthly_rent_amount ? control.controls[index].addControl('agreement_monthly_rent_amount', new FormControl('', Validators.required)) : control.controls[index].removeControl('agreement_monthly_rent_amount'); + element.agreement_security_deposit_amount ? control.controls[index].addControl('agreement_security_deposit_amount', new FormControl('', Validators.required)) : control.controls[index].removeControl('agreement_security_deposit_amount'); + element.differences_loanapplicant_rentagreement ? control.controls[index].addControl('differences_loanapplicant_rentagreement', new FormControl('', Validators.required)) : control.controls[index].removeControl('differences_loanapplicant_rentagreement'); + + //agreement owners + element.agreement_property_owners_name ? control.controls[index].addControl('agreement_property_owners_name', new FormControl('', Validators.required)) : control.controls[index].removeControl('agreement_property_owners_name'); + element.agreement_property_owner_other ? control.controls[index].addControl('agreement_property_owner_other', new FormControl('', Validators.required)) : control.controls[index].removeControl('agreement_property_owner_other'); + element.agreement_property_owner_other_relationship ? control.controls[index].addControl('agreement_property_owner_other_relationship', new FormControl('', Validators.required)) : control.controls[index].removeControl('agreement_property_owner_other_relationship'); + element.agreement_property_owner_other_relation_to ? control.controls[index].addControl('agreement_property_owner_other_relation_to', new FormControl('', Validators.required)) : control.controls[index].removeControl('agreement_property_owner_other_relation_to'); + + // name of tenant/lessess as agreement + element.agreement_tenant_lessees_name ? control.controls[index].addControl('agreement_tenant_lessees_name', new FormControl('', Validators.required)) : control.controls[index].removeControl('agreement_tenant_lessees_name'); + + //met tenant details + element.name_tenant_lessees_per_met ? control.controls[index].addControl('name_tenant_lessees_per_met', new FormControl('', Validators.required)) : control.controls[index].removeControl('name_tenant_lessees_per_met'); + element.name_tenant_lessees_reason_per_met ? control.controls[index].addControl('name_tenant_lessees_reason_per_met', new FormControl('', Validators.required)) : control.controls[index].removeControl('name_tenant_lessees_reason_per_met'); + element.property_owner_per_met ? control.controls[index].addControl('property_owner_per_met', new FormControl('', Validators.required)) : control.controls[index].removeControl('property_owner_per_met'); + element.property_owner_other_per_met ? control.controls[index].addControl('property_owner_other_per_met', new FormControl('', Validators.required)) : control.controls[index].removeControl('property_owner_other_per_met'); + element.property_owner_other_relationship_per_met ? control.controls[index].addControl('property_owner_other_relationship_per_met', new FormControl('', Validators.required)) : control.controls[index].removeControl('property_owner_other_relationship_per_met'); + element.property_owner_other_relation_to_per_met ? control.controls[index].addControl('property_owner_other_relation_to_per_met', new FormControl('', Validators.required)) : control.controls[index].removeControl('property_owner_other_relation_to_per_met'); + + // tennat payment + element.paid_monthly_rent_per_met ? control.controls[index].addControl('paid_monthly_rent_per_met', new FormControl('', Validators.required)) : control.controls[index].removeControl('paid_monthly_rent_per_met'); + element.period_of_stay_per_met ? control.controls[index].addControl('period_of_stay_per_met', new FormControl('', Validators.required)) : control.controls[index].removeControl('period_of_stay_per_met'); + element.payment_mode_per_met ? control.controls[index].addControl('payment_mode_per_met', new FormControl('', Validators.required)) : control.controls[index].removeControl('payment_mode_per_met'); + element.amount_received_cash_per_met ? control.controls[index].addControl('amount_received_cash_per_met', new FormControl('', Validators.required)) : control.controls[index].removeControl('amount_received_cash_per_met'); + element.amount_received_bank_per_met ? control.controls[index].addControl('amount_received_bank_per_met', new FormControl('', Validators.required)) : control.controls[index].removeControl('amount_received_bank_per_met'); + element.payment_received_reason_per_met ? control.controls[index].addControl('payment_received_reason_per_met', new FormControl('', Validators.required)) : control.controls[index].removeControl('payment_received_reason_per_met'); + element.payment_difference_per_met ? control.controls[index].addControl('payment_difference_per_met', new FormControl('', Validators.required)) : control.controls[index].removeControl('payment_difference_per_met'); + + }); } } - 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(); + this._rentalForm.patchValue(rentalVal); + }); } -// create floor details -createFloorDetails(details){ - if(details){ +// add more unit details +addMoreUnitDetails(){ + let control: any = this._rentalForm.controls['property_unit_details']; + //control.push(this.createUnitDetails('')); + control.push(this.createUnitDetails('')); +} + + // create unit details + createUnitDetails(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])], - }); + tenant_lessees_options:['1',Validators.required], + name_tenant_lessees:['',Validators.required], + monthly_rent_amount: ['',Validators.required], + payment_mode: ['',Validators.required], + securtity_deposit_amount: ['',Validators.required], + property_cover_area: ['',Validators.required], + unit_measurement: ['',Validators.required], + is_rent_agreement_executed: ['',Validators.required], + met_tenant_lessees_options: ['',Validators.required], + }); + } + + // remove unit + removeUnit(index) { + let control: any = this._rentalForm.controls['property_unit_details']; + control.removeAt(index); + } + + // generate payment dynamic fields + generatePaymentOptions(value:any,index:number,type: number){ + if(type==1){ + let control: any = this._rentalForm.controls['property_unit_details']; + if(value && value.payment_mode.id==1){ + control.controls[index].addControl('amount_received_cash', new FormControl(value.amount_received_cash ? value.amount_received_cash : '', Validators.required)); + control.controls[index].removeControl('amount_received_bank'); + control.controls[index].removeControl('payment_received_reason'); + } + else if(value && value.payment_mode.id==2){ + control.controls[index].addControl('amount_received_bank', new FormControl(value.amount_received_bank ? value.amount_received_bank : '', Validators.required)); + control.controls[index].removeControl('amount_received_cash'); + control.controls[index].removeControl('payment_received_reason'); + } + else if(value && value.payment_mode.id==3){ + control.controls[index].addControl('amount_received_cash', new FormControl(value.amount_received_cash ? value.amount_received_cash : '', Validators.required)); + control.controls[index].addControl('amount_received_bank', new FormControl(value.amount_received_bank ? value.amount_received_bank : '', Validators.required)); + control.controls[index].addControl('payment_received_reason', new FormControl(value.payment_received_reason ? value.payment_received_reason : '', Validators.required)); + } + else { + control.controls[index].removeControl('amount_received_cash'); + control.controls[index].removeControl('amount_received_bank'); + control.controls[index].removeControl('payment_received_reason'); + } + } + else if(type==2){ + let control: any = this._rentalForm.controls['property_unit_details']; + if(value && value.payment_mode_per_met.id==1){ + control.controls[index].addControl('amount_received_cash_per_met', new FormControl(value.amount_received_cash_per_met ? value.amount_received_cash_per_met : '', Validators.required)); + control.controls[index].removeControl('amount_received_bank_per_met'); + control.controls[index].removeControl('payment_received_reason_per_met'); + } + else if(value && value.payment_mode_per_met.id==2){ + control.controls[index].addControl('amount_received_bank_per_met', new FormControl(value.amount_received_bank_per_met ? value.amount_received_bank_per_met : '', Validators.required)); + control.controls[index].removeControl('amount_received_cash_per_met'); + control.controls[index].removeControl('payment_received_reason_per_met'); + } + else if(value && value.payment_mode_per_met.id==3){ + control.controls[index].addControl('amount_received_cash_per_met', new FormControl(value.amount_received_cash_per_met ? value.amount_received_cash_per_met : '', Validators.required)); + control.controls[index].addControl('amount_received_bank_per_met', new FormControl(value.amount_received_bank_per_met ? value.amount_received_bank_per_met : '', Validators.required)); + control.controls[index].addControl('payment_received_reason_per_met', new FormControl(value.payment_received_reason_per_met ? value.payment_received_reason_per_met : '', Validators.required)); + } + else { + control.controls[index].removeControl('amount_received_cash_per_met'); + control.controls[index].removeControl('amount_received_bank_per_met'); + control.controls[index].removeControl('payment_received_reason_per_met'); + } + } + + } + +// tenant/lessees options +generateTenantOptions(value:any,index:number){ + let control: any = this._rentalForm.controls['property_unit_details']; + if(value.tenant_lessees_options=="1"){ + control.controls[index].addControl('name_tenant_lessees', new FormControl('', Validators.required)); + control.controls[index].removeControl('name_tenant_lessees_reason'); + } + else if(value.tenant_lessees_options=="0"){ + control.controls[index].addControl('name_tenant_lessees_reason', new FormControl('', Validators.required)); + control.controls[index].removeControl('name_tenant_lessees'); + } + else { + control.controls[index].removeControl('name_tenant_lessees'); + control.controls[index].removeControl('name_tenant_lessees_reason'); + } + } + + // unit of measurement generate other field + generateOtherunitMeasurement(value: any,index:number){ + let control: any = this._rentalForm.controls['property_unit_details']; + value.unit_measurement.id=="1" ? control.controls[index].addControl('other_unit_measurement', new FormControl('', Validators.required)) : control.controls[index].removeControl('other_unit_measurement'); + +} +// generate Rent AgreementSeen +generateRentAgreementSeen(value: any,index:number){ + let control: any = this._rentalForm.controls['property_unit_details']; + + if(value.is_rent_agreement_executed=="1"){ + control.controls[index].addControl('rent_agreement_seen', new FormControl('', 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])], - }); + control.controls[index].removeControl('rent_agreement_seen'); + // after no + control.controls[index].removeControl('rent_agreement_registered'); + // after No + control.controls[index].removeControl('agreement_date'); + control.controls[index].removeControl('agreement_no_months'); + control.controls[index].removeControl('agreement_expiring_date'); + control.controls[index].removeControl('rental_remaining_months'); + control.controls[index].removeControl('agreement_monthly_rent_amount'); + control.controls[index].removeControl('agreement_security_deposit_amount'); + control.controls[index].removeControl('agreement_property_owners_name'); + control.controls[index].removeControl('agreement_tenant_lessees_name'); + control.controls[index].removeControl('differences_loanapplicant_rentagreement'); + // remove agrement other ownres + control.controls[index].removeControl('agreement_property_owner_other'); + control.controls[index].removeControl('agreement_property_owner_other_relationship'); + control.controls[index].removeControl('agreement_property_owner_other_relation_to'); } - + } +//genearate rent agreement registered options +generateRegisterOptions(value: any,index:number){ + let control: any = this._rentalForm.controls['property_unit_details']; + if(value.rent_agreement_seen=="1"){ + control.controls[index].addControl('rent_agreement_registered', new FormControl('', Validators.required)); + } + else{ + control.controls[index].removeControl('rent_agreement_registered'); + // after No + control.controls[index].removeControl('agreement_date'); + control.controls[index].removeControl('agreement_no_months'); + control.controls[index].removeControl('agreement_expiring_date'); + control.controls[index].removeControl('rental_remaining_months'); + control.controls[index].removeControl('agreement_monthly_rent_amount'); + control.controls[index].removeControl('agreement_security_deposit_amount'); + control.controls[index].removeControl('agreement_property_owners_name'); + control.controls[index].removeControl('agreement_tenant_lessees_name'); + control.controls[index].removeControl('differences_loanapplicant_rentagreement'); + // remove agrement other ownres + control.controls[index].removeControl('agreement_property_owner_other'); + control.controls[index].removeControl('agreement_property_owner_other_relationship'); + control.controls[index].removeControl('agreement_property_owner_other_relation_to'); + } + +} +//genearate if rent agreement yes registered details +generateRegisterDetails(value: any,index:number){ + let control: any = this._rentalForm.controls['property_unit_details']; + if(value.rent_agreement_registered=="1"){ + control.controls[index].addControl('agreement_date', new FormControl('', Validators.required)); + control.controls[index].addControl('agreement_no_months', new FormControl('', Validators.required)); + control.controls[index].addControl('agreement_expiring_date', new FormControl('')); + control.controls[index].addControl('rental_remaining_months', new FormControl('')); + control.controls[index].addControl('agreement_monthly_rent_amount', new FormControl('', Validators.required)); + control.controls[index].addControl('agreement_security_deposit_amount', new FormControl('', Validators.required)); + control.controls[index].addControl('agreement_security_deposit_amount', new FormControl('', Validators.required)); + control.controls[index].addControl('agreement_property_owners_name', new FormControl('', Validators.required)); + control.controls[index].addControl('agreement_tenant_lessees_name', new FormControl('', Validators.required)); + control.controls[index].addControl('differences_loanapplicant_rentagreement', new FormControl('')); + + } + else{ + control.controls[index].removeControl('agreement_date'); + control.controls[index].removeControl('agreement_no_months'); + control.controls[index].removeControl('agreement_expiring_date'); + control.controls[index].removeControl('rental_remaining_months'); + control.controls[index].removeControl('agreement_monthly_rent_amount'); + control.controls[index].removeControl('agreement_security_deposit_amount'); + control.controls[index].removeControl('agreement_property_owners_name'); + control.controls[index].removeControl('agreement_tenant_lessees_name'); + control.controls[index].removeControl('differences_loanapplicant_rentagreement'); + // remove agrement other ownres + control.controls[index].removeControl('agreement_property_owner_other'); + control.controls[index].removeControl('agreement_property_owner_other_relationship'); + control.controls[index].removeControl('agreement_property_owner_other_relation_to'); + + } + +} + +// calculate expiry date +calculateExpiryDate(e: any,index){ + let control: any = this._rentalForm.controls['property_unit_details']; + let getSeletedDate: any=control.value[index].agreement_date ? this.pipe.transform(control.value[index].agreement_date, 'yyyy/MM/dd'): ''; + let getEnteredMonth = control.value[index].agreement_no_months > 0 ? control.value[index].agreement_no_months : '0'; + if(getSeletedDate && getEnteredMonth>0){ + let modifySeletedDate:any = new Date(new Date(getSeletedDate).setMonth(new Date(getSeletedDate).getMonth() + Number(getEnteredMonth))); + let getExpiryDate=this.pipe.transform(modifySeletedDate, 'dd/MM/yyyy'); + control.controls[index].controls['agreement_expiring_date'].setValue(getExpiryDate); + // calculate remaining month + if(modifySeletedDate >= new Date()){ + let currentDate:any = new Date(); + currentDate = this.pipe.transform(currentDate, 'yyyy/MM/dd'); + let remaingMonths; + remaingMonths = (modifySeletedDate.getFullYear() - new Date().getFullYear()) * 12; + remaingMonths += modifySeletedDate.getMonth() - new Date().getMonth(); + control.controls[index].controls['rental_remaining_months'].setValue(remaingMonths); + } + else{ + control.controls[index].controls['rental_remaining_months'].setValue(0); + } + } + else { + control.controls[index].controls['agreement_expiring_date'].setValue(''); + control.controls[index].controls['rental_remaining_months'].setValue(''); + + } + +} + +// generate other owners as per rent agreement +generateAgreementOtherOwners(value:any,index:number) { + let control: any = this._rentalForm.controls['property_unit_details']; + if(value && value.length>0){ + let otherOwnerCheck = value.filter(fVal=>fVal.id==0); + otherOwnerCheck.length>0 ? control.controls[index].addControl('agreement_property_owner_other', new FormControl('', Validators.required)) : control.controls[index].removeControl('agreement_property_owner_other'); + otherOwnerCheck.length>0 ? control.controls[index].addControl('agreement_property_owner_other_relationship', new FormControl('', Validators.required)) : control.controls[index].removeControl('agreement_property_owner_other_relationship'); + otherOwnerCheck.length>0 ? control.controls[index].addControl('agreement_property_owner_other_relation_to', new FormControl('', Validators.required)) : control.controls[index].removeControl('agreement_property_owner_other_relation_to'); + + } + else { + control.controls[index].removeControl('agreement_property_owner_other'); + control.controls[index].removeControl('agreement_property_owner_other_relationship'); + control.controls[index].removeControl('agreement_property_owner_other_relation_to'); + } +} + +// validate agreement amount +validateAgreementAmt(actualRent:number,agreementRent:number){ + if(actualRent>0 && agreementRent>0){ + return (actualRent >= agreementRent) ? Number(actualRent) - Number(agreementRent) : Number(agreementRent) - Number(actualRent); + } + else{ + return "0"; + } + +} + +// generate tenant met details +generateTenantMetDetails(value: any, index: number){ + let control: any = this._rentalForm.controls['property_unit_details']; + if(value.met_tenant_lessees_options=="1"){ + // remove reason + control.controls[index].removeControl('name_tenant_lessees_reason_per_met'); + + control.controls[index].addControl('name_tenant_lessees_per_met', new FormControl('', Validators.required)); + control.controls[index].addControl('property_owner_per_met', new FormControl('', Validators.required)); + control.controls[index].addControl('paid_monthly_rent_per_met', new FormControl('', Validators.required)); + control.controls[index].addControl('period_of_stay_per_met', new FormControl('', Validators.required)); + control.controls[index].addControl('payment_mode_per_met', new FormControl('', Validators.required)); + control.controls[index].addControl('payment_difference_per_met', new FormControl('', Validators.required)); + + } + else{ + control.controls[index].removeControl('name_tenant_lessees_per_met'); + control.controls[index].removeControl('property_owner_per_met'); + control.controls[index].removeControl('paid_monthly_rent_per_met'); + control.controls[index].removeControl('period_of_stay_per_met'); + control.controls[index].removeControl('payment_mode_per_met'); + control.controls[index].removeControl('payment_difference_per_met'); + + + // remove other owner details + control.controls[index].removeControl('property_owner_other_per_met'); + control.controls[index].removeControl('property_owner_other_relationship_per_met'); + control.controls[index].removeControl('property_owner_other_relation_to_per_met'); + // remove paymnet options + control.controls[index].removeControl('amount_received_cash_per_met'); + control.controls[index].removeControl('amount_received_bank_per_met'); + control.controls[index].removeControl('payment_received_reason_per_met'); + // add reason + control.controls[index].addControl('name_tenant_lessees_reason_per_met', new FormControl('', Validators.required)); + + + } +} + +// generate met others owner +generateMetOtherOwners(value: any, index: number){ + let control: any = this._rentalForm.controls['property_unit_details']; + if(value.property_owner_per_met.length>0){ + let otherCheck: any = value.property_owner_per_met.filter(fVal=>fVal.id==0); + otherCheck.length >0 ? control.controls[index].addControl('property_owner_other_per_met', new FormControl('', Validators.required)) : control.controls[index].removeControl('property_owner_other_per_met'); + otherCheck.length >0 ? control.controls[index].addControl('property_owner_other_relationship_per_met', new FormControl('', Validators.required)) : control.controls[index].removeControl('property_owner_other_relationship_per_met'); + otherCheck.length >0 ? control.controls[index].addControl('property_owner_other_relation_to_per_met', new FormControl('', Validators.required)) : control.controls[index].removeControl('property_owner_other_relation_to_per_met'); + +} +else { + control.controls[index].removeControl('property_owner_other_per_met'); + control.controls[index].removeControl('property_owner_other_relationship_per_met'); + control.controls[index].removeControl('property_owner_other_relation_to_per_met'); + +} + +} + +// generate floor rows +// generateFloor(e:any): void{ +// let control = 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; + compareSingleObjects(o1: any, o2: any) { + if(o1.id == o2.id) + return true; + else return false } - e.stopPropagation(); -} // save rental form -saveRental(details) { +saveRental(formData: any) { + if (this._rentalForm.invalid) { + this.validateAllFormFields(this._rentalForm); + this.notifier.notify('warning', 'Please Fill All Mandatory Fields.!'); + return; + } + else { + this._pd.savePDFormDetailsWithID(formData).subscribe( + dataresult => { + if (dataresult.status == 200) { + this.notifier.notify('success', 'Saved Successfully.'); + setTimeout(() => { + this.dialogRef.close(); + }, 3000); + + } + else { + this.notifier.notify('warning', 'Something Wents Wrong Try Again.!'); + // this.errorMessage = "Some Thing Wents Wrong Try Again !"; + } + }, error => { + this.notifier.notify('warning', 'Something Wents Wrong Try Again.!'); + // this.errorMessage = "Something Wents Wrong Try Again !"; + }); + } +} + +// validate all form group and form array fields +validateAllFormFields(formGroup: any) { + Object.keys(formGroup.controls).forEach(field => { + const control = formGroup.get(field); + + if (control instanceof FormControl) { + control.markAsTouched({ onlySelf: true }); + } else if (control instanceof FormGroup) { + this.validateAllFormFields(control); + } else if (control instanceof FormArray) { + this.validateAllFormFields(control); + } + }); +} + } -} + diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/manage-pd.module.ts b/ng6-seed/src/app/personal-discussion/manage-pd/manage-pd.module.ts index 17d1d91fb..eaeb4ff4a 100755 --- a/ng6-seed/src/app/personal-discussion/manage-pd/manage-pd.module.ts +++ b/ng6-seed/src/app/personal-discussion/manage-pd/manage-pd.module.ts @@ -91,6 +91,7 @@ import { QcReviewComponent } from './list-pd/pd-report/qc-review/qc-review.compo import { SharedModule } from "app/shared/shared.module"; import { BusinessInfoGroupComponent } from './list-pd/start-pd/forms/business-info-group/business-info-group.component'; import { SearchRelationPipe } from './../pd-pipes/search-relation.pipe'; +import { NumberToWordsPipe } from './../pd-pipes/number-to-words.pipe'; import { DeleteRecordsCountPipe } from './../pd-pipes/delete-records-count.pipe'; import { BusinessAssetsInfoComponent } from './list-pd/start-pd/forms/business-assets-info/business-assets-info.component'; import { BusinessBankingDetailsComponent } from './list-pd/start-pd/forms/business-banking-details/business-banking-details.component'; @@ -160,7 +161,7 @@ const pdCustomNotifierOptions: NotifierOptions = { }; @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, RentalVerificationComponent], + 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, NumberToWordsPipe, DeleteRecordsCountPipe, BusinessAssetsInfoComponent, BusinessBankingDetailsComponent, SalesDetailsComponent, DailySalesDetailsComponent, SalesCalculationComponent, ManageSalesComponent, PurchaseDetailsComponent, BusinessExpenseDetailsComponent, HouseHoldDetailsComponent, OtherBusinessIncomeDetailsComponent, ManagePurchaseComponent, ManageBusinesExpenseComponent, ManageHouseHoldComponent, ManageOtherBusinessIncomeComponent, GrossProfitCalculationComponent, ManageDailySalesComponent, PdStatusChangeDialogueComponent, PdLocatedMapViewDirective, ViewLocationComponent, GetAnswerableFormsPipe, ConfirmAiDetailsComponent, RentalVerificationComponent], imports: [ CommonModule, ManagePdRoutingModule, diff --git a/ng6-seed/src/app/personal-discussion/pd-pipes/number-to-words.pipe.spec.ts b/ng6-seed/src/app/personal-discussion/pd-pipes/number-to-words.pipe.spec.ts new file mode 100644 index 000000000..a67a5af9b --- /dev/null +++ b/ng6-seed/src/app/personal-discussion/pd-pipes/number-to-words.pipe.spec.ts @@ -0,0 +1,8 @@ +import { NumberToWordsPipe } from './number-to-words.pipe'; + +describe('NumberToWordsPipe', () => { + it('create an instance', () => { + const pipe = new NumberToWordsPipe(); + expect(pipe).toBeTruthy(); + }); +}); diff --git a/ng6-seed/src/app/personal-discussion/pd-pipes/number-to-words.pipe.ts b/ng6-seed/src/app/personal-discussion/pd-pipes/number-to-words.pipe.ts new file mode 100644 index 000000000..a81d9b7d1 --- /dev/null +++ b/ng6-seed/src/app/personal-discussion/pd-pipes/number-to-words.pipe.ts @@ -0,0 +1,70 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'numberToWords' +}) +export class NumberToWordsPipe implements PipeTransform { + + transform(amount: any): any { + let words: any = ['', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine', 'Ten', 'Eleven', 'Twelve', 'Thirteen', 'Fourteen', 'Fifteen', 'Sixteen', 'Seventeen', 'Eighteen', 'Nineteen', 'Twenty']; + words[30] = 'Thirty'; + words[40] = 'Forty'; + words[50] = 'Fifty'; + words[60] = 'Sixty'; + words[70] = 'Seventy'; + words[80] = 'Eighty'; + words[90] = 'Ninety'; + amount = amount.toString(); + let atemp = amount.split("."); + let number = atemp[0].split(",").join(""); + let n_length = number.length; + let words_string = ""; + let value: any; + if (n_length <= 9) { + var n_array = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0); + var received_n_array = new Array(); + for (var i = 0; i < n_length; i++) { + received_n_array[i] = number.substr(i, 1); + } + for (var i = 9 - n_length, j = 0; i < 9; i++ , j++) { + n_array[i] = received_n_array[j]; + } + for (var i = 0, j = 1; i < 9; i++ , j++) { + if (i == 0 || i == 2 || i == 4 || i == 7) { + if (n_array[i] == 1) { + n_array[j] = 10 + (+n_array[j]); + n_array[i] = 0; + } + } + } + value = ""; + for (var i = 0; i < 9; i++) { + if (i == 0 || i == 2 || i == 4 || i == 7) { + value = n_array[i] * 10; + } else { + value = n_array[i]; + } + if (value != 0) { + words_string += words[value] + " "; + } + if ((i == 1 && value != 0) || (i == 0 && value != 0 && n_array[i + 1] == 0)) { + words_string += "Crores "; + } + if ((i == 3 && value != 0) || (i == 2 && value != 0 && n_array[i + 1] == 0)) { + words_string += "Lakhs "; + } + if ((i == 5 && value != 0) || (i == 4 && value != 0 && n_array[i + 1] == 0)) { + words_string += "Thousand "; + } + if (i == 6 && value != 0 && (n_array[i + 1] != 0 && n_array[i + 2] != 0)) { + words_string += "Hundred and "; + } else if (i == 6 && value != 0) { + words_string += "Hundred "; + } + } + words_string = words_string.split(" ").join(" "); + } + return words_string; + } + +}