From 675538fa3e129e6cd54fc72e5d7113936c36a8ee Mon Sep 17 00:00:00 2001 From: "venbatechnologies@gmail.com" Date: Thu, 4 Apr 2019 14:27:05 +0530 Subject: [PATCH] Purchase Changes in AI : ps --- .../manage-daily-purchase.component.html | 85 ++++++ .../manage-daily-purchase.component.scss | 34 +++ .../manage-daily-purchase.component.spec.ts | 25 ++ .../manage-daily-purchase.component.ts | 261 ++++++++++++++++++ .../manage-purchase.component.html | 41 ++- .../manage-purchase.component.scss | 10 + .../manage-purchase.component.ts | 63 ++++- .../assessed-income.component.html | 22 +- .../assessed-income.component.ts | 44 ++- .../daily-purchase-details.component.html | 74 +++++ .../daily-purchase-details.component.scss | 37 +++ .../daily-purchase-details.component.spec.ts | 25 ++ .../daily-purchase-details.component.ts | 107 +++++++ .../daily-sales-details.component.ts | 1 - .../gross-profit-calculation.component.html | 12 + .../gross-profit-calculation.component.scss | 16 +- .../gross-profit-calculation.component.ts | 32 ++- .../purchase-details.component.ts | 2 +- .../employment-info.component.html | 4 +- .../rental-verification.component.ts | 8 +- .../start-pd/forms/stock/stock.component.ts | 2 +- .../manage-pd/manage-pd.module.ts | 8 +- .../pd-service/pd-triger.service.ts | 16 +- 23 files changed, 891 insertions(+), 38 deletions(-) create mode 100644 ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-daily-purchase/manage-daily-purchase.component.html create mode 100644 ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-daily-purchase/manage-daily-purchase.component.scss create mode 100644 ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-daily-purchase/manage-daily-purchase.component.spec.ts create mode 100644 ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-daily-purchase/manage-daily-purchase.component.ts create mode 100644 ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/daily-purchase-details/daily-purchase-details.component.html create mode 100644 ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/daily-purchase-details/daily-purchase-details.component.scss create mode 100644 ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/daily-purchase-details/daily-purchase-details.component.spec.ts create mode 100644 ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/daily-purchase-details/daily-purchase-details.component.ts diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-daily-purchase/manage-daily-purchase.component.html b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-daily-purchase/manage-daily-purchase.component.html new file mode 100644 index 000000000..24e2bc006 --- /dev/null +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-daily-purchase/manage-daily-purchase.component.html @@ -0,0 +1,85 @@ +
+ +

+
+ {{pageTitle}} +
+
+ +
+

+ + + + + + + + Select + {{ prod }} + Others + + + + + + + +
+ +
+
+
+ + + + + + + + {{"₹"}} {{childItem.value.purchase_value | numberToWords}} Only + + +
+ +
+
+ +
+ +
+ +
+ + + + +
+
+ +
+ + + +
+ +
+ + + + + + + \ No newline at end of file diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-daily-purchase/manage-daily-purchase.component.scss b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-daily-purchase/manage-daily-purchase.component.scss new file mode 100644 index 000000000..3286c8cbe --- /dev/null +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-daily-purchase/manage-daily-purchase.component.scss @@ -0,0 +1,34 @@ +.paragraph_change { + color: #fff !important; + background-color: #e00201 !important; + } + mat-form-field { + margin: 0 2%; + } + .example-section { + height: 120px; + } + + .example-margin { + margin: 0 10px; + } + ::ng-deep .cdk-global-overlay-wrapper{ + justify-content: center !important; +} + +.item-margin { + margin-left:4%; + margin-top:2%; +} +.item-product-margin{ + margin-top:2%; +} +.example-radio-group { + display: flex; + flex-direction: row; + flex-wrap: wrap; +} +.example-radio-button { + margin: 0 2%; + color: #000 !important +} \ No newline at end of file diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-daily-purchase/manage-daily-purchase.component.spec.ts b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-daily-purchase/manage-daily-purchase.component.spec.ts new file mode 100644 index 000000000..44cef4cf0 --- /dev/null +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-daily-purchase/manage-daily-purchase.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ManageDailyPurchaseComponent } from './manage-daily-purchase.component'; + +describe('ManageDailyPurchaseComponent', () => { + let component: ManageDailyPurchaseComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ManageDailyPurchaseComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ManageDailyPurchaseComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-daily-purchase/manage-daily-purchase.component.ts b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-daily-purchase/manage-daily-purchase.component.ts new file mode 100644 index 000000000..4714986fd --- /dev/null +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-daily-purchase/manage-daily-purchase.component.ts @@ -0,0 +1,261 @@ +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 { PdTrigerService } from './../../../../../../../pd-service/pd-triger.service'; +import { NotifierService } from 'angular-notifier'; +import { DatePipe } from '@angular/common'; +import { DeleteRecordsCountPipe } from './../../../../../../../pd-pipes/delete-records-count.pipe'; + +@Component({ + selector: 'app-manage-daily-purchase', + templateUrl: './manage-daily-purchase.component.html', + styleUrls: ['./manage-daily-purchase.component.scss'] +}) +export class ManageDailyPurchaseComponent implements OnInit { + Value: any []=[]; + pipe = new DatePipe('en-US'); + pageTitle:string; + purchaseItemForm:FormGroup; + UOMData: any[]=[]; + frequencyData: any[]=[]; + marginAmtInwords: any[]=[]; + productListData : any[]=[]; + private notifier: NotifierService; + + constructor(notifier: NotifierService,private _fb: FormBuilder, private _pd: PdTrigerService, @Inject(MAT_DIALOG_DATA) public data: any, private dialogRef: MatDialogRef) { + this.pageTitle = this.data.manage_status==1 ? 'Add Daily Purchase Item' : 'Update Daily Purchase Item'; + this.notifier = notifier; + } + + ngOnInit() { + //Business Product list for dropdown. + this._pd.getProductsFromBusinessAndSupplier(this.data.masterData.pdid, this.data.masterData.company_id).subscribe(data => { + if (data.dataStatus){ + let datas = data.record; + + let type2 = datas.from_business.filter(data => data.type_of_activity_id == 2); + if(type2[0].hasOwnProperty("products")){ + // this.productListData.push(type2[0].products); + } + let type3 = datas.from_business.filter(data => data.type_of_activity_id == 3); + if(type3[0].hasOwnProperty("products")){ + this.productListData.push(type3[0].products); + } + let type4 = datas.from_business.filter(data => data.type_of_activity_id == 4); + if(type4[0].hasOwnProperty("products")){ + this.productListData.push(type4[0].products); + } + if(datas.from_supplier.hasOwnProperty("raw_material")){ + this.productListData.push(datas.from_supplier.raw_material); + } + this.productListData = [].concat.apply([], this.productListData); + + } +}) + +//manage_status '1' for Add , '2' for edit functionalities + + if(this.data.manage_status==1){ + this.purchaseItemForm = this._fb.group({ + purchase_product: this._fb.array([this.createPurchaseItem()]), + }); + let control: any = this.purchaseItemForm.controls['purchase_product']; + control = control.controls[0].get('child') as FormArray; + control.push(this.createDailyPurchaseData('')) + } + else if(this.data.manage_status==2){ + this.purchaseItemForm = this._fb.group({ + purchase_product: this._fb.array([this.createPurchaseItemWithData(this.data.editData)]), + }); + let control: any = this.purchaseItemForm.controls['purchase_product']; + let innercontrol: any = control.controls[0].get('child') as FormArray; + this.data.editData.values.forEach((elementVal,inx) => { + innercontrol.push(this.createDailyPurchaseWithData(elementVal,this.data.editData)) + }); + + + control.controls[control.value.length-1].controls['comments'].setValidators([Validators.required]); + control.controls[control.value.length-1].controls['comments'].updateValueAndValidity(); + } + else{ + this.purchaseItemForm = this._fb.group({ + purchase_product: this._fb.array([]), + }); + + } + + } + + //create purchase product + createPurchaseItem():FormGroup { + return this._fb.group({ + fk_pd_id: [this.data.masterData.pdid], + company_id:[this.data.masterData.company_id], + pbw_id: [''], + purchase_item: ['', Validators.compose([Validators.required])], + other_purchase_item:[''], + annual_purchase_value: [''], + child: this._fb.array([]), + comments: [''], + isactive:[true], + }); +} + +// create daily list empty +createDailyPurchaseData(pbw_id: string) { + return this._fb.group({ + pbwc_id: [''], + fk_pbw_id: [pbw_id], + purchase_date: [''], + purchase_value: ['', Validators.compose([Validators.required])], + isactive:[true], + }) +} + +// create purchase product with Data +createPurchaseItemWithData(values: any) { + return this._fb.group({ + fk_pd_id: [this.data.masterData.pdid], + company_id:[this.data.masterData.company_id], + pbw_id: [values.pbw_id], + purchase_item: [values.purchaseItem, Validators.compose([Validators.required])], + other_purchase_item:[values.otherPurchaseItem === null ? '' : values.otherPurchaseItem ], + annual_purchase_value: [values.annualPurchaseValue], + child: this._fb.array([]), + comments: [values.comments], + isactive:[true], + }); +} + +// create daily purchase product with Data +createDailyPurchaseWithData(values: any, parent: any) { + return this._fb.group({ + pbwc_id: [values.pbwc_id], + fk_pbw_id: [parent.pbw_id], + purchase_date: [parent.purchase_type=='2' ? '' :new Date(this.pipe.transform(values.purchase_date, 'yyyy-MM-dd')), Validators.compose([Validators.required])], + purchase_value: [values.purchase_value, Validators.compose([Validators.required])], + isactive:[true] + }) +} + +// add more purchase products +addMore(parentIndex: number): void{ + let control = this.purchaseItemForm.controls['purchase_product']; + control.push(this.createPurchaseItem()); + control = control.controls[parentIndex].get('child') as FormArray; + control.push(this.createDailyPurchaseData('')) +} + +// add more purchase daily products +addMoreDailyPurchase(parentIndex: number,values: any): void{ + let control: any = this.purchaseItemForm.controls['purchase_product']; + control=control.controls[parentIndex].get('child') as FormArray; + control.push(this.createDailyPurchaseData(values.pbw_id)); +} + +// remove dailywise Purchase Products items +removeDailyItems(parentIndex: number,childIndex:number, childValue:any): void { + let control: any = this.purchaseItemForm.controls['purchase_product']; + control=control.controls[parentIndex].get('child') as FormArray; + if(childValue.pbwc_id=='' || childValue.pbwc_id==null){ + control.removeAt(childIndex); + let calculatControlValues: any = this.purchaseItemForm.controls['purchase_product']; + calculatControlValues = calculatControlValues.controls[parentIndex]; + this.purchaseCalculation(parentIndex,calculatControlValues.value); + } + else { + control.controls[childIndex].controls.isactive.setValue(false); + let calculatControlValues: any = this.purchaseItemForm.controls['purchase_product']; + calculatControlValues = calculatControlValues.controls[parentIndex]; + this.purchaseCalculation(parentIndex,calculatControlValues.value); + } + +} + +//To remove the Products +removeProducts(parentIndex:number){ + let control: any = this.purchaseItemForm.controls['purchase_product']; + control.removeAt(parentIndex); +} + +// close dialogue manually +closeDialogue(){ + this.dialogRef.close({update_status:false}); +} + +// this caculation for running total +purchaseCalculation(indexVal: number,values: any): void { + let control:any = this.purchaseItemForm.controls['purchase_product']; + + if(values.child.length>0){ + let transformData = values.child.filter(val=>val.purchase_date!='' && val.purchase_date!=null && val.purchase_date!=undefined && val.purchase_value!='' && val.isactive===true).map(mval=>{ + mval.custum_date = this.pipe.transform(mval.purchase_date, 'yyyy-MM'); + return mval; + }); + + if(transformData.length>0) { + // let getUniqueMonthCounts = transformData.map(val=>val.custum_date) + // .filter((fVal,fIndex,fArray)=>{ + // return fIndex === fArray.indexOf(fVal); + // }); + + let TotalAnnualValue = transformData.map(val=>val.purchase_value) + .reduce((sum, curr) => parseInt(sum) + parseInt(curr)); + control.controls[indexVal].controls['annual_purchase_value'].setValue(TotalAnnualValue); + } + else{ + control.controls[indexVal].controls['annual_purchase_value'].setValue(""); + } + + } + else { + let innercontrol: any = control.controls[indexVal].get('child') as FormArray; + innercontrol.controls[innercontrol.value.length-1].controls['purchase_value'].setValue(""); + control.controls[indexVal].controls['annual_purchase_value'].setValue(""); + } +} + +// save purchase details +submitDetails(records) { + + if (this.purchaseItemForm.invalid) { + this.validateAllFormFields(this.purchaseItemForm); + this.notifier.notify('warning',"Please Check All Manatory Fields.."); + return; + } + // this is for remove custom date key from my array values + records.purchase_product.forEach(parVal => { + parVal.child.forEach(childVal => { + if(childVal['custum_date']){ + delete childVal['custum_date']; + } + if(childVal['purchase_date']) + childVal['purchase_date']=this.pipe.transform(childVal['purchase_date'], 'yyyy-MM-dd'); + }); + }); + + this._pd.saveAssessedDetails('saveAssessedIncomePurchaseBillwise',records.purchase_product).subscribe(data => { + this.notifier.notify('success', this.data.manage_status==2 ? 'Updated Successfully.' : 'Saved Successfully.'); + setTimeout(() =>{ + this.dialogRef.close({update_status:true}); + },3000); + }, error => { + this.notifier.notify('warning', '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/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-purchase/manage-purchase.component.html b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-purchase/manage-purchase.component.html index 1898762c9..0483642e5 100644 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-purchase/manage-purchase.component.html +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-purchase/manage-purchase.component.html @@ -13,19 +13,32 @@
- - + + + + Select + {{ prod }} + Others + + + + + +
+
+ + {{types.type_name}} +
- + - + {{uom.name}} @@ -36,7 +49,7 @@
-
+
{{"₹"}} {{item.value.rate_per_unit | numberToWords}} Only @@ -53,6 +66,22 @@
+
+ + + {{frq.name}} + + + + + {{"₹"}} {{item.value.rate_per_unit | numberToWords}} Only + + + + + {{"₹"}} {{item.value.annual_purchase_value | numberToWords}} Only + +
diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-purchase/manage-purchase.component.scss b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-purchase/manage-purchase.component.scss index 49dcb4214..bb96c7726 100644 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-purchase/manage-purchase.component.scss +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-purchase/manage-purchase.component.scss @@ -23,4 +23,14 @@ .item-product-margin{ margin-top:2%; +} + +.example-radio-group { + display: flex; + flex-direction: column; + flex-wrap: wrap; +} +.example-radio-button { + margin: 0 2%; + color: #000 !important } \ No newline at end of file diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-purchase/manage-purchase.component.ts b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-purchase/manage-purchase.component.ts index 6708851f2..2ceadcc9c 100644 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-purchase/manage-purchase.component.ts +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/AI-diologue/manage-purchase/manage-purchase.component.ts @@ -15,6 +15,9 @@ export class ManagePurchaseComponent implements OnInit { purchaseItemForm:FormGroup; UOMData: any[]=[]; frequencyData: any[]=[]; + productListData: any[]=[]; + check_type:any=[{'type_id':"1",'type_name':'Quantity and Rate Information'},{'type_id':"2",'type_name':'Value Information'}] + private notifier: NotifierService; constructor(notifier: NotifierService,private _fb: FormBuilder, private _pd: PdTrigerService, @Inject(MAT_DIALOG_DATA) public data: any, private dialogRef: MatDialogRef) { this.UOMData=this.data.masterData.UOMList; @@ -24,6 +27,30 @@ export class ManagePurchaseComponent implements OnInit { } ngOnInit() { + this._pd.getProductsFromBusinessAndSupplier(this.data.masterData.pdid, this.data.masterData.company_id).subscribe(data => { + if (data.dataStatus){ + let datas = data.record; + + let type2 = datas.from_business.filter(data => data.type_of_activity_id == 2); + if(type2[0].hasOwnProperty("products")){ + // this.productListData.push(type2[0].products); + } + let type3 = datas.from_business.filter(data => data.type_of_activity_id == 3); + if(type3[0].hasOwnProperty("products")){ + this.productListData.push(type3[0].products); + } + let type4 = datas.from_business.filter(data => data.type_of_activity_id == 4); + if(type4[0].hasOwnProperty("products")){ + this.productListData.push(type4[0].products); + } + if(datas.from_supplier.hasOwnProperty("raw_material")){ + this.productListData.push(datas.from_supplier.raw_material); + } + this.productListData = [].concat.apply([], this.productListData); + + } + }) + if(this.data.manage_status==2){ this.purchaseItemForm = this._fb.group({ purchase: this._fb.array([this.createPurchaseItemWithData(this.data.editData)]), @@ -47,6 +74,8 @@ export class ManagePurchaseComponent implements OnInit { fk_pd_id:[this.data.masterData.pdid], company_id:[this.data.masterData.company_id], purchase_item:['',Validators.compose([Validators.required])], + other_purchase_item:[''], + purchase_type:['1'], purchase_qty:['',Validators.compose([Validators.required])], fk_uom_id:['',Validators.compose([Validators.required])], rate_per_unit:['',Validators.compose([Validators.required])], @@ -64,6 +93,8 @@ createPurchaseItemWithData(values: any) { fk_pd_id:[this.data.masterData.pdid], company_id:[this.data.masterData.company_id], purchase_item:[values.purchase_item,Validators.compose([Validators.required])], + other_purchase_item:[values.other_purchase_item], + purchase_type:[values.purchase_type], purchase_qty:[values.purchase_qty,Validators.compose([Validators.required])], fk_uom_id:[values.fk_uom_id,Validators.compose([Validators.required])], rate_per_unit:[values.rate_per_unit,Validators.compose([Validators.required])], @@ -87,10 +118,15 @@ closeDialogue(){ purchaseCalculation(indexVal: number,values: any): void { let control:any = this.purchaseItemForm.controls['purchase']; - if(values.purchase_qty!='' && values.rate_per_unit!='' && values.fk_frequency_id!='') { + + if(values.purchase_type=="1" &&values.purchase_qty!='' && values.rate_per_unit!='' && values.fk_frequency_id!='') { let filterFrequencyValue: any = this.frequencyData.filter(val =>val.frequency_id==values.fk_frequency_id); control.controls[indexVal].controls['annual_purchase_value'].setValue(parseInt(values.purchase_qty) * parseInt(values.rate_per_unit) * parseInt(filterFrequencyValue[0].mutiple_factor)); - + } + else if(values.purchase_type=="2" && values.rate_per_unit!='' && values.fk_frequency_id!='') { + + let filterFrequencyValue: any = this.frequencyData.filter(val =>val.frequency_id==values.fk_frequency_id); + control.controls[indexVal].controls['annual_purchase_value'].setValue(parseInt(values.rate_per_unit) * parseInt(filterFrequencyValue[0].mutiple_factor)); } else { control.controls[indexVal].controls['annual_purchase_value'].setValue(''); @@ -108,6 +144,29 @@ generateOtherUOM(index: number, values: any): void { values.fk_uom_id=="1" ? control.controls[index].addControl('uom_other', new FormControl('', Validators.required)) : control.controls[index].removeControl('uom_other'); } +changeOptions(indexVal: any,event: any): void{ + + let control: any = this.purchaseItemForm.controls['purchase']; + if(event.value=="1"){ + control.controls[indexVal].controls['purchase_qty'].setValidators([Validators.required]); + control.controls[indexVal].controls['purchase_qty'].updateValueAndValidity(); + + control.controls[indexVal].controls['fk_uom_id'].setValidators([Validators.required]); + control.controls[indexVal].controls['fk_uom_id'].updateValueAndValidity(); + this.purchaseCalculation(indexVal,control.controls[indexVal].value); + } + else if(event.value=="2"){ + control.controls[indexVal].controls['purchase_qty'].setValue(""); + control.controls[indexVal].controls['purchase_qty'].clearValidators(); + control.controls[indexVal].controls['purchase_qty'].updateValueAndValidity(); + + control.controls[indexVal].controls['fk_uom_id'].setValue(""); + control.controls[indexVal].controls['fk_uom_id'].clearValidators(); + control.controls[indexVal].controls['fk_uom_id'].updateValueAndValidity(); + this.purchaseCalculation(indexVal,control.controls[indexVal].value); + } + } + // save purchase details submitDetails(records) { if (this.purchaseItemForm.invalid) { diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/assessed-income.component.html b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/assessed-income.component.html index 1220d703e..7236948df 100755 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/assessed-income.component.html +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/assessed-income.component.html @@ -74,28 +74,36 @@ - - + + - - + +
+ +
+
+ +
+
+

Purchase Item is Not Available..

+
- - + + - + +
+ + + + + {{types.name}} + +
+ + diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/gross-profit-calculation/gross-profit-calculation.component.scss b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/gross-profit-calculation/gross-profit-calculation.component.scss index b559b3c47..332e5a872 100644 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/gross-profit-calculation/gross-profit-calculation.component.scss +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/gross-profit-calculation/gross-profit-calculation.component.scss @@ -1,3 +1,17 @@ mat-form-field { margin: 0 2%; - } \ No newline at end of file + } + + .mat-radio-button ~ .mat-radio-button { + margin-left: 16px; + } + + .example-radio-group { + display: flex; + flex-direction: row; + margin: 15px 0; + } + + // .example-radio-button { + // margin: 5px; + // } \ No newline at end of file diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/gross-profit-calculation/gross-profit-calculation.component.ts b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/gross-profit-calculation/gross-profit-calculation.component.ts index 4e8676fbe..1f7c9ab0a 100644 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/gross-profit-calculation/gross-profit-calculation.component.ts +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/gross-profit-calculation/gross-profit-calculation.component.ts @@ -11,29 +11,49 @@ import { NotifierService } from 'angular-notifier'; export class GrossProfitCalculationComponent implements OnInit, OnChanges { @Input() masterData: { UOMList: any; frequencyList: any;businessExpenseList:any; pdid:number, company_id:number}; @Input() parentData: any; + @Input() TabLabel: any; @Output() loadAssessedForms = new EventEmitter(); public grossProfitForm: FormGroup; check__purchse_type:any=[{'id':'1','name':'Yes'},{'id':'2','name':'No'}] - check_sales_type:any=[{'id':'1','name':'Gross Margin'},{'id':'2','name':'Net Margin'}] + purchase_sub_type:any=[{'id':'1','name':'Purchase Item Wise'},{'id':'2','name':'Purchase Bill Wise'}] private notifier: NotifierService; constructor(notifier: NotifierService,private _fb: FormBuilder, private _pd: PdTrigerService) { this.notifier = notifier; } ngOnInit() { - + console.log('TabLabel',this.TabLabel); } changeOptions(values: any){ // console.log('values',values); - this.grossProfitForm.controls['margin'].setValue(''); + + if(this.TabLabel == 'Sales' && values.mode == 1){ + this.grossProfitForm.controls['margin'].setValue(''); + this.grossProfitForm.controls['purchase_type'].setValue(''); + } + else if(this.TabLabel == 'Purchase' && values.mode == 1){ + this.grossProfitForm.controls['margin'].setValue(''); + } /** if Mode Value is 'No' -> margin value is setted as netmargin and its id - 2 * Refer => check_sales_type **/ if(values.mode == 2){ - // console.log('2'); this.grossProfitForm.controls['margin'].setValue('2'); - } + this.grossProfitForm.controls['purchase_type'].setValue(''); + } + + // console.log('values',values); } + + + // if(values.mode == 2 && this.TabLabel == 'Purchase'){ + // this.grossProfitForm.controls['margin'].setValue('2'); + // this.grossProfitForm.controls['purchase_type'].setValue(null); + // } + + submitDetails(records: any){ + console.log(records); + // return; if (this.grossProfitForm.invalid) { this.validateAllFormFields(this.grossProfitForm); this.notifier.notify('warning',"Please Check All Manatory Fields.."); @@ -58,6 +78,7 @@ ngOnChanges(changes: SimpleChanges) { company_id:[this.masterData.company_id], mode:[changes.parentData.currentValue[0].mode,Validators.compose([Validators.required])], margin:[changes.parentData.currentValue[0].margin], + purchase_type:[changes.parentData.currentValue[0].purchase_type], }) } else { @@ -68,6 +89,7 @@ ngOnChanges(changes: SimpleChanges) { company_id:[this.masterData.company_id], mode:['',Validators.compose([Validators.required])], margin:[''], + purchase_type:[''], }) } } diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/purchase-details/purchase-details.component.ts b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/purchase-details/purchase-details.component.ts index 5af15cf6c..11d8a161e 100644 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/purchase-details/purchase-details.component.ts +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/assessed-income/purchase-details/purchase-details.component.ts @@ -88,7 +88,7 @@ getTotalCost(getItems:any) { // do check component bases ngDoCheck() { if(this.masterData.grossProfitTypeList.length>0){ - this.activateMariginCalculation = this.masterData.grossProfitTypeList[this.masterData.grossProfitTypeList.length-1].mode==1 ? true : false; + this.activateMariginCalculation = this.masterData.grossProfitTypeList[this.masterData.grossProfitTypeList.length-1].mode==1 && this.masterData.grossProfitTypeList[this.masterData.grossProfitTypeList.length-1].purchase_type==1 ? true : false; } this.purchaseItemSource.data = this.parentData; } diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/employment-info/employment-info.component.html b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/employment-info/employment-info.component.html index 7d3c764cd..1bef3ad43 100755 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/employment-info/employment-info.component.html +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/employment-info/employment-info.component.html @@ -40,12 +40,12 @@ - Higer then business vintage + Higer than business vintage - Higer then business vintage + Higer than business vintage this._rentalForm.controls['property_unit_details']; + console.log('value',value); if(type==1){ if(value && value.payment_mode.id==3){ let ChildCtrl : any = control.controls[index]; @@ -521,8 +522,8 @@ addMoreUnitDetails(){ } } } - if(type==2){ - + if(type==2 && value.payment_mode_per_met != ''){ + console.log('type,value.payment_mode_per_met',type,value.payment_mode_per_met); if(value && value.payment_mode.id==3){ let ChildCtrl : any = control.controls[index]; ChildCtrl.controls['amount_received_bank_per_met'].clearValidators(); @@ -992,10 +993,11 @@ saveRental(formData: any) { return; } else { + /** html: 'Rent as Per Tenant = '+TenantRentAmt+ '
'+'Rent as Per Applicant =' + ApplicantRentAmt , */ Swal({ title: 'Confirm The Rent Amount', type: 'info', - html: 'Rent as Per Tenant = '+TenantRentAmt+ '
'+'Rent as Per Applicant =' + ApplicantRentAmt , + html: 'Monthly Rent as Per Loan Applicant = '+ApplicantRentAmt+'
'+'Monthly Rent amount as Per Lease or Tenant met =' + TenantRentAmt , showCancelButton: true, confirmButtonColor: '#3085d6', cancelButtonColor: '#d33', diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/stock/stock.component.ts b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/stock/stock.component.ts index 7c77961a1..55552ca56 100755 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/stock/stock.component.ts +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/stock/stock.component.ts @@ -93,7 +93,7 @@ export class StockComponent implements OnInit { ngOnInit() { - this._pd.stockFormAccess(this.pdid, this.company_id).subscribe(data => { + this._pd.getProductsFromBusinessAndSupplier(this.pdid, this.company_id).subscribe(data => { if (data.dataStatus == true) { this.initstockForms(data.record); 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 d7cc57299..399af2efa 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 @@ -115,6 +115,8 @@ import { ViewLocationComponent } from './../pd-directive/view-location/view-loca 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 { RentalVerificationComponent } from './list-pd/start-pd/forms/rental-verification/rental-verification.component'; +import { ManageDailyPurchaseComponent } from './list-pd/start-pd/forms/assessed-income/AI-diologue/manage-daily-purchase/manage-daily-purchase.component'; +import { DailyPurchaseDetailsComponent } from './list-pd/start-pd/forms/assessed-income/daily-purchase-details/daily-purchase-details.component'; /** * Custom angular notifier options @@ -161,7 +163,7 @@ const pdCustomNotifierOptions: NotifierOptions = { }; @NgModule({ - declarations: [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, RupeeCurrencyFormatPipe, NumberToWordsPipe, DeleteRecordsCountPipe, BusinessAssetsInfoComponent, BusinessBankingDetailsComponent, SalesDetailsComponent, DailySalesDetailsComponent, SalesCalculationComponent, ManageSalesComponent, PurchaseDetailsComponent, BusinessExpenseDetailsComponent, HouseHoldDetailsComponent, OtherBusinessIncomeDetailsComponent, ManagePurchaseComponent, ManageBusinesExpenseComponent, ManageHouseHoldComponent, ManageOtherBusinessIncomeComponent, GrossProfitCalculationComponent, ManageDailySalesComponent, PdStatusChangeDialogueComponent, PdLocatedMapViewDirective, ViewLocationComponent, GetAnswerableFormsPipe, ConfirmAiDetailsComponent, RentalVerificationComponent], + declarations: [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, RupeeCurrencyFormatPipe, NumberToWordsPipe, DeleteRecordsCountPipe, BusinessAssetsInfoComponent, BusinessBankingDetailsComponent, SalesDetailsComponent, DailySalesDetailsComponent, SalesCalculationComponent, ManageSalesComponent, PurchaseDetailsComponent, BusinessExpenseDetailsComponent, HouseHoldDetailsComponent, OtherBusinessIncomeDetailsComponent, ManagePurchaseComponent, ManageBusinesExpenseComponent, ManageHouseHoldComponent, ManageOtherBusinessIncomeComponent, GrossProfitCalculationComponent, ManageDailySalesComponent, PdStatusChangeDialogueComponent, PdLocatedMapViewDirective, ViewLocationComponent, GetAnswerableFormsPipe, ConfirmAiDetailsComponent, RentalVerificationComponent, ManageDailyPurchaseComponent, DailyPurchaseDetailsComponent], imports: [ CommonModule, ManagePdRoutingModule, @@ -194,13 +196,13 @@ const pdCustomNotifierOptions: NotifierOptions = { AgmCoreModule.forRoot({apiKey: 'AIzaSyCXsHTus6hyIB8jYvt9ZEIbZve-2vWeQRg'}),OwlDateTimeModule, 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, 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], + 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, AssessedIncomeComponent, AllocationViewMoreComponent, GeneralInfoComponent, PdRequirementComponent, OtherApplicantDetailsComponent, NeighbourHoodComponent, BusinessOtherFamilyMemberComponent, BusinessInfoGroupComponent,DailySalesDetailsComponent,DailyPurchaseDetailsComponent, SalesCalculationComponent, PurchaseDetailsComponent, BusinessExpenseDetailsComponent, HouseHoldDetailsComponent, OtherBusinessIncomeDetailsComponent, ManageSalesComponent, ManagePurchaseComponent, ManageBusinesExpenseComponent, ManageHouseHoldComponent, ManageOtherBusinessIncomeComponent, GrossProfitCalculationComponent, ManageDailySalesComponent,ManageDailyPurchaseComponent, PdStatusChangeDialogueComponent, ViewLocationComponent, ConfirmAiDetailsComponent, RentalVerificationComponent], providers: [PdTrigerService, GetGeometricLocationService,{provide: MAT_DATE_LOCALE, useValue: 'en-GB'}, {provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]}, {provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS}, PdLocatedMapViewDirective], entryComponents: [PdAllocationComponent, SmartPdAllocationComponent, SchedulePdComponent, EditPdApplicantComponent, EditPdMasterComponent, TelePdAllocationComponent, AllocationViewMoreComponent, PersonalInfoComponent,BusinessAssetsInfoComponent, - ClientInfoComponent, SupplierInfoComponent, CurrentLoanComponent, LoanDetailsComponent, OtherIncomeComponent, AssetsInfoComponent, AddressComponent, FamilyDetailsComponent, BankingDetailsComponent, StockComponent, EmploymentInfoComponent, BusinessInfoComponent, FinancialInfoComponent, LenderRepresentativeComponent, AssessedIncomeComponent, GeneralInfoComponent, PdRequirementComponent, ModelEditPdReportComponent, OtherApplicantDetailsComponent, NeighbourHoodComponent, DialogChangeCurrentVenrsion, FinalRemarksComponent, BusinessOtherFamilyMemberComponent, QcReviewComponent, BusinessInfoGroupComponent,BusinessBankingDetailsComponent, ManageSalesComponent, ManagePurchaseComponent, ManageBusinesExpenseComponent, ManageHouseHoldComponent, ManageOtherBusinessIncomeComponent, ManageDailySalesComponent,PdStatusChangeDialogueComponent, ViewLocationComponent, ConfirmAiDetailsComponent, RentalVerificationComponent], + ClientInfoComponent, SupplierInfoComponent, CurrentLoanComponent, LoanDetailsComponent, OtherIncomeComponent, AssetsInfoComponent, AddressComponent, FamilyDetailsComponent, BankingDetailsComponent, StockComponent, EmploymentInfoComponent, BusinessInfoComponent, FinancialInfoComponent, LenderRepresentativeComponent, AssessedIncomeComponent, GeneralInfoComponent, PdRequirementComponent, ModelEditPdReportComponent, OtherApplicantDetailsComponent, NeighbourHoodComponent, DialogChangeCurrentVenrsion, FinalRemarksComponent, BusinessOtherFamilyMemberComponent, QcReviewComponent, BusinessInfoGroupComponent,BusinessBankingDetailsComponent, ManageSalesComponent, ManagePurchaseComponent, ManageBusinesExpenseComponent, ManageHouseHoldComponent, ManageOtherBusinessIncomeComponent, ManageDailySalesComponent, ManageDailyPurchaseComponent, PdStatusChangeDialogueComponent, ViewLocationComponent, ConfirmAiDetailsComponent, RentalVerificationComponent], }) export class ManagePdModule { diff --git a/ng6-seed/src/app/personal-discussion/pd-service/pd-triger.service.ts b/ng6-seed/src/app/personal-discussion/pd-service/pd-triger.service.ts index 4220f0963..42c29cfaa 100755 --- a/ng6-seed/src/app/personal-discussion/pd-service/pd-triger.service.ts +++ b/ng6-seed/src/app/personal-discussion/pd-service/pd-triger.service.ts @@ -353,6 +353,11 @@ export class PdTrigerService { ) } + /* To get TypeofActivity's Product And Service From About Business, + * Used In 1) SupplierForm + * 2) ClientForm + * 3) AI - Sales Tab - Sales DailyWise & Sales ItemWise + */ getTypeofActivityForSuppliedInfoForm(pd_id: any,company_id:any): Observable { return this._http.post(this.apiUrl + "getTypeOfActivetyFromBusinessForm", { "records": { "pd_id": pd_id,"company_id":company_id } }) .pipe( @@ -486,10 +491,13 @@ export class PdTrigerService { ) } - /** For Stock Details - * To Get The Products With TypeofActivity From Business - **/ - stockFormAccess(pdid: any,companyid: any): Observable { + + /* To get TypeofActivity's Product From About Business, + * To get RawMaterial's From Supplier Form, + * Used In 1) StockForm + * 2) AI - Purchase Tab + */ + getProductsFromBusinessAndSupplier(pdid: any,companyid: any): Observable { // { "pd_id":"104","company_id":"1"} return this._http.post(this.apiUrl + "getProductsFromBusiness", { "pd_id" : pdid , "company_id":companyid }) .pipe(