merge master-newdesign

mekawy-issues
Mohamed Mekawy 6 years ago
commit 081175773f

@ -22,6 +22,7 @@ export class AbsenceReplacementListComponent implements OnInit {
selectedValue: any; selectedValue: any;
inputSearch: any; inputSearch: any;
selEmpName: any; selEmpName: any;
selectedReplacedEmp: any;
selectedUserInf: any; selectedUserInf: any;
userNote: any; userNote: any;
getPassNotificationDetails: any; getPassNotificationDetails: any;
@ -63,7 +64,7 @@ export class AbsenceReplacementListComponent implements OnInit {
} }
ngOnInit() { ngOnInit() {
this.selectedReplacedEmp = this.cs.sharedService.getSharedData('selectedReplacedEmp');
this.demoeAttach = [{ this.demoeAttach = [{
USER_NAME: '18888', USER_NAME: '18888',
EMPLOYEE_DISPLAY_NAME: "AAA fgfhfhfhf hyutyututut ", EMPLOYEE_DISPLAY_NAME: "AAA fgfhfhfhf hyutyututut ",
@ -147,7 +148,7 @@ export class AbsenceReplacementListComponent implements OnInit {
// this.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME=""; // this.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME="";
// this.WorkListReplacmentEmployeeObj.P_SEARCH_EMAIL_ADDRESS=this.inputSearch; // this.WorkListReplacmentEmployeeObj.P_SEARCH_EMAIL_ADDRESS=this.inputSearch;
// } // }
this.WorkListReplacmentEmployeeObj.P_SELECTED_EMPLOYEE_NUMBER =this.selectedReplacedEmp;
this.worklistService.getReplacmentEmployeeList(this.WorkListReplacmentEmployeeObj). this.worklistService.getReplacmentEmployeeList(this.WorkListReplacmentEmployeeObj).
subscribe((result: WorKListReplacmentEmployeeResponse) => { subscribe((result: WorKListReplacmentEmployeeResponse) => {
this.handleWorkListReplacmentEmployeeResult(result); this.handleWorkListReplacmentEmployeeResult(result);

@ -21,7 +21,7 @@
</ion-item> </ion-item>
<ion-item *ngIf="hoursOrDay!='D'" class='dynamicField'> <ion-item *ngIf="hoursOrDay!='D'" class='dynamicField'>
<ion-label position='floating' class="colBold requiredClass">{{ts.trPK('submitAbsence','startTime')}} </ion-label> <ion-label position='floating' class="colBold requiredClass">{{ts.trPK('submitAbsence','startTime')}} </ion-label>
<ion-datetime displayFormat="HH:mm" [(ngModel)]="startTime" required></ion-datetime> <ion-datetime doneText="{{doneText}}" cancelText="{{cancelText}}" displayFormat="HH:mm" [(ngModel)]="startTime" required></ion-datetime>
</ion-item> </ion-item>
<ion-item class='dynamicField'> <ion-item class='dynamicField'>
<ion-label position='floating' class="colBold requiredClass">{{ts.trPK('submitAbsence','endDate')}}</ion-label> <ion-label position='floating' class="colBold requiredClass">{{ts.trPK('submitAbsence','endDate')}}</ion-label>
@ -32,7 +32,7 @@
<ion-item *ngIf="hoursOrDay!='D'" class='dynamicField'> <ion-item *ngIf="hoursOrDay!='D'" class='dynamicField'>
<ion-label position='floating' class="colBold requiredClass">{{ts.trPK('submitAbsence','endTime')}}</ion-label> <ion-label position='floating' class="colBold requiredClass">{{ts.trPK('submitAbsence','endTime')}}</ion-label>
<ion-datetime displayFormat="HH:mm" [(ngModel)]="endTime" required></ion-datetime> <ion-datetime doneText="{{doneText}}" cancelText="{{cancelText}}" displayFormat="HH:mm" [(ngModel)]="endTime" required></ion-datetime>
</ion-item> </ion-item>
<ion-item class='dynamicField'> <ion-item class='dynamicField'>
<ion-label class="colBold" >{{ts.trPK('submitAbsence','totalDays')}} </ion-label> <ion-label class="colBold" >{{ts.trPK('submitAbsence','totalDays')}} </ion-label>

@ -78,6 +78,8 @@ export class SubmitAbsenceComponent implements OnInit {
getPassNotificationDetails: any; getPassNotificationDetails: any;
getPassdirfromNotifiPage: boolean = false; getPassdirfromNotifiPage: boolean = false;
direction: string; direction: string;
doneText: string;
cancelText: string;
functionName: string = ""; functionName: string = "";
private submitAbsObjList: any = []; private submitAbsObjList: any = [];
@ViewChild(IonSelect) select: IonSelect; @ViewChild(IonSelect) select: IonSelect;
@ -135,6 +137,8 @@ export class SubmitAbsenceComponent implements OnInit {
ngOnInit() { ngOnInit() {
this.getAbsenceTypes(); this.getAbsenceTypes();
this.doneText = this.direction === 'en' ? 'Done' : 'تم';
this.cancelText = this.direction === 'en' ? 'Cancel' : 'إلغاء';
} }
private getAbsenceDffStructure() { private getAbsenceDffStructure() {
const body = { const body = {
@ -243,6 +247,7 @@ export class SubmitAbsenceComponent implements OnInit {
} }
async SearchReplacment() { async SearchReplacment() {
this.common.sharedService.setSharedData(this.selEmp, 'selectedReplacedEmp');
const modal = await this.modalCtrl.create({ const modal = await this.modalCtrl.create({
component: AbsenceReplacementListComponent, component: AbsenceReplacementListComponent,
backdropDismiss: false backdropDismiss: false

@ -53,10 +53,10 @@
</ion-item> </ion-item>
<ion-item> <!-- <ion-item>
<ion-label>{{ts.trPK('login','remeber-me')}}</ion-label> <ion-label>{{ts.trPK('login','remeber-me')}}</ion-label>
<ion-checkbox [(ngModel)]="remeberMe" (ionChange)="addValue($event)" ></ion-checkbox> <ion-checkbox [(ngModel)]="remeberMe" (ionChange)="addValue($event)" ></ion-checkbox>
</ion-item> </ion-item> -->
<div class="centerDiv signupDiv" *ngIf="isAppleStore==false"> <div class="centerDiv signupDiv" *ngIf="isAppleStore==false">
<a>{{ts.trPK('login','signup')}}</a> <a>{{ts.trPK('login','signup')}}</a>

@ -71,7 +71,7 @@ export class LoginComponent implements OnInit, OnDestroy {
public password: string; public password: string;
private language: string; private language: string;
public username: string; public username: string;
public remeberMe: boolean; public remeberMe = true;
private iosLink: string; private iosLink: string;
private androidLink: string; private androidLink: string;
public currentLang = 1; public currentLang = 1;

@ -323,7 +323,7 @@ export class AddEitComponent implements OnInit {
feildsList[i].APPLICATION_COLUMN_NAME, feildsList[i].APPLICATION_COLUMN_NAME,
defaultVal, defaultVal,
containerId, containerId,
defaultVal, defaultValText,
feildsList[i].MOBILE_ENABLED, feildsList[i].MOBILE_ENABLED,
feildsList[i].DISPLAY_FLAG, feildsList[i].DISPLAY_FLAG,
feildsList[i].REQUIRED_FLAG feildsList[i].REQUIRED_FLAG

@ -24,7 +24,7 @@
doneText="Done" doneText="Done"
cancelText="Cancel" cancelText="Cancel"
></ion-datetime> --> ></ion-datetime> -->
<ion-datetime [(ngModel)]="Sdate" class="datetime" [placeholder]="Select"displayFormat="DD MMMM YYYY" <ion-datetime [(ngModel)]="Sdate" class="datetime" placeholder="Select" displayFormat="DD MMMM YYYY"
cancelText="{{ts.trPK('general','cancel')}}" doneText="{{ts.trPK('general','done')}}" cancelText="{{ts.trPK('general','cancel')}}" doneText="{{ts.trPK('general','done')}}"
(ionChange)="getAccrualBalance()"></ion-datetime> (ionChange)="getAccrualBalance()"></ion-datetime>
<!-- <ion-datetime [(ngModel)]="Sdate" class="datetime" displayFormat="DD MMMM YYYY" placeholder="DD MMMM YYYY" <!-- <ion-datetime [(ngModel)]="Sdate" class="datetime" displayFormat="DD MMMM YYYY" placeholder="DD MMMM YYYY"

@ -110,7 +110,7 @@ export class EitListComponent implements OnInit {
getUserDetails(){ getUserDetails(){
this.authService.loadAuthenticatedUser().subscribe((user: AuthenticatedUser) => { this.authService.loadAuthenticatedUser().subscribe((user: AuthenticatedUser) => {
if (user) { if (user) {
this.emp_no=user.EMPLOYEE_NUMBER; // this.emp_no=user.EMPLOYEE_NUMBER;
} }
}); });
@ -124,7 +124,7 @@ export class EitListComponent implements OnInit {
let todayDate = month + '/' + day + '/' + year; let todayDate = month + '/' + day + '/' + year;
let effectiveDate = todayDate; let effectiveDate = todayDate;
const request = { const request = {
P_SELECTED_EMPLOYEE_NUMBER: this.emp_no, P_SELECTED_EMPLOYEE_NUMBER: this.selEmp,
P_EFFECTIVE_DATE: effectiveDate P_EFFECTIVE_DATE: effectiveDate
}; };
this.accrualService this.accrualService

@ -132,7 +132,7 @@ export class DevicePermissionsService {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.cs.confirmAlertDialogPrimarySecondary(() => { this.cs.confirmAlertDialogPrimarySecondary(() => {
resolve(true); resolve(true);
}, this.ts.trPK('general', 'accept'), }, this.ts.trPK('general', 'confirm'),
() => { () => {
resolve(false); resolve(false);
}, this.ts.trPK('general', 'not-now'), this.ts.trPK('general', 'confirm'), message }, this.ts.trPK('general', 'not-now'), this.ts.trPK('general', 'confirm'), message

@ -12,7 +12,7 @@
</div> </div>
<div class="result-text-container" [ngStyle]="showChart === false ? {'visibility': 'hidden'} : {}"> <div class="result-text-container" [ngStyle]="showChart === false ? {'visibility': 'hidden'} : {}">
<span *ngIf="selectedFilter === 'ALL'">{{newWorkListResponse.length + ITGCount}} {{ts.trPK('work-list','of')}} </span> <span *ngIf="selectedFilter === 'ALL'">{{newWorkListResponse.length + ITGCount}} {{ts.trPK('work-list','of')}} </span>
<span *ngIf="showSearchButton && newWorkListResponse.length > 0 && selectedFilter !== 'ALL' && itemType !== ''">{{newWorkListResponse.length}} of </span> <span *ngIf="showSearchButton && newWorkListResponse.length > 0 && selectedFilter !== 'ALL' && itemType !== ''">{{newWorkListResponse.length}} {{ts.trPK('work-list','of')}} </span>
<h2 *ngIf="!showSearchButton">{{totalRequestCount}}</h2> <h2 *ngIf="!showSearchButton">{{totalRequestCount}}</h2>
<h2 *ngIf="showSearchButton && newWorkListResponse.length > 0 && itemType === ''">{{newWorkListResponse[0].NO_OF_ROWS + ITGCount}}</h2> <h2 *ngIf="showSearchButton && newWorkListResponse.length > 0 && itemType === ''">{{newWorkListResponse[0].NO_OF_ROWS + ITGCount}}</h2>
<h2 *ngIf="showSearchButton && newWorkListResponse.length > 0 && selectedFilter !== 'ALL' && itemType !== ''">{{newWorkListResponse[0].NO_OF_ROWS}}</h2> <h2 *ngIf="showSearchButton && newWorkListResponse.length > 0 && selectedFilter !== 'ALL' && itemType !== ''">{{newWorkListResponse[0].NO_OF_ROWS}}</h2>
@ -69,7 +69,7 @@
</div> </div>
</div> </div>
</div> </div>
<div [ngClass]="showFormattedData.length > 0 ? 'work-list-container' : ''" *ngIf="selectedFilter == 'ITG'" > <div [ngClass]="ITGItem.length > 0 ? 'work-list-container' : ''" *ngIf="selectedFilter == 'ITG'" >
<!-- <div *ngFor='let segmentInfo of ITGItem[0]; let i= index' (click)='openITG(segmentInfo)'> --> <!-- <div *ngFor='let segmentInfo of ITGItem[0]; let i= index' (click)='openITG(segmentInfo)'> -->
<div *ngFor='let segmentInfo of ITGItem[0]; let i= index' > <div *ngFor='let segmentInfo of ITGItem[0]; let i= index' >
@ -90,7 +90,10 @@
</div> </div>
</div> </div>
</div> </div>
<div class="no-data-available" *ngIf="showFormattedData.length === 0"> <div class="no-data-available" *ngIf="showFormattedData.length === 0 && selectedFilter != 'ITG'">
<span>{{ts.trPK('work-list','No-data-available')}}</span>
</div>
<div class="no-data-available" *ngIf="ITGItem.length === 0 && selectedFilter == 'ITG'">
<span>{{ts.trPK('work-list','No-data-available')}}</span> <span>{{ts.trPK('work-list','No-data-available')}}</span>
</div> </div>
</div> </div>

@ -214,10 +214,8 @@ export class HomeComponent implements OnInit {
} else if (notification.ITEM_TYPE === 'INVMOA') { } else if (notification.ITEM_TYPE === 'INVMOA') {
this.filters[4].value = this.totalMR; this.filters[4].value = this.totalMR;
this.data.datasets[0].data[3] = notification.OPEN_NTF_NUMBER; this.data.datasets[0].data[3] = notification.OPEN_NTF_NUMBER;
} else if (notification.ITEM_TYPE === 'ITG') {
this.filters[5].value = notification.OPEN_NTF_NUMBER;
this.data.datasets[0].data[4] = notification.OPEN_NTF_NUMBER;
} }
this.data.datasets[0].data[4] = this.ITGCount;
} }
this.showChart = true; this.showChart = true;
this.common.stopLoading(); this.common.stopLoading();
@ -433,6 +431,9 @@ export class HomeComponent implements OnInit {
} }
} else { } else {
this.newWorkListResponse = []; this.newWorkListResponse = [];
this.data.datasets[0].data[4] = this.ITGCount;
this.showChart = true;
this.common.stopLoading();
} }
} }
@ -508,8 +509,11 @@ export class HomeComponent implements OnInit {
this.ITGSegment[0].names = names; this.ITGSegment[0].names = names;
this.setActive(this.ITGSegment[0].code); this.setActive(this.ITGSegment[0].code);
} }
for (let i = 1; i < result.RequestType.length; i++) { console.log(result.RequestType);
this.ITGSegment[i] = { let count =1;
for (let i = 0; i < result.RequestType.length; i++) {
console.log()
this.ITGSegment[count] = {
name: result.RequestType[i].RequestTypeName, name: result.RequestType[i].RequestTypeName,
code: result.RequestType[i].RequestTypeCode, code: result.RequestType[i].RequestTypeCode,
data: result.RequestType[i].RequestDetails, data: result.RequestType[i].RequestDetails,
@ -517,7 +521,9 @@ export class HomeComponent implements OnInit {
}; };
datas[i] = result.RequestType[i].RequestDetails; datas[i] = result.RequestType[i].RequestDetails;
names[i] = result.RequestType[i].RequestTypeCode; names[i] = result.RequestType[i].RequestTypeCode;
count++;
} }
console.log(this.ITGSegment);
}); });
} }
@ -525,21 +531,12 @@ export class HomeComponent implements OnInit {
Details() { Details() {
this.workListService.getITGDetails('', '', this.isPostNoLoad) this.workListService.getITGDetails('', '', this.isPostNoLoad)
.subscribe((result: any) => { .subscribe((result: any) => {
this.ITGCount = result.TotalCount;
this.totalRequestCount = this.totalRequestCount + result.TotalCount; this.totalRequestCount = this.totalRequestCount + result.TotalCount;
this.filters[5].value = result.TotalCount; this.filters[5].value = result.TotalCount;
}); });
} }
ITGNotification() {
// this.Details();
this.isAll = false;
this.isPR = false;
this.isPO = false;
this.isMR = false;
this.isHR = false;
this.isITG = true;
}
searchBtn() { searchBtn() {
this.isSearch = !this.isSearch; this.isSearch = !this.isSearch;
} }

@ -7,5 +7,5 @@ public P_PAGE_LIMIT : Number;
public P_SEARCH_USER_NAME:String; public P_SEARCH_USER_NAME:String;
public P_SEARCH_EMPLOYEE_DISPLAY_NAME:String; public P_SEARCH_EMPLOYEE_DISPLAY_NAME:String;
public P_SEARCH_EMAIL_ADDRESS:String; public P_SEARCH_EMAIL_ADDRESS:String;
public P_SELECTED_EMPLOYEE_NUMBER:any;
} }

@ -22,7 +22,11 @@
<ion-col> <ion-col>
<label class="colItemReq"> {{dataContant.Title}}</label> <label class="colItemReq"> {{dataContant.Title}}</label>
<br /> <br />
<label>{{dataContant.Value}}</label> <label *ngIf="dataContant.Value">{{dataContant.Value}}</label>
<div *ngIf="dataContant.MultipleValue">
<label *ngFor="let multiData of dataContant.MultipleValue">{{multiData}}
<br/></label>
</div>
</ion-col> </ion-col>
</ion-row> </ion-row>
<ion-row *ngIf='dataContant.TableValue'> <ion-row *ngIf='dataContant.TableValue'>

@ -33,6 +33,7 @@ export class WorkListMainItgComponent implements OnInit {
public request_details: any; public request_details: any;
public segmentsArray: { name: string, number: number }[] = []; public segmentsArray: { name: string, number: number }[] = [];
public segmentData: { name: string, data: any }[] = []; public segmentData: { name: string, data: any }[] = [];
public requestDetailsData: { name: string, data: any }[] = [];
public header: any = []; public header: any = [];
public rows: any = []; public rows: any = [];
public workList: any; public workList: any;
@ -84,10 +85,20 @@ export class WorkListMainItgComponent implements OnInit {
this.workListService.getITGFormDetails(this.request).subscribe((result: any) => { this.workListService.getITGFormDetails(this.request).subscribe((result: any) => {
this.request_details = result.ITGRequest; this.request_details = result.ITGRequest;
this.grantInfo = result.ITGRequest.GrantFields; this.grantInfo = result.ITGRequest.GrantFields;
let count =0;
for (let i = 0; i < result.ITGRequest.FieldGoups.length; i++) { for (let i = 0; i < result.ITGRequest.FieldGoups.length; i++) {
this.segmentsArray[i] = { name: result.ITGRequest.FieldGoups[i].Title, number: i }; this.segmentsArray[i] = { name: result.ITGRequest.FieldGoups[i].Title, number: i };
this.segmentData[i] = { name: result.ITGRequest.FieldGoups[i].Title, data: result.ITGRequest.FieldGoups[i].Fields } this.segmentData[i] = { name: result.ITGRequest.FieldGoups[i].Title, data: result.ITGRequest.FieldGoups[i].Fields }
for (let j = 0; j < this.segmentData[i].data.length; j++) {
if (this.segmentData[i].data[j].TableValue){
this.requestDetailsData[count] ={ name:this.segmentData[i].data[j].TableValue.Header,
data: this.segmentData[i].data[j].TableValue.Rows}
count++;
}
}
} }
console.log(this.requestDetailsData)
this.segmentsArray[this.segmentsArray.length] = { name: 'Approval Level', number: this.segmentsArray.length } this.segmentsArray[this.segmentsArray.length] = { name: 'Approval Level', number: this.segmentsArray.length }
this.workList = this.request_details.WFHistory; this.workList = this.request_details.WFHistory;
this.options = this.request_details.AllowedActions; this.options = this.request_details.AllowedActions;
@ -203,7 +214,7 @@ export class WorkListMainItgComponent implements OnInit {
request.ItemID = this.request_info.ItemID; request.ItemID = this.request_info.ItemID;
request.TaskID = this.request_info.ID; request.TaskID = this.request_info.ID;
request.Comments = this.commentText; request.Comments = this.commentText;
request.Comments = this.request_info.Comments; // request.Comments = this.request_info.Comments;
request.EmployeeNumber = this.request_info.EmployeeNumber; request.EmployeeNumber = this.request_info.EmployeeNumber;
request.NewUserEMPId = this.replcamentID; request.NewUserEMPId = this.replcamentID;
this.common.confirmAlertDialogAction( this.common.confirmAlertDialogAction(
@ -212,6 +223,7 @@ export class WorkListMainItgComponent implements OnInit {
url = WorkListMainItgComponent.APPROVAL; url = WorkListMainItgComponent.APPROVAL;
this.workListService.getITGActionRequest(request, url) this.workListService.getITGActionRequest(request, url)
.subscribe((result: any) => { .subscribe((result: any) => {
this.confirmMsg(1)
// this.common.openNotificationPage(); // this.common.openNotificationPage();
this.skip(); this.skip();
}); });
@ -219,6 +231,7 @@ export class WorkListMainItgComponent implements OnInit {
url = WorkListMainItgComponent.REJECT; url = WorkListMainItgComponent.REJECT;
this.workListService.getITGActionRequest(request, url) this.workListService.getITGActionRequest(request, url)
.subscribe((result: any) => { .subscribe((result: any) => {
this.confirmMsg(2)
// this.common.openNotificationPage(); // this.common.openNotificationPage();
this.skip(); this.skip();
}); });
@ -228,8 +241,10 @@ export class WorkListMainItgComponent implements OnInit {
if (!comments) { if (!comments) {
this.common.presentAlert(this.ts.trPK('worklist', 'empty-comment')); this.common.presentAlert(this.ts.trPK('worklist', 'empty-comment'));
} else { } else {
request.Comments = comments;
this.workListService.getITGActionRequest(request, url) this.workListService.getITGActionRequest(request, url)
.subscribe((result: any) => { .subscribe((result: any) => {
this.confirmMsg(3)
// this.common.openNotificationPage(); // this.common.openNotificationPage();
this.skip(); this.skip();
}); });
@ -239,6 +254,7 @@ export class WorkListMainItgComponent implements OnInit {
url = WorkListMainItgComponent.DELEGATE; url = WorkListMainItgComponent.DELEGATE;
this.workListService.getITGActionRequest(request, url) this.workListService.getITGActionRequest(request, url)
.subscribe((result: any) => { .subscribe((result: any) => {
this.confirmMsg(4)
// this.common.openNotificationPage(); // this.common.openNotificationPage();
this.skip(); this.skip();
}); });
@ -249,6 +265,7 @@ export class WorkListMainItgComponent implements OnInit {
} else { } else {
this.workListService.getITGActionRequest(request, url) this.workListService.getITGActionRequest(request, url)
.subscribe((result: any) => { .subscribe((result: any) => {
this.confirmMsg(5)
// this.common.openNotificationPage(); // this.common.openNotificationPage();
this.skip(); this.skip();
}); });
@ -263,6 +280,7 @@ export class WorkListMainItgComponent implements OnInit {
request.AdditionalFields = this.grantRequest; request.AdditionalFields = this.grantRequest;
this.workListService.getITGActionRequest(request, url) this.workListService.getITGActionRequest(request, url)
.subscribe((result: any) => { .subscribe((result: any) => {
this.confirmMsg(6)
// this.common.openNotificationPage(); // this.common.openNotificationPage();
this.skip(); this.skip();
}); });

@ -26,7 +26,7 @@ export class TextInput extends UiElement {
// "<div class='custom-text-area-element' style='" + this.hidden + "'>" + // "<div class='custom-text-area-element' style='" + this.hidden + "'>" +
"<ion-item style='" + this.hidden + "' class='dynamicField'>" + "<ion-item style='" + this.hidden + "' class='dynamicField'>" +
" <ion-label position='floating' style='font-size: medium;' class='" + requiredClass + " dynamiclable-float'>" + this.label + "</ion-label>" + " <ion-label position='floating' style='font-size: medium;' class='" + requiredClass + " dynamiclable-float'>" + this.label + "</ion-label>" +
" <ion-input style='' type='text' data-colm-text='" + this.textVal + "' id='" + this.elementId + "' value='" + this.value + "' " + this.disabled + "> </ion-input>" + " <ion-input style='' type='text' data-colm-text='" + this.value + "' id='" + this.elementId + "' value='" + this.textVal + "' " + this.disabled + "></ion-input>" +
"</ion-item> "; "</ion-item> ";
return template; return template;

@ -2457,7 +2457,7 @@
}, },
"earnings":{ "earnings":{
"en": "Earnings", "en": "Earnings",
"ar":"أرباح " "ar":"مستحقات "
}, },
"deductions":{ "deductions":{
"en": "Deductions", "en": "Deductions",

Loading…
Cancel
Save