PO+MO+PR+Payslip+customAccordin

MOHEMM-Q3-DEV-LATEST
ashwaq 6 years ago
parent fefdc5b8c3
commit b02743ead1

@ -711,8 +711,9 @@ export class ConfirmLoginComponent implements OnInit {
AuthenticationService.servicePrivilage=result.Privilege_List;
this.authService.setAuthenticatedUser(result).subscribe(() => {
console.log("insert");
if (this.platform.is("mobile")) {
if (!this.platform.is("mobile")) {
this.insertMobileLogin();

@ -98,7 +98,8 @@ import {Camera,CameraOptions, PictureSourceType} from '@ionic-native/Camera/ngx'
import {File} from '@ionic-native/file/ngx';
import {FileUploderProfileComponent} from './ui/file-uploder-profile/file-uploder-profile.component'
import { OpenNativeSettings } from '@ionic-native/open-native-settings/ngx';
import { AccordinCustomComponent } from './ui/accordin-custom/accordin-custom.component';
import { AccordinTabCustomComponent} from './ui/accordin-custom/accordin-tab-custom/accordin-tab-custom.component'
@NgModule({
imports: [
CommonModule,
@ -162,7 +163,9 @@ import { OpenNativeSettings } from '@ionic-native/open-native-settings/ngx';
ReplacementListComponent,
FileSelectDirective,
WorkListAttachViewComponent,
FileUploderProfileComponent
FileUploderProfileComponent,
AccordinTabCustomComponent,
AccordinCustomComponent
],
exports: [
NumberRangeComponent,
@ -213,7 +216,9 @@ import { OpenNativeSettings } from '@ionic-native/open-native-settings/ngx';
ReplacementListComponent,
FileSelectDirective,
WorkListAttachViewComponent,
FileUploderProfileComponent
FileUploderProfileComponent,
AccordinTabCustomComponent,
AccordinCustomComponent
],
providers: [
ConnectorService,

@ -408,6 +408,50 @@ export class CommonService {
// this.alerts.push(alert);
await alert.present();
}
async confirmAlertDialogAction(
onAccept: any,
acceptLabel: string,
onCancel: any,
cancelLabel: string,
title: string,
message: string
) {
this.clearAllAlerts();
const alert = await this.alertControllerIonic.create({
header: this.ts.trPK("general", "confirm"),
message: message,
buttons: [
{
text: cancelLabel,
role: "cancel",
cssClass: "cancelBtn",
handler: () => {
if (onCancel) {
onCancel();
}
this.alertControllerIonic.dismiss();
}
},
{
text: acceptLabel,
role: "Confirm",
cssClass: "confirmBtn",
handler: () => {
if (onAccept) {
onAccept();
}
this.alertControllerIonic.dismiss();
}
}
]
});
// this.alerts.push(alert);
await alert.present();
}
public clearAllAlerts() {
// custom solutions because of async issue
@ -984,6 +1028,9 @@ export class CommonService {
public openWorklistMainPRPage() {
this.nav.navigateForward(["/notification/worklist-main-PR"]);
}
public openWorklistMainPOPage() {
this.nav.navigateForward(["/notification/worklist-main-PO"]);
}
public openWorklistReplacementRollPage() {
this.nav.navigateForward(["/notification/work-list-replacement-roll"]);
}
@ -1002,6 +1049,15 @@ export class CommonService {
public openWorklistRollReplacement() {
this.nav.navigateForward(["/notification/work-list-replacement-roll"]);
}
public openItemHistoryPage() {
this.nav.navigateForward(["/notification/item-history-PO"]);
}
public openQutationAnalysisPage() {
this.nav.navigateForward(["/notification/qutation-analysis-PO"]);
}
public openWorklistMainMRPage() {
this.nav.navigateForward(["/notification/worklist-main-MR"]);
}
public openMySpecialistPage() {
this.nav.navigateForward(["/my-specialist/home"]);
}

@ -0,0 +1,27 @@
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { AccordinCustomComponent } from './accordin-custom.component';
describe('AccordinCustomComponent', () => {
let component: AccordinCustomComponent;
let fixture: ComponentFixture<AccordinCustomComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ AccordinCustomComponent ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(AccordinCustomComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -0,0 +1,51 @@
import { Component, OnInit, ViewChildren, QueryList, Input, AfterViewInit, ContentChildren, AfterContentInit, OnDestroy } from '@angular/core';
import { AccordinTabCustomComponent } from './accordin-tab-custom/accordin-tab-custom.component';
@Component({
selector: 'accordin-custom',
templateUrl: './accordin-custom.component.html',
styleUrls: ['./accordin-custom.component.scss'],
})
export class AccordinCustomComponent implements OnInit {
@ContentChildren(AccordinTabCustomComponent) tabs !: QueryList<AccordinTabCustomComponent>;
@Input() activeIndex: number;
private destroyed = false;
constructor() { }
ngOnInit() {
}
ngOnDestroy(): void {
this.destroyed = true;
}
ngAfterContentInit() {
this.tabs.notifyOnChanges();
this.tabs.changes.subscribe(() => {
this.processChildren();
});
this.processChildren();
}
private processChildren() {
// this.tabs.notifyOnChanges();
this.tabs.forEach((item: AccordinTabCustomComponent, index) => {
item.setAccordion(this);
if (index === this.activeIndex) {
setTimeout(() => {
if (!this.destroyed) {
item.setVisibility(true);
}
}, 200);
}
});
}
public tabClicked(clickedTab: AccordinTabCustomComponent) {
this.tabs.forEach((tab: AccordinTabCustomComponent) => {
if (tab !== clickedTab) {
tab.setVisibility(false);
} else {
}
});
}
}

@ -0,0 +1,43 @@
<ion-grid class="grid">
<!-- header -->
<ion-row class="ion-justify-content-center tab-header" (click)="onClick()" >
<ion-col [size]="12" no-padding>
<div class="header">
<img class="imgArrow" [src]="show ? 'assets/imgs/arrowUp.png' : 'assets/imgs/arrowDown.png' "
[ngClass]=" direction == 'ltr' ? 'icon right' : 'icon left' " >
<ng-container *ngIf="header && !subHeader" >
<p [ngClass]=" direction == 'ltr' ? 'title left' : 'title right' " > {{header}} </p>
</ng-container>
<ng-container *ngIf="header && subHeader ">
<!-- <p
[ngClass]=" direction == 'ltr' ? 'title-subtitle left' : 'title-subtitle right' "
class="innerheader" > <strong> {{header}} </strong> <br> {{subHeader}} </p> -->
<ion-row>
<ion-col col-6>
<p
[ngClass]=" direction == 'ltr' ? 'title-subtitle left' : 'title-subtitle right' "
class="innerheader" > <strong> {{header}} </strong>
</p>
<!-- </ion-col>
<ion-col col-6> -->
<p [ngClass]=" subHeadergreen == true ? 'headerGreen' : 'headerRed' " >
{{subHeader}}
</p>
</ion-col>
</ion-row>
</ng-container>
</div>
</ion-col>
</ion-row>
<!-- rerendered every tiem version-->
<ion-row class="zoomIn" *ngIf="show">
<ion-col [size]="12" no-padding>
<ng-content> </ng-content>
</ion-col>
</ion-row>
</ion-grid>

@ -0,0 +1,111 @@
.header {
width: 100%;
}
.grid {
padding-top: 0;//orign
margin: 10px;
background: #ffffff;
border-radius: 5px;
}
.tab-header {
padding: 0;
margin: 0;
border-color: transparent;//#e2e2e2;
border-style: solid;
border-width: 0cm 0cm 0.02cm 0cm;
padding-top: 0.2cm;
padding-bottom: 0.2cm;
}
.icon {
height: 0.9cm;
display: inline;
vertical-align: middle;
margin-left: 0.1cm;
margin-right: 0.1cm;
float: left;
}
.imgArrow{
height: 20px;
margin-top: 5px;
}
.left {
float: left;
}
.right {
float: right;
}
.title {
margin: 0;
margin-top: 0.2cm;
margin-left: 0.2cm;
margin-right: 0.2cm;
color: var(--dark);
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden !important;
font-size: 0.46cm;
width: 78%;
font-weight: bold;
}
.title-subtitle {
margin: 0;
margin-top: 0.2cm;
margin-left: 0.2cm;
margin-right: 0.2cm;
color: var(--dark);
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden !important;
// font-size: 0.36cm;
// width: 78%;
font-size: 0.46cm;
width: 32%;
font-weight: bolder;
}
.innerheader h6 {
margin: 0em !important;
}
h6
{
margin: 0em !important;
}
.headerRed{
color: var(--red);
margin: 0;
margin-top: 0.17cm;
margin-left: 0.2cm;
margin-right: 0.2cm;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden !important;
font-size: 0.56cm;
width: 32%;
font-weight: bolder
// text-align: right;
}
.headerGreen{
color: var(--green);
margin: 0;
margin-top: 0.17cm;
margin-left: 0.2cm;
margin-right: 0.2cm;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden !important;
font-size: 0.56cm;
width: 32%;
font-weight: bolder
// text-align: right;
}

@ -0,0 +1,27 @@
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { AccordinTabCustomComponent } from './accordin-tab-custom.component';
describe('AccordinTabCustomComponent', () => {
let component: AccordinTabCustomComponent;
let fixture: ComponentFixture<AccordinTabCustomComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ AccordinTabCustomComponent ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(AccordinTabCustomComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -0,0 +1,50 @@
import { Component, OnInit, Output, EventEmitter, Input, Host } from '@angular/core';
import { AccordinCustomComponent } from '../accordin-custom.component';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
@Component({
selector: 'accordin-tab-custom',
templateUrl: './accordin-tab-custom.component.html',
styleUrls: ['./accordin-tab-custom.component.scss'],
})
export class AccordinTabCustomComponent implements OnInit {
private accordion: AccordinCustomComponent;
private id: number;
public show = false;
public direction = 'ltr';
@Input() header: string;
@Input() subHeader: string;
@Input() cache = true;
@Input() color = 'primary';
@Input() subHeadergreen : true;
@Output() selected = new EventEmitter();
constructor( public ts: TranslatorService
) { }
ngOnInit() {
this.direction = TranslatorService.getCurrentDirection();
}
public setVisibility(show: boolean) {
this.show = show;
}
public setAccordion(accordion: AccordinCustomComponent) {
this.accordion = accordion;
}
public onClick() {
this.setVisibility(!this.show);
if (this.show) {
if (this.accordion) {
this.accordion.tabClicked(this);
}
}
}
}

@ -84,15 +84,15 @@
<ion-col size='9' class="notifincationList">
<ion-list class="notification-list" *ngIf="!noData">
<div class="timeline">
<div class="timelineMain">
<ion-item class="itemListNotification" *ngFor="let notificationList of filteredNotificationList"
lines='none'>
<div class="item-date"> {{notificationList.BEGIN_DATE | dateString }} </div>
<div class="timeline-item" slot="start">
<div class="timelineMain-item" slot="start">
<!-- <div class="item-date"> {{notificationList.BEGIN_DATE }} </div> -->
<div class="timeline-thumb bg-color-dot timeline-icon">
<div class="timelineMain-thumb bg-color-dot timelineMain-icon">
</div>
</div>

@ -16,12 +16,12 @@
right: 8px;
}
.timeline {
.timelineMain {
position: relative;
margin: 15px 0 0 0;
}
.timeline:before {
.timelineMain:before {
content: '';
position: absolute;
@ -35,7 +35,7 @@
/* z-index: 1; */
}
.timeline .timeline-thumb {
.timelineMain .timelineMain-thumb {
border-radius: 500px;
width: 50px;
@ -52,7 +52,7 @@
top: 0px;
}
.timeline .timeline-thumb.timeline-icon {
.timelineMain .timelineMain-thumb.timelineMain-icon {
height: 50px;
// text-align: center;
// color: white;
@ -62,12 +62,12 @@
.timeline .timeline-item {
.timelineMain .timelineMain-item {
width: 50px;
}
.timeline .timeline-stats {
.timelineMain .timelineMain-stats {
position: relative;
font-size: 12px;
color: var(--darkgray);
@ -139,14 +139,14 @@ ion-input ,ion-datetime{
}
.left {
--background: #f0efef;
.timeline:before{
.timelineMain:before{
left: 21px;
}
.notification-list ion-item{
padding-left: 3px;
margin-left: -12%;
}
.timeline-thumb{
.timelineMain-thumb{
left: 9%;
top: 30%;
}
@ -154,13 +154,13 @@ ion-input ,ion-datetime{
}
.right {
--background: #f0efef;
.timeline:before{
.timelineMain:before{
right: 62px;
}
.notification-list ion-item{
padding-right: 3px;
}
.timeline-thumb{
.timelineMain-thumb{
right: 37px;
}
}

@ -171,6 +171,13 @@ export class HomeComponent implements OnInit {
if(obj.REQUEST_TYPE == "PR"){
this.common.openWorklistMainPRPage();
}
else if(obj.REQUEST_TYPE == "PO"){
this.common.openWorklistMainPOPage();
}
else if(obj.REQUEST_TYPE == "MO"){
this.common.openWorklistMainMRPage();
}
else{
this.common.openWorklistMainPage();

@ -0,0 +1,227 @@
<ion-header>
<ion-toolbar class="header-toolbar">
<nav-buttons></nav-buttons>
<ion-title color="light">
{{ts.trPK('worklistMain','ITEM_HIS')}}
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content class="colorBG">
<!-- <ion-card>
<ion-card-header class="boxHdr">
<div class="hrTitle">{{'worklistMain, actionHis' | translate}}</div>
</ion-card-header>
<ion-card-content> -->
<!-- <ion-card class="cardContent"> -->
<!-- <ion-card-header class="boxHdr">
<div class="hrTitle"> {{ts.trPK('worklistMain','info')}} </div>
</ion-card-header> -->
<!-- <ion-card-content> -->
<div [hidden]="itemHistoryRes && itemHistoryRes.length > 0">
<p>{{ 'general, empty' | translate}}</p>
</div>
<ion-list class="itemeHistoryist" *ngIf="itemHistoryRes && itemHistoryRes.length > 0 ">
<div>
<ion-grid class="gridItemReq">
<ion-item class="itemReqContent" *ngFor="let itemHistory of itemHistoryRes; let i=index; ">
<div class="itemReqDiv">
<ion-row>
<ion-col class="colItemReqHeader">
<!-- <label for="">{{ts.trPK('worklistMain','description')}}
</label> -->
<!-- </ion-col>
<ion-col> -->
<label for="">{{i+1}}. {{itemHistory.OU_NAME}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','operating_unit')}}
</label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.OU_NAME}} </ion-label>
</ion-col>
<!-- </ion-row>
<ion-row> -->
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','PONumber')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.PO_NUMBER}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','revision')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.REVISION_NUM}} </ion-label>
</ion-col>
<!-- </ion-row>
<ion-row> -->
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','CreationDate')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.CREATION_DATE}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Supplier')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.SUPPLIER}} </ion-label>
</ion-col>
<!-- </ion-row>
<ion-row> -->
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Buyer')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.BUYER}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','uom')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.UOM}} </ion-label>
</ion-col>
<!-- </ion-row>
<ion-row> -->
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quantity_ordered')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.QUANTITY_ORDERED}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quantity_received')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.QUANTITY_RECEIVED}} </ion-label>
</ion-col>
<!-- </ion-row>
<ion-row> -->
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','bonus_quantity')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.BONUS_QUANTITY}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','purchase_price')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.PURCHASE_PRICE}} </ion-label>
</ion-col>
<!-- </ion-row>
<ion-row> -->
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','discount')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.DISCOUNT_PERCENTAGE}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','balance_quantity')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.BALANCE_QUANTITY}} </ion-label>
</ion-col>
<!-- </ion-row>
<ion-row> -->
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','net_price')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.NET_PRICE}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','closure_status')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.CLOSED_CODE}} </ion-label>
</ion-col>
</ion-row>
</div>
</ion-item>
</ion-grid>
</div>
</ion-list>
<!-- </ion-card-content>
</ion-card> -->
<ion-infinite-scroll (ionInfinite)="doInfinite($event)">
<ion-infinite-scroll-content></ion-infinite-scroll-content>
</ion-infinite-scroll>
</ion-content>

@ -0,0 +1,20 @@
.itemeHistoryist {
background: #f0efef;
padding: 6px;
/* margin-top: 20px; */
/* width: 100%;*/
}
ion-label.labelValue.sc-ion-label-ios-h.sc-ion-label-ios-s.ios.hydrated,
ion-label.labelValue.sc-ion-label-md-h.sc-ion-label-md-s.md.hydrated
{
white-space: pre-wrap !important;
--color: initial;
display: block;
color: var(--color);
font-family: var(--ion-font-family,inherit);
font-size: inherit;
text-overflow: ellipsis;
overflow: hidden;
-webkit-box-sizing: border-box;
box-sizing: border-box
}

@ -0,0 +1,27 @@
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ItemHistoryComponent } from './item-history.component';
describe('ItemHistoryComponent', () => {
let component: ItemHistoryComponent;
let fixture: ComponentFixture<ItemHistoryComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ItemHistoryComponent ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ItemHistoryComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -0,0 +1,112 @@
import { ViewNoteModalComponent } from './../view-note-modal/view-note-modal.component';
import { WorklistService } from './../service/worklist.service';
import { Component, OnInit } from '@angular/core';
import { WorkListActionHistoryRequest } from '../models/ActionHistoryReq';
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
import { ModalController } from '@ionic/angular';
import { POItemHistoryRequest} from '../models/POItemHistoryReq';
import { WorklistMainService } from '../service/work-list.main.service';
import { POItemHistoryRes } from '../models/POItemHistoryRes';
@Component({
selector: 'app-item-history',
templateUrl: './item-history.component.html',
styleUrls: ['./item-history.component.scss'],
})
export class ItemHistoryComponent implements OnInit {
getPassPOInfo: any;
itemHistoryRes: any;
IsReachEnd: boolean = false;
P_PAGE_NUM: number = 1;
P_PAGE_LIMIT: number = 50;
POItemHistoryReq:any;
getPassItemHistoreyList: any;
constructor(
public worklistMainService: WorklistMainService,
private cs: CommonService,
private ts: TranslatorService,
private modalCtrl: ModalController,
public worklistService: WorklistService
) {
this.getPassPOInfo = this.cs.sharedService.getSharedData('passPOInfo');
this.getPassItemHistoreyList = this.cs.sharedService.getSharedData('passItemHisList');
//itemHistoryRes
this.POItemHistoryReq = new POItemHistoryRequest();
this.POItemHistoryReq.P_PAGE_NUM = this.P_PAGE_NUM;
this.POItemHistoryReq.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
this.POItemHistoryReq.P_ITEM_ID= this.getPassPOInfo;
}
ngOnInit() {
this.getItemHistory(this.getPassPOInfo);
}
getItemHistory(itemID) {
console.log(itemID);
this.IsReachEnd = false;
// const request = new POItemHistoryRequest();
// request.P_ITEM_ID=parseInt(itemID);
// request.P_PAGE_LIMIT=50;
// request.P_PAGE_NUM=1;
this.worklistMainService.getPOItemHistory( this.POItemHistoryReq).
subscribe((result: POItemHistoryRes) => {
this.handleItemHistoryResult(result);
});
}
handleItemHistoryResult(result) {
if (this.cs.validResponse(result)) {
if (this.cs.hasData(result.GetPoItemHistoryList)) {
this.itemHistoryRes = result.GetPoItemHistoryList;
this.P_PAGE_NUM++;
let lastItemIndex = this.itemHistoryRes.length - 1;
if (result.GetPoItemHistoryList[lastItemIndex]) {
let lastitem = result.GetPoItemHistoryList[lastItemIndex];
if (lastitem.NO_OF_ROWS == lastitem.ROW_NUM) {
this.IsReachEnd = true;
} else {
this.IsReachEnd = false;
}
}
}
}
}
doInfinite(infiniteScroll) {
if (!this.IsReachEnd) {
// this.POItemHistoryReq.P_PAGE_NUM = this.P_PAGE_NUM;
this.worklistMainService.getPOItemHistory(this.POItemHistoryReq).
subscribe((result: any) => {
if (this.cs.validResponse(result)) {
if (result.GetPoItemHistoryList != undefined) {
this.P_PAGE_NUM++;
(result.GetPoItemHistoryList).forEach(element => {
if (element.ROW_NUM == element.NO_OF_ROWS) {
this.IsReachEnd = true;
} else {
this.IsReachEnd = false;
}
this.itemHistoryRes.push(element);
}, (Error) => console.log(Error), () => infiniteScroll.target.complete());
}// if list length >0
else {
this.IsReachEnd = true;
}
}// if response == 1
//this.pageNum++;
infiniteScroll.target.complete();
});
} else {
if (infiniteScroll)
infiniteScroll.target.complete();
}
}//end infiniteScroll
}

@ -21,6 +21,10 @@ import { WorkListDetailsComponent } from './work-list-details/work-list-details.
import { WorklistAttachService } from '../absence/service/work-list-attach.service';
import { WorklistMainPRComponent } from './worklist-main-pr/worklist-main-pr.component';
import { ApplyActionModalComponent } from './apply-action-modal/apply-action-modal.component';
import { WorklistMainPoComponent } from './worklist-main-po/worklist-main-po.component';
import { ItemHistoryComponent } from './item-history/item-history.component';
import { QutationAnalysisComponent } from './qutation-analysis/qutation-analysis.component';
import { WorklistMainMRComponent } from './worklist-main-mr/worklist-main-mr.component';
// import { WorklistMainComponent } from './worklist-main/worklist-main.component';
@ -78,6 +82,22 @@ const routes: Routes = [
{
path:'apply-action-modal',
component:ApplyActionModalComponent
},
{
path:'worklist-main-PO',
component:WorklistMainPoComponent
},
{
path:'item-history-PO',
component:ItemHistoryComponent
},
{
path:'qutation-analysis-PO',
component:QutationAnalysisComponent
},
{
path:'worklist-main-MR',
component:WorklistMainMRComponent
}
]
}
@ -104,7 +124,11 @@ const routes: Routes = [
WorkListActionHistoryComponent,
WorkListAttachComponent,
WorkListDetailsComponent,
WorklistMainPRComponent
WorklistMainPRComponent,
WorklistMainPoComponent,
ItemHistoryComponent,
QutationAnalysisComponent,
WorklistMainMRComponent
// WorklistMainComponent
],
providers:[WorklistService,WorklistMainService, WorklistAttachService]

@ -0,0 +1,210 @@
<ion-header>
<ion-toolbar class="header-toolbar">
<nav-buttons></nav-buttons>
<ion-title color="light">
{{ts.trPK('worklistMain','QUOTATION_ANALYSIS')}}
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content class="colorBG">
<!-- <ion-card>
<ion-card-header class="boxHdr">
<div class="hrTitle">{{'worklistMain, actionHis' | translate}}</div>
</ion-card-header>
<ion-card-content> -->
<!-- <ion-card class="cardContent"> -->
<!-- <ion-card-header class="boxHdr">
<div class="hrTitle"> {{ts.trPK('worklistMain','info')}} </div>
</ion-card-header> -->
<!-- <ion-card-content> -->
<div [hidden]="getQutationAnalysis && getQutationAnalysis.length > 0">
<p>{{ 'general, empty' | translate}}</p>
</div>
<ion-list class="itemeHistoryist" *ngIf="getQutationAnalysis && getQutationAnalysis.length > 0 ">
<div>
<ion-grid class="gridItemReq">
<ion-item class="itemReqContent" *ngFor="let QutationAnalysis of getQutationAnalysis; let i=index; ">
<div class="itemReqDiv">
<ion-row>
<ion-col class="colItemReqHeader">
<label for="">{{i+1}}. {{QutationAnalysis.ITEM_CODE}} - {{QutationAnalysis.ITEM_DESC}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','QuotationNumber')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{QutationAnalysis.QUOT_NUM}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','vendor_name')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{QutationAnalysis.VENDOR_NAME}} </ion-label>
</ion-col>
<!-- </ion-row>
<ion-row> -->
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','item_code')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{QutationAnalysis.ITEM_CODE}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','description')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{QutationAnalysis.ITEM_DESC}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<!-- </ion-row>
<ion-row> -->
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','QUOTATION_QTY')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{QutationAnalysis.QUOT_QTY}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quotation_uom')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{QutationAnalysis.QUOT_UOM}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<!-- </ion-row>
<ion-row> -->
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quotatio_net_price')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{QutationAnalysis.QUOT_UNIT_PRICE}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quotatio_line_tot')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{QutationAnalysis.QUOT_LINE_TOTAL}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<!-- </ion-row>
<ion-row> -->
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quotatio_bonus_quantity')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{QutationAnalysis.QUOT_BONUS_QTY}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quotation_delivery_date')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{QutationAnalysis.QUOT_DELIVERY_DATE}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<!-- </ion-row>
<ion-row> -->
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','MFG_part_number')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{QutationAnalysis.QUOT_MFG_PART_NUM}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','RFQ_number')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{QutationAnalysis.RFQ_NUM}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<!-- </ion-row>
<ion-row> -->
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','RFQ_qty')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{QutationAnalysis.RFQ_QTY}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','RFQ_UOM')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{QutationAnalysis.RFQ_UOM}} </ion-label>
</ion-col>
</ion-row>
</div>
</ion-item>
</ion-grid>
</div>
</ion-list>
<!-- </ion-card-content>
</ion-card> -->
<ion-infinite-scroll (ionInfinite)="doInfinite($event)">
<ion-infinite-scroll-content></ion-infinite-scroll-content>
</ion-infinite-scroll>
</ion-content>

@ -0,0 +1,21 @@
.itemeHistoryist {
background: #f0efef;
padding: 6px;
/* margin-top: 20px; */
/* width: 100%;*/
}
ion-label.labelValue.sc-ion-label-ios-h.sc-ion-label-ios-s.ios.hydrated,
ion-label.labelValue.sc-ion-label-md-h.sc-ion-label-md-s.md.hydrated
{
white-space: pre-wrap !important;
--color: initial;
display: block;
color: var(--color);
font-family: var(--ion-font-family,inherit);
font-size: inherit;
text-overflow: ellipsis;
overflow: hidden;
-webkit-box-sizing: border-box;
box-sizing: border-box
}

@ -0,0 +1,27 @@
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { QutationAnalysisComponent } from './qutation-analysis.component';
describe('QutationAnalysisComponent', () => {
let component: QutationAnalysisComponent;
let fixture: ComponentFixture<QutationAnalysisComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ QutationAnalysisComponent ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(QutationAnalysisComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -0,0 +1,125 @@
import { ViewNoteModalComponent } from './../view-note-modal/view-note-modal.component';
import { WorklistService } from './../service/worklist.service';
import { Component, OnInit } from '@angular/core';
import { WorkListActionHistoryRequest } from '../models/ActionHistoryReq';
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
import { ModalController } from '@ionic/angular';
import { POItemHistoryRequest} from '../models/POItemHistoryReq';
import { WorklistMainService } from '../service/work-list.main.service';
import { POItemHistoryRes } from '../models/POItemHistoryRes';
import { QuotationAnalysisRequest } from '../models/quotationAnalysisReq';
import { QuotationAnalysisResponse } from '../models/quotationAnalysisRes';
@Component({
selector: 'app-qutation-analysis',
templateUrl: './qutation-analysis.component.html',
styleUrls: ['./qutation-analysis.component.scss'],
})
export class QutationAnalysisComponent implements OnInit {
IsReachEnd: boolean = false;
P_PAGE_NUM: number = 1;
P_PAGE_LIMIT: number = 50;
POQuotationHISReq: QuotationAnalysisRequest;
getPassPOItemID: any;
getPassPOHeaderID: any;
getPassItemHistoreyList: any;
getQutationAnalysis:any;
constructor(public worklistMainService: WorklistMainService,
private cs: CommonService,
private ts: TranslatorService,
private modalCtrl: ModalController,
public worklistService: WorklistService) {
this.getPassPOItemID = this.cs.sharedService.getSharedData('passPOInfo');
this.getPassPOHeaderID = this.cs.sharedService.getSharedData('passPOHeader');
this.getPassItemHistoreyList = this.cs.sharedService.getSharedData('passItemHisList');
//itemHistoryRes
console.log("getPassPOItemID: "+this.getPassPOItemID);
console.log("getPassPOItemID: "+this.getPassPOHeaderID);
this.POQuotationHISReq = new QuotationAnalysisRequest();
this.POQuotationHISReq.P_PAGE_NUM = this.P_PAGE_NUM;
this.POQuotationHISReq.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
this.POQuotationHISReq.P_ITEM_ID= this.getPassPOItemID;
this.POQuotationHISReq.P_PO_HEADER_ID = this.getPassPOHeaderID;
}
ngOnInit() {
this.getQutationAnalysisFun( this.getPassPOHeaderID,this.getPassPOItemID);
}
public getQutationAnalysisFun(headerID,itemID) {
console.log("itemID"+ itemID+" headerID "+ headerID);
this.IsReachEnd = false;
const request = new QuotationAnalysisRequest();
request.P_ITEM_ID=parseInt(itemID);
request.P_PO_HEADER_ID=headerID;
request.P_PAGE_LIMIT=50;
request.P_PAGE_NUM=1;
this.worklistMainService.getQutationAnalysis(request).
subscribe((result: QuotationAnalysisResponse) => {
this.handleQutationAnalysisResult(result);
});
}
handleQutationAnalysisResult(result) {
if (this.cs.validResponse(result)) {
if (this.cs.hasData(result.GetQuotationAnalysisList)) {
//open page
//set sheard data
//
this.getQutationAnalysis = result.GetQuotationAnalysisList;
this.P_PAGE_NUM++;
let lastItemIndex = this.getQutationAnalysis.length - 1;
if (result.GetQuotationAnalysisList[lastItemIndex]) {
let lastitem = result.GetQuotationAnalysisList[lastItemIndex];
if (lastitem.NO_OF_ROWS == lastitem.ROW_NUM) {
this.IsReachEnd = true;
} else {
this.IsReachEnd = false;
}
}
}
}
}
doInfinite(infiniteScroll) {
console.log("hello");
if (!this.IsReachEnd) {
this.getQutationAnalysis.P_PAGE_NUM = this.P_PAGE_NUM;
this.worklistService.getActionHistory(this.getQutationAnalysis).
subscribe((result: any) => {
if (this.cs.validResponse(result)) {
if (result.GetQuotationAnalysisList != undefined) {
this.P_PAGE_NUM++;
(result.GetQuotationAnalysisList).forEach(element => {
if (element.ROW_NUM == element.NO_OF_ROWS) {
this.IsReachEnd = true;
} else {
this.IsReachEnd = false;
}
this.getQutationAnalysis.push(element);
}, (Error) => console.log(Error), () => infiniteScroll.target.complete());
}// if list length >0
else {
this.IsReachEnd = true;
}
}// if response == 1
//this.pageNum++;
infiniteScroll.target.complete();
});
} else {
if (infiniteScroll)
infiniteScroll.target.complete();
}
}//end infiniteScroll
}

@ -136,7 +136,9 @@ export class WorklistMainService {
errorLabel?: string
): Observable<POItemHistoryRes> {
const request = POItemHistoryReq;
this.authService.authenticateRequest(request);
this.authService.authenticateRequest(request);
// this.authService.setPublicFields(request);
return this.api.post(
WorklistMainService.getPOItemHistory,
request,

@ -0,0 +1,570 @@
<ion-header>
<ion-toolbar class="header-toolbar">
<ion-title color="light"> {{ts.trPK('worklistMain','title')}}</ion-title>
<ion-buttons slot="start">
<nav-buttons backLink="/notification/homepage"></nav-buttons>
</ion-buttons>
</ion-toolbar>
<ion-toolbar>
<ion-segment class="segmentPR" scrollable>
<ion-segment-button value="0" checked>
<!-- <ion-icon name="call">arrowRight</ion-icon> -->
<ion-label> {{ts.trPK('worklistMain','info')}}</ion-label>
</ion-segment-button>
<ion-segment-button value="1">
<!-- <ion-icon name="cloud-upload"></ion-icon> -->
<ion-label> {{ts.trPK('worklistMain','itemReq')}}</ion-label>
</ion-segment-button>
<ion-segment-button value="2">
<!-- <ion-icon name="paper"></ion-icon> -->
<ion-label>
{{'worklistMain, actionHis' | translate}}
</ion-label>
</ion-segment-button>
<ion-segment-button value="3">
<!-- <ion-icon name="code-working"></ion-icon> -->
<ion-label>{{'general, attachment' | translate}}
</ion-label>
</ion-segment-button>
</ion-segment>
</ion-toolbar>
</ion-header>
<ion-content class="colorBG">
<ion-slides pager="true" class="slides-gray-bullets">
<ion-slide class="slide-1">
<div *ngIf="pInformation && pInformation != '' " class="tipsPadding">{{pInformation}}</div>
<ion-card class="cardContent">
<!-- <ion-card-header class="boxHdr">
<div class="hrTitle"> {{ts.trPK('worklistMain','info')}} </div>
</ion-card-header> -->
<ion-card-content>
<ion-grid style="text-align: left">
<ion-row>
<ion-col>
<label class="colItemReq" for=""> {{ts.trPK('worklistMain','from')}}
</label>
<br />
<!-- </ion-col>
<ion-col> -->
<label for="">{{getPassNotificationDetails.FROM_USER}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','to')}}
</label>
<br />
<!-- </ion-col>
<ion-col> -->
<label for=""> {{getPassNotificationDetails.TO_USER}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','sent')}}
</label>
<br />
<!-- </ion-col>
<ion-col> -->
<label for="">{{getPassNotificationDetails.BEGIN_DATE}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','closed')}}
</label>
<br />
<!-- </ion-col>
<ion-col> -->
<label for="">{{getPassNotificationDetails.END_DATE}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','id')}}
</label>
<br />
<!-- </ion-col>
<ion-col> -->
<label for="">{{getPassNotificationDetails.NOTIFICATION_ID}}</label>
</ion-col>
</ion-row>
<ion-row *ngIf=" getPassNotificationDetails.RESPONDER != '' ">
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','responder')}}
</label>
<br />
<!-- </ion-col>
<ion-col> -->
<label for="">{{getPassNotificationDetails.RESPONDER}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','subject')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<label for="">{{getPassNotificationDetails.SUBJECT}} </label>
</ion-col>
</ion-row>
<!-- notificationBodyRes -->
<div *ngFor="let header of PRHeader">
<ion-row
*ngIf="header.HDR_ATTRIBUTE_NAME != 'Requisition Total' && header.HDR_ATTRIBUTE_NAME != 'Non-Recoverable Tax'">
<!-- *ngIf="header.HDR_ATTRIBUTE_NAME != 'Requisition Total' && header.HDR_ATTRIBUTE_NAME != 'Non-Recoverable Tax'"> -->
<ion-col>
<label class="colItemReq" for="">{{header.HDR_ATTRIBUTE_NAME}} </label>
<br />
<label for="">{{header.HDR_ATTRIBUTE_VALUE}} </label>
</ion-col>
</ion-row>
</div>
<br />
<ion-grid>
<div>
<ion-row style="text-align: center !important">
<ion-col *ngIf="totalH">
<div class="colItemReq" style="text-align: center !important">{{totalH}}</div>
<div class="labelTotal">{{valueH}}</div>
</ion-col>
<ion-col *ngIf="taxH ">
<div class="colItemReq" style="text-align: center !important">{{taxH}}</div>
<div class="labelTotal">{{taxvalueH}}</div>
</ion-col>
</ion-row>
</div>
</ion-grid>
</ion-grid>
</ion-card-content>
<ion-card-content>
<div>
<div id="notificationDynamicFields1">
</div>
</div>
<!-- <ion-item *ngIf="notificationButtonRes?.length >0" class="requiredItem">
<ion-label class="boldTxtNav">{{'actionHis, action' | translate}} </ion-label>
<ion-select okText="{{ts.trPK('general','ok')}}" cancelText="{{ts.trPK('general','cancel')}}"
[(ngModel)]="actionType" required>
<ion-select-option value="{{notificationButtons.BUTTON_ACTION}}"
*ngFor="let notificationButtons of notificationButtonRes; let i=index;">
{{notificationButtons.BUTTON_LABEL}}</ion-select-option>
</ion-select>
</ion-item> -->
</ion-card-content>
</ion-card>
</ion-slide>
<ion-slide>
<!-- <ion-card class="cardContent">
<ion-card-header class="boxHdr">
<div class="hrTitle"> {{ts.trPK('worklistMain','info')}} </div>
</ion-card-header>
<ion-card-content> -->
<div [hidden]="notificationBodyRes && notificationBodyRes.length > 0">
<p>{{ 'general, empty' | translate}}</p>
</div>
<ion-list class="itemReqList" *ngIf="notificationBodyRes && notificationBodyRes.length > 0 ">
<div>
<ion-grid class="gridItemReq">
<ion-item class="itemReqContent" *ngFor="let notificationList of notificationBodyRes; let i=index; " >
<div class="itemReqDiv">
<ion-row>
<ion-col class="colItemReqHeader">
<!-- <label for="">{{ts.trPK('worklistMain','description')}}
</label> -->
<!-- </ion-col>
<ion-col> -->
<label for="">{{i+1}}. {{notificationList.DESCRIPTION}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','code')}}
</label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{notificationList.ITEM_CODE}} </ion-label>
</ion-col>
<!-- </ion-row>
<ion-row> -->
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','unit')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{notificationList.UOM}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<!-- </ion-row>
<ion-row> -->
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quantity')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{notificationList.QUANTITY}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Date_Req')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{notificationList.DATE_REQUIRED}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<!-- </ion-row>
<ion-row> -->
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','line_status')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{notificationList.LINE_STATUS}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','date_status')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{notificationList.STATUS_DATE}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','trans_type')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{notificationList.TRANSACTION_TYPE_NAME}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','operating_unit')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{notificationList.OPERATING_UNIT}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','organization_code')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{notificationList.ORGANIZATION_CODE}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','organization')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{notificationList.ORGANIZATION_NAME}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','from_subinventory')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{notificationList.FROM_SUBINVENTORY}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','from_locator')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{notificationList.FROM_LOCATOR}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','to_subinventory')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{notificationList.TO_SUBINVENTORY}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','to_locator')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{notificationList.TO_LOCATOR}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','ShipToLocation')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{notificationList.SHIP_TO_LOCATION}} </ion-label>
</ion-col>
</ion-row>
</div>
</ion-item>
</ion-grid>
</div>
</ion-list>
<!-- </ion-card-content>
</ion-card> -->
</ion-slide>
<ion-slide>
<ion-card class="cardContent">
<ion-card-content>
<div [hidden]="actionHistoryRes && actionHistoryRes.length > 0">
<p>{{ 'general, empty' | translate}}</p>
</div>
<div *ngIf="actionHistoryRes && actionHistoryRes.length > 0 ">
<ion-list class="notification-list ">
<div class="timeline">
<ion-item *ngFor="let actionHistory of actionHistoryRes">
<div class="timeline-item" slot="start">
<!-- <div class="item-date"> {{notificationList.BEGIN_DATE }} </div> -->
<!-- [hidden]="actionHistory.NOTE == '' || actionHistory.NOTE == null"> -->
<div>
<button ion-button (click)="openNoteDetail(actionHistory.NOTE ,actionHistory.NAME)"
[hidden]="actionHistory.NOTE == '' || actionHistory.NOTE == null"
style=" background: none;width: 60%;">
<img src="../assets/imgs/noteSmall.png">
<!-- <ion-icon name="bookmark"></ion-icon> -->
</button>
</div>
<!-- [ngClass]="{'bg-blue-dot' : actionHistory.ACTION === 'Submitted' ,'statusGreanColor' :appointmentsArrive.Status != 1 && appointmentsArrive.Status != 2, 'statusRedColor' :appointmentsArrive.Status === 2}" -->
<div
[ngClass]="{'bg-blue-dot' : actionHistory.ACTION === 'Submitted' || actionHistory.ACTION === 'Submit' ,'bg-orange-dot' : actionHistory.ACTION === 'Pending' ,'bg-red-dot' : actionHistory.ACTION === 'Rejected','bg-green-dot' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Rejected' && actionHistory.ACTION != 'Submitted' && actionHistory.ACTION != 'Submit'}"
class="timeline-thumb timeline-icon">
</div>
</div>
<ion-col>
<ion-label
[ngClass]="{'bg-blue-txt' : actionHistory.ACTION === 'Submitted' || actionHistory.ACTION === 'Submit' ,'bg-orange-txt' : actionHistory.ACTION === 'Pending' ,'bg-red-txt' : actionHistory.ACTION === 'Rejected','bg-green-txt' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Rejected' && actionHistory.ACTION != 'Submitted' && actionHistory.ACTION != 'Submit'}"
class=""> {{actionHistory.ACTION}}</ion-label>
<ion-label> {{actionHistory.NAME}}
</ion-label>
<ion-label> {{actionHistory.NOTIFICATION_DATE| dateString }} </ion-label>
</ion-col>
</ion-item>
</div>
</ion-list>
</div>
</ion-card-content>
</ion-card>
</ion-slide>
<ion-slide>
<ion-card class="cardContent">
<ion-card-content>
<div [hidden]="attachmentRes && attachmentRes.length > 0">
<p>{{ 'general, notAttch' | translate}}</p>
</div>
<div *ngIf="attachmentRes && attachmentRes.length > 0 ">
<!-- <ion-card>
<ion-card-header class="boxHdr">
<div class="hrTitle">{{'worklistMain, suppDoc' | translate}}</div>
</ion-card-header>
<ion-card-content>
-->
<ion-grid>
<div *ngFor="let attachList of attachmentRes">
<ion-row (click)="OpenAttachFiles(attachList.FILE_DATA,attachList.FILE_CONTENT_TYPE)">
<ion-col col-12>
<div *ngIf="attachList.FILE_CONTENT_TYPE === 'pdf' || attachList.FILE_CONTENT_TYPE === 'PDF'">
<img float-start class="attachImg" src="../assets/imgs/pdf.png">
</div>
<div *ngIf="attachList.FILE_CONTENT_TYPE === 'txt'"> <img float-start class="attachImg"
src="../assets/imgs/doc.png">
</div>
<div
*ngIf="attachList.FILE_CONTENT_TYPE != 'txt' && attachList.FILE_CONTENT_TYPE != 'PDF' && attachList.FILE_CONTENT_TYPE != 'pdf' && attachList.FILE_CONTENT_TYPE != 'png' && attachList.FILE_CONTENT_TYPE != 'jpeg' && attachList.FILE_CONTENT_TYPE != 'jpg' && attachList.FILE_CONTENT_TYPE != 'PNG' && attachList.FILE_CONTENT_TYPE != 'JPEG' && attachList.FILE_CONTENT_TYPE != 'JPG'">
<img float-start class="attachImg" src="../assets/imgs/nonfile.png">
</div>
<div
*ngIf="attachList.FILE_CONTENT_TYPE === 'png' || attachList.FILE_CONTENT_TYPE === 'jpeg' || attachList.FILE_CONTENT_TYPE === 'jpg'|| attachList.FILE_CONTENT_TYPE === 'PNG' || attachList.FILE_CONTENT_TYPE === 'JPEG'|| attachList.FILE_CONTENT_TYPE === 'JPG'">
<img float-start class="attachImg" src="../assets/imgs/img.png">
</div>
<ion-label>
{{attachList.SEQ_NUM }}. {{attachList.FILE_NAME}} </ion-label>
</ion-col>
<!-- <ion-col col-2>
<button float-end class="attachImgBtn"
(click)="OpenAttachFiles(attachList.FILE_DATA,attachList.FILE_CONTENT_TYPE)">
<img class="attachImg" src="../assets/imgs/view.png">
</button>
</ion-col> -->
</ion-row>
</div>
</ion-grid>
<!-- </ion-card-content>
</ion-card> -->
</div>
</ion-card-content>
</ion-card>
</ion-slide>
</ion-slides>
<!-- <div id="notificationDynamicFields">
</div> -->
</ion-content>
<ion-footer class="footerSearchBtn">
<ion-row>
<ion-col col-12>
<div id="notificationDynamicFields">
</div>
</ion-col>
</ion-row>
<ion-row>
<!-- <div class="centerDiv"> -->
<ion-col col-2>
</ion-col>
<ion-col col-8>
<!-- <ion-button color="customnavy" class="gridBtn" (click)="actionButton()"> {{ts.trPK('general','submit')}}
</ion-button> -->
<ion-item *ngIf="notificationButtonRes?.length >0" class="requiredItem actionList">
<ion-label class="boldTxtNav">{{'actionHis, action' | translate}} </ion-label>
<ion-select (ionChange)="actionButton()" okText="{{ts.trPK('general','ok')}}"
cancelText="{{ts.trPK('general','cancel')}}" [(ngModel)]="actionType" required>
<ion-select-option value="{{notificationButtons.BUTTON_ACTION}}"
*ngFor="let notificationButtons of notificationButtonRes; let i=index;">
{{notificationButtons.BUTTON_LABEL}}</ion-select-option>
</ion-select>
</ion-item>
</ion-col>
<!-- </div> -->
<ion-col col-2 style="bottom: -8px">
<ion-button class="skipbutton" (click)="nextNotfification()">
{{'worklistMain, skip' | translate}}
<img class="arrowIcon" src="../assets/imgs/arrowRight.png">
</ion-button>
</ion-col>
</ion-row>
</ion-footer>

@ -0,0 +1,27 @@
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { WorklistMainMRComponent } from './worklist-main-mr.component';
describe('WorklistMainMRComponent', () => {
let component: WorklistMainMRComponent;
let fixture: ComponentFixture<WorklistMainMRComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ WorklistMainMRComponent ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(WorklistMainMRComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -0,0 +1,779 @@
import { Component, OnInit, ElementRef } from "@angular/core";
import { CommonService } from "src/app/hmg-common/services/common/common.service";
import { TranslatorService } from "src/app/hmg-common/services/translator/translator.service";
import { WorkListBodyRequest } from "../models/NotificationBodyReq";
import { EITNotificatonBodyResponse } from "../models/EITNotificationBodyRes";
import { AbsenceNotificatonBodyResponse } from "../models/AbsenceNotificationBodyRes";
import { NotificatonButtonResponse } from "../models/NotificationButtonRes";
import { WorkListActionRequest } from "../models/NotificationActionReq";
import { WorkListButtonRequest } from "../models/NotificationButtonReq";
// import { isDate } from 'angular6-json-schema-form';
import { MenuResponse } from "src/app/hmg-common/services/menu/models/menu-response";
import { LoginRequest } from "src/app/hmg-common/services/authentication/models/login.request";
import { WorklistMainService } from "../service/work-list.main.service";
import { HomeComponent } from "src/app/notification/home/home.component";
import { TextInput } from 'src/app/uI-elements/text.input';
import { TextAreaInput } from 'src/app/uI-elements/text-area.input';
import { MenuService } from 'src/app/hmg-common/services/menu/menuservice.service';
import { Events, ModalController } from '@ionic/angular';
import { PONotificatonBodyResponse } from '../models/PONotificationBodyRes';
import { MONotificatonBodyResponse } from '../models/MONotificationBodyRes';
import { PRNotificatonBodyResponse } from '../models/PRNotificationBodyRes';
import { WorklistAttachService } from 'src/app/absence/service/work-list-attach.service';
import { NotificationGetAttachResponse } from 'src/app/eit/models/NotificationGetAttachRes';
import { PRNotificatonBodyList } from '../models/PRNotificationBodyList';
import { WorkListActionHistoryRequest } from '../models/ActionHistoryReq';
import { WorklistService } from '../service/worklist.service';
import { ViewNoteModalComponent } from '../view-note-modal/view-note-modal.component';
import { WorkListActionHistoryResponse } from '../models/ActionHistoryRes';
import { WorkListAttachViewComponent } from '../work-list-attach-view/work-list-attach-view.component';
import { ApplyActionModalComponent } from '../apply-action-modal/apply-action-modal.component';
@Component({
selector: 'app-worklist-main-mr',
templateUrl: './worklist-main-mr.component.html',
styleUrls: ['./worklist-main-mr.component.scss'],
})
export class WorklistMainMRComponent implements OnInit {
private WorkListBodyObj: WorkListBodyRequest;
private WorkListButtonsObj: WorkListButtonRequest;
private WorkListActionObj: WorkListActionRequest;
private WorkListActionHistoryObj: WorkListActionHistoryRequest;
private WorkListAttachObj: WorkListButtonRequest;
private PRList:PRNotificatonBodyList
public static PASS_NOTIFICATION_INFO = "passNotificationInfo";
public static PASS_ACTION_MODE = "passActionMode";
getPassNotificationDetails: any;
public static PASS_RES_ATTR = "passResAttr";
TransactionID: number = -999;
notificationBodyRes: any;
actionHistoryRes: any;
notificationButtonRes: any;
actionMode: any;
pInformation: string = "";
pQuestion: string = "";
RespondAttributesListRes: any;
schemaNotific: any;
NotRespondAttributeList: any;
Resp2_val: any;
notExampleJsonObject: any;
hideForwordEmployee: any;
exampleJsonObject: any;
dataOfAttr: any;
P_RESPOND_ATTRIBUTES_TBL: any;
selEmployeeID: any;
actionType: string = "";
notificationArray: any;
notificationDynamicAttributeArr:any;
private textInput: TextInput;
private textArea: TextAreaInput;
notificationCount: any;
attachmentRes:any;
PRHeader:any;//change the tpye later
PRLines:any;//change the tpye later
IsReachEnd: boolean = false;
P_PAGE_NUM: number = 1;
P_PAGE_LIMIT: number = 50;
headerTotal: any;
totalH: any;
valueH: any;
taxH: any;
taxvalueH: any;
NotificationGetRespondAttributesList: any;
confirmMsg: string;
delMsg: string;
closeMsg: string;
constructor(
public common: CommonService,
public ts: TranslatorService,
public worklistMainService: WorklistMainService,
public elementRef: ElementRef,
public menuService: MenuService,
public events: Events,
public worklistAttachService: WorklistAttachService,
private modalCtrl: ModalController,
public worklistService: WorklistService
) {
//this.getPassNotificationDetails = this.common.sharedService.getSharedData('passNotificationInfo');
this.WorkListActionHistoryObj = new WorkListActionHistoryRequest();
this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM;
this.WorkListActionHistoryObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
// this.WorkListActionHistoryObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
}
ngOnInit() {
this.WorkListAttachObj = new WorkListButtonRequest();
this.intializeNotificationDetail();
let segment = document.querySelector('ion-segment');
let slides = document.querySelector('ion-slides');
segment.addEventListener('ionChange', (ev) => onSegmentChange(ev));
slides.addEventListener('ionSlideDidChange', (ev) => onSlideDidChange(ev));
// On Segment change slide to the matching slide
function onSegmentChange(ev) {
console.log("ev.detail.value"+ev.detail.value);
slideTo(ev.detail.value);
}
function slideTo(index) {
console.log("index: "+index);
slides.slideTo(index);
}
// On Slide change update segment to the matching value
async function onSlideDidChange(ev) {
var index = await slides.getActiveIndex();
console.log("index: "+index);
clickSegment(index);
}
function clickSegment(index) {
segment.value = index;
}
}
intializeNotificationDetail() {
document.getElementById("notificationDynamicFields").innerHTML="";
console.log("intializeNotificationDetail");
this.getPassNotificationDetails = this.common.sharedService.getSharedData(
HomeComponent.NOTIFICATION_DATA,
false
);
console.log(this.getPassNotificationDetails.ROW_NUM);
this.notificationArray = this.common.sharedService.getSharedData(
HomeComponent.NOTIFICATION_ARR,
false
);
this.WorkListBodyObj = new WorkListBodyRequest();
this.WorkListButtonsObj = new WorkListButtonRequest();
this.WorkListActionObj = new WorkListActionRequest();
this.WorkListBodyObj.P_TRANSACTION_ID = this.TransactionID;
this.WorkListBodyObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
this.WorkListBodyObj.P_PAGE_NUM = this.P_PAGE_NUM;;
this.WorkListBodyObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
this.WorkListButtonsObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
this.WorkListActionObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
this.WorkListActionObj.P_FORWARD_TO_USER_NAME = "";
this.WorkListActionObj.P_ACTION_MODE = "";
this.WorkListActionObj.P_COMMENTS = "";
this.WorkListActionObj.P_APPROVER_INDEX = null;
this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM;
this.WorkListActionHistoryObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
this.WorkListActionHistoryObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
this.WorkListAttachObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
this.getNotificationButtons(this.WorkListButtonsObj);
this.getNotificationResAttr(this.WorkListButtonsObj);
this.getActionHistory(this.WorkListActionHistoryObj);
this.getAttachmentNotification(this.WorkListAttachObj);
if (this.getPassNotificationDetails.REQUEST_TYPE == "EIT") {
this.getEITNotificationDetails(this.WorkListBodyObj);
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "ABSENCE") {
this.getAbsenceNotificationDetails(this.WorkListBodyObj);
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "PO"){
this.getPONotificationDetails(this.WorkListBodyObj);
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "MO"){
this.getMONotificationDetails(this.WorkListBodyObj);
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "PR"){
this.getPRNotificationDetails(this.WorkListBodyObj);
}
}
getPRNotificationDetails(notificationBodyObj){
this.worklistMainService
.getPRNotificationBody(notificationBodyObj)
.subscribe((result: PRNotificatonBodyResponse) => {
this.handleWorkListBodyResult(result, "PR");
});
}
getMONotificationDetails(notificationBodyObj){
this.worklistMainService
.getMONotificationBody(notificationBodyObj)
.subscribe((result: MONotificatonBodyResponse) => {
this.handleWorkListBodyResult(result, "MO");
});
}
getPONotificationDetails(notificationBodyObj){
this.worklistMainService
.getPONotificationBody(notificationBodyObj)
.subscribe((result: PONotificatonBodyResponse) => {
console.log(result.GetPoNotificationBodyList.POHeader[0].BUYER);
this.handleWorkListBodyResult(result, "PO");
});
}
getEITNotificationDetails(notificationBodyObj) {
this.worklistMainService
.getEITNotificationBody(notificationBodyObj)
.subscribe((result: EITNotificatonBodyResponse) => {
this.handleWorkListBodyResult(result, "EIT");
});
}
getAbsenceNotificationDetails(notificationBodyObj) {
this.worklistMainService
.getAbsencesNotificationBody(notificationBodyObj)
.subscribe((result: AbsenceNotificatonBodyResponse) => {
this.handleWorkListBodyResult(result, "ABSENCE");
});
}
handleWorkListBodyResult(result, Type) {
this.notificationBodyRes = {};
if (this.common.validResponse(result)) {
this.pInformation = result.P_INFORMATION;
this.pQuestion = result.P_QUESTION;
if (Type == "MO") {
if (result.GetMoNotificationBodyList) {
this.notificationBodyRes =
result.GetMoNotificationBodyList;
}
}
}
} //End handleWorkListBodyResult
getNotificationButtons(notificationButtonsObj) {
this.worklistMainService
.getNotificationButtons(notificationButtonsObj)
.subscribe((result: NotificatonButtonResponse) => {
this.handleWorkListButtonsResult(result);
});
}
handleWorkListButtonsResult(result) {
if (this.common.validResponse(result)) {
// this.sharedData.setSharedData(result, WorKListResponse.SHARED_DATA);
if (result.GetNotificationButtonsList != null) {
this.notificationButtonRes = result.GetNotificationButtonsList;
} // if result == null
} // valid it
} // End handleWorkListButtonsResult
applyAction(WorkListActionObj) {
this.worklistMainService
.actionButton(WorkListActionObj)
.subscribe((result: any) => {
this.handleApplayActionResult(result);
});
}
handleApplayActionResult(result) {
if (this.common.validResponse(result)) {
if (result.MessageStatus == 1) {
// this.navCtrl.push("HomePage");
//this.common.openHome();
//this.common.openNotificationPage();
// for( var i = 0; i < this.notificationArray.length; i++){
// if ( this.notificationArray[i].ROW_NUM === this.getPassNotificationDetails.ROW_NUM) {
// this.notificationArray.splice(i, 1);
// }
// }
this.getNotificationCountAfterSubmit();
this.nextNotfification();
}
} // valid it
}
public nextNotfification() {
//let itemExist = false;
let itemNo = this.getPassNotificationDetails.ROW_NUM;
itemNo += 1;
if (itemNo > this.notificationArray.length) {
this.common.openNotificationPage();
} else {
for (let i = 0; i <= this.notificationArray.length; i++) {
if (this.notificationArray[i].ROW_NUM == itemNo) {
this.common.sharedService.setSharedData(this.notificationArray[i], HomeComponent.NOTIFICATION_DATA);
// itemExist = true;
this.intializeNotificationDetail();
break;
}
}
// if(itemExist==false){
// this.nextNotfification();
// }
}
}
actionButton() {
let ButtonAction: string = this.actionType;
var responseAttrDic = this.notExampleJsonObject;
this.P_RESPOND_ATTRIBUTES_TBL = [];
for (let i=0;i<this.notificationDynamicAttributeArr.length;i++) {
let obj: any = {};
obj.ATTRIBUTE_NAME = this.notificationDynamicAttributeArr[i].ATTRIBUTE_NAME;
if (this.notificationDynamicAttributeArr[i].ATTRIBUTE_TYPE === "number") {
obj.ATTRIBUTE_NUMBER_VALUE = (document.getElementById(this.notificationDynamicAttributeArr[i].ATTRIBUTE_NAME) as HTMLInputElement).value;
}
// else if (isDate(responseAttrDic[key])) {
// obj.ATTRIBUTE_DATE_VALUE = responseAttrDic[key];
// }
else if(this.notificationDynamicAttributeArr[i].ATTRIBUTE_TYPE=="VARCHAR2") {
obj.ATTRIBUTE_TEXT_VALUE =(document.getElementById(this.notificationDynamicAttributeArr[i].ATTRIBUTE_NAME) as HTMLInputElement).value;
}
this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
}
let repUserName = this.selEmployeeID;
if (this.hideForwordEmployee && this.hideForwordEmployee.ATTRIBUTE_NAME) {
let obj: any = {};
repUserName = "";
obj.ATTRIBUTE_NAME = this.hideForwordEmployee.ATTRIBUTE_NAME;
obj.ATTRIBUTE_TEXT_VALUE = this.selEmployeeID;
this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
}
if (
ButtonAction == "APPROVE" ||
ButtonAction == "REJECT" ||
ButtonAction == "DEL" ||
ButtonAction == "CLOSE"
) {
this.WorkListActionObj.P_FORWARD_TO_USER_NAME = "";
this.WorkListActionObj.P_ACTION_MODE = ButtonAction;
this.WorkListActionObj.P_COMMENTS = "";
this.WorkListActionObj.RespondAttributeList = this.P_RESPOND_ATTRIBUTES_TBL;
//sheardData
// this.common.sharedService.setSharedData(
// this.WorkListActionObj,
// WorklistMainMRComponent.PASS_NOTIFICATION_INFO
// );
if (ButtonAction == "APPROVE"){
this.confirmMsg =this.ts.trPK('worklistMain', 'approveMsg')
}
else if (ButtonAction == "REJECT"){
this.confirmMsg =this.ts.trPK('worklistMain', 'rejectMsg')
}
else if (ButtonAction == "DEL"){
this.confirmMsg =this.ts.trPK('worklistMain', 'delMsg')
}
else if (ButtonAction == "CLOSE"){
this.confirmMsg =this.ts.trPK('worklistMain', 'closeMsg')
}
this.common.confirmAlertDialogAction(
() => {
this.applyAction(this.WorkListActionObj);
}, this.ts.trPK('general', 'ok'),
() => {}, this.ts.trPK('general', 'cancel'),
this.ts.trPK('vacation-rule', 'confirmation'),
this.confirmMsg);
// alert.onDidDismiss((data) => {
// if (data == true) {
// this.continueDelete(attach);
// }
// });
//this.openApplyModal(this.WorkListActionObj);
////////////this.applyAction(this.WorkListActionObj);
}
if (ButtonAction == "RFC") {
// alert("Return For Correction");
this.WorkListActionObj.P_ACTION_MODE = ButtonAction;
// this.navCtrl.push("WorkListRfcPage", {
// passNotificationInfo: this.getPassNotificationDetails,
// passActionMode: ButtonAction,
// passResAttr: this.P_RESPOND_ATTRIBUTES_TBL
// });
this.common.sharedService.setSharedData(
this.getPassNotificationDetails,
WorklistMainMRComponent.PASS_NOTIFICATION_INFO
);
this.common.sharedService.setSharedData(
ButtonAction,
WorklistMainMRComponent.PASS_ACTION_MODE
);
this.common.sharedService.setSharedData(
this.P_RESPOND_ATTRIBUTES_TBL,
WorklistMainMRComponent.PASS_RES_ATTR
);
this.common.openWorklistRFCPage();
} else if (ButtonAction == "ANSWER_INFO") {
// this.navCtrl.push("WorkListReplacmentRollPage", {
// pQuestion: this.pQuestion,
// passNotificationInfo: this.getPassNotificationDetails,
// passActionMode: ButtonAction,
// passResAttr: this.P_RESPOND_ATTRIBUTES_TBL
// });
this.common.sharedService.setSharedData(this.pQuestion, "pQuestion");
this.common.sharedService.setSharedData(
this.getPassNotificationDetails,
WorklistMainMRComponent.PASS_NOTIFICATION_INFO
);
this.common.sharedService.setSharedData(
ButtonAction,
WorklistMainMRComponent.PASS_ACTION_MODE
);
this.common.sharedService.setSharedData(
this.P_RESPOND_ATTRIBUTES_TBL,
WorklistMainMRComponent.PASS_RES_ATTR
);
this.common.openWorklistRollReplacement();
} else if (
ButtonAction == "DELEGATE" ||
ButtonAction == "REQUEST_INFO" ||
ButtonAction == "TRANSFER" ||
ButtonAction == "TRANSFER_INFO"
) {
// alert("multi option: "+ ButtonAction);
this.WorkListActionObj.P_ACTION_MODE = ButtonAction;
// this.navCtrl.push("WorkListReplacmentRollPage", {
// passNotificationInfo: this.getPassNotificationDetails,
// passActionMode: ButtonAction,
// passResAttr: this.P_RESPOND_ATTRIBUTES_TBL
// });
this.common.sharedService.setSharedData(
this.getPassNotificationDetails,
WorklistMainMRComponent.PASS_NOTIFICATION_INFO
);
this.common.sharedService.setSharedData(
ButtonAction,
WorklistMainMRComponent.PASS_ACTION_MODE
);
this.common.sharedService.setSharedData(
this.P_RESPOND_ATTRIBUTES_TBL,
WorklistMainMRComponent.PASS_RES_ATTR
);
this.common.openWorklistRollReplacement();
} else if (
ButtonAction == "UPDATE_ACTION" ||
ButtonAction == "CONTINUE_ACTION"
) {
if (this.getPassNotificationDetails.REQUEST_TYPE == "EIT") {
this.common.sharedService.setSharedData(
this.notificationBodyRes,
EITNotificatonBodyResponse.SHARED_DATA
);
this.common.sharedService.setSharedData(
this.getPassNotificationDetails,
EITNotificatonBodyResponse.NOT_WORKLIST
);
// this.navCtrl.push("EitUpdateListPage");
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "ABSENCE") {
this.common.sharedService.setSharedData(
this.notificationBodyRes,
AbsenceNotificatonBodyResponse.SHARED_DATA
);
this.common.sharedService.setSharedData(
this.getPassNotificationDetails,
AbsenceNotificatonBodyResponse.NOT_WORKLIST
);
// this.navCtrl.push("SubmitAbsencePage", {
// dirfromNotificationPage: true,
// submitAbsObjList: this.notificationBodyRes[0].Collection_Notification
// });
this.common.openConfirmAbsece();
}
}
else if (this.notificationButtonRes.length > 0 && !ButtonAction) {
(this.elementRef.nativeElement.querySelectorAll(
"ion-item"
) as HTMLElement[]).forEach(x => {
if (x.classList.contains("requiredItem")) {
x.classList.add("ng-touched");
x.classList.remove("ng-untouched");
}
});
this.common.presentAlert(
this.ts.trPK("worklistMain", "actionRequird")
);
}
}
openActionHistory() {
// this.navCtrl.push("WorkListActionHistoryPage", {
// passNotificationInfo: this.getPassNotificationDetails
// });
this.common.sharedService.setSharedData(
this.getPassNotificationDetails,
WorklistMainMRComponent.PASS_NOTIFICATION_INFO
);
this.common.openWorklistHistoryPage();
}
openSupportDocuments() {
// this.navCtrl.push("WorkListAttachPage", {
// passNotificationInfo: this.getPassNotificationDetails
// });
this.common.sharedService.setSharedData(
this.getPassNotificationDetails,
WorklistMainMRComponent.PASS_NOTIFICATION_INFO
);
this.common.openWorklistAttachPage();
}
getNotificationResAttr(notificationButtonsObj) {
this.worklistMainService
.notificationResponseAttr(notificationButtonsObj)
.subscribe((result: NotificatonButtonResponse) => {
this.handleNotificationResAttrResult(result);
});
}
handleNotificationResAttrResult(result) {
if (this.common.validResponse(result)) {
// this.sharedData.setSharedData(result, WorKListResponse.SHARED_DATA);
this.NotRespondAttributeList =
result.NotificationGetRespondAttributesList;
if (
result.NotificationRespondRolesList != "" &&
result.NotificationRespondRolesList[0].ATTRIBUTE_NAME != null &&
result.NotificationRespondRolesList[0].ATTRIBUTE_NAME != undefined
) {
this.Resp2_val = result.NotificationRespondRolesList[0].ATTRIBUTE_NAME;
this.hideForwordEmployee = result.NotificationRespondRolesList[0];
}
this.notificationDynamicFields(result.NotificationGetRespondAttributesList);
this.NotificationGetRespondAttributesList=result.NotificationGetRespondAttributesList;
this.common.sharedService.setSharedData(
this.NotificationGetRespondAttributesList,
WorklistMainMRComponent.PASS_RES_ATTR
);
this.notificationDynamicAttributeArr=result.NotificationGetRespondAttributesList;
if (result.P_Schema) this.schemaNotific = JSON.parse(result.P_Schema);
} // valid it
} // End handleWorkListButtonsResult
notificationDynamicFields(notificationAttr){
const containerId = 'notificationDynamicFields';
for(let i=0;i<notificationAttr.length;i++){
if(notificationAttr[i].ATTRIBUTE_TYPE=="VARCHAR2"){
this.textArea = new TextAreaInput(notificationAttr[i].ATTRIBUTE_DISPLAY_NAME, notificationAttr[i].ATTRIBUTE_NAME, "", containerId,"","","");
}else if(notificationAttr[i].ATTRIBUTE_TYPE=="ROLE"){
}else if(notificationAttr[i].ATTRIBUTE_TYPE=="DATE"){
}else if(notificationAttr[i].ATTRIBUTE_TYPE=="NUMBER"){
}
}
}
openNotificationBody() {
if (this.getPassNotificationDetails.REQUEST_TYPE == "EIT") {
this.common.sharedService.setSharedData(
this.notificationBodyRes,
EITNotificatonBodyResponse.SHARED_DATA
);
this.common.sharedService.setSharedData(
this.getPassNotificationDetails,
EITNotificatonBodyResponse.NOT_WORKLIST
);
// this.navCtrl.push("WorkListDetailsPage", { NotBodyType: "EIT" });
this.common.sharedService.setSharedData("EIT", "NotBodyType");
this.common.openNotificationDetailsPage();
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "ABSENCE") {
this.common.sharedService.setSharedData(
this.notificationBodyRes,
AbsenceNotificatonBodyResponse.SHARED_DATA
);
this.common.sharedService.setSharedData(
this.getPassNotificationDetails,
AbsenceNotificatonBodyResponse.NOT_WORKLIST
);
this.common.sharedService.setSharedData("ABSENCE", "NotBodyType");
//this.navCtrl.push("WorkListDetailsPage", { NotBodyType: "ABSENCE" });
this.common.openNotificationDetailsPage();
}
}
getNotificationCountAfterSubmit() {
const req: any = {};
this.menuService.getNotificationCount(req).subscribe((result: any) => {
if (this.common.validResponse(result)) {
this.notificationCount =
result.GetOpenNotificationsNumList.P_OPEN_NOTIFICATIONS_NUM;
if (this.notificationCount <= 0) {
this.notificationCount = null;
}
this.events.publish("getNotCount", this.notificationCount);
}
});
}
getAttachmentNotification(WorkListAttachObj) {
this.worklistAttachService.getAttach(WorkListAttachObj).
subscribe((result: NotificationGetAttachResponse) => {
this.handleWorkListAttachResult(result);
});
}
handleWorkListAttachResult(result) {
if (this.common.validResponse(result)) {
// this.sharedData.setSharedData(result, WorKListResponse.SHARED_DATA);
if (result.GetAttachementList != null) {
this.attachmentRes = result.GetAttachementList;
} // if result == null
} // valid it
}
getActionHistory(WorkListActionHistoryObj) {
this.IsReachEnd = false;
this.worklistService.getActionHistory(WorkListActionHistoryObj).
subscribe((result: WorkListActionHistoryResponse) => {
this.handleWorkListActionHistoryResult(result);
});
}
handleWorkListActionHistoryResult(result) {
if (this.common.validResponse(result)) {
if (this.common.hasData(result.GetActionHistoryList)) {
this.actionHistoryRes = result.GetActionHistoryList;
this.P_PAGE_NUM++;
let lastItemIndex = this.actionHistoryRes.length - 1;
if (result.GetActionHistoryList[lastItemIndex]) {
let lastitem = result.GetActionHistoryList[lastItemIndex];
if (lastitem.NO_OF_ROWS == lastitem.ROW_NUM) {
this.IsReachEnd = true;
} else {
this.IsReachEnd = false;
}
}
}
}
}
async openNoteDetail(note,sender) {
// let modalPage = this.modalCtrl.create('ViewNoteModalPage', { textNote: note });
// modalPage.present();
console.log("note"+note);
this.common.sharedService.setSharedData(note, 'ViewNoteModalPage')
this.common.sharedService.setSharedData(sender,'ViewNoteModalPageSender')
const modal = await this.modalCtrl.create({
component: ViewNoteModalComponent,
backdropDismiss:false,
});
modal.cssClass = 'note-modal';
return await modal.present();
}
doInfinite(infiniteScroll) {
if (!this.IsReachEnd) {
this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM;
this.worklistService.getActionHistory(this.WorkListActionHistoryObj).
subscribe((result: any) => {
if (this.common.validResponse(result)) {
if (result.GetActionHistoryList != undefined) {
this.P_PAGE_NUM++;
(result.GetActionHistoryList).forEach(element => {
if (element.ROW_NUM == element.NO_OF_ROWS) {
this.IsReachEnd = true;
} else {
this.IsReachEnd = false;
}
this.actionHistoryRes.push(element);
}, (Error) => console.log(Error), () => infiniteScroll.target.complete());
}// if list length >0
else {
this.IsReachEnd = true;
}
}// if response == 1
//this.pageNum++;
infiniteScroll.target.complete();
});
} else {
if (infiniteScroll)
infiniteScroll.target.complete();
}
}//end infiniteScroll
//**********Attachment *****************//
async OpenAttachFiles(value, Type) {
// let modal: Modal = this.modalCtrl.create('WorkListAttachViewPage', { displayData: value, TypeData: Type });
// modal.present();
this.common.sharedService.setSharedData({ displayData: value, TypeData: Type }, 'WorkListAttachViewPage')
const modal = await this.modalCtrl.create({
component: WorkListAttachViewComponent
});
return await modal.present();
}
async openApplyModal(WorkListActionObj) {
// let modalPage = this.modalCtrl.create('ViewNoteModalPage', { textNote: note });
// modalPage.present();
// console.log("note"+note);
this.common.sharedService.setSharedData( this.getPassNotificationDetails,WorklistMainMRComponent.PASS_NOTIFICATION_INFO);
this.common.sharedService.setSharedData(WorkListActionObj, 'ApplyActionModalPage')
// this.common.sharedService.setSharedData(
// this.WorkListActionObj,
// WorklistMainMRComponent.PASS_NOTIFICATION_INFO
// );
const modal = await this.modalCtrl.create({
component: ApplyActionModalComponent,
backdropDismiss:false,
});
modal.cssClass = 'note-modal';
modal.onDidDismiss()
.then((data) => {
console.log(data); // Here's your selected user!
});
// data => {
// console.log('MODAL DATA', data);
// });
// const { data } = await this.modalCtrl.onWillDismiss();
// console.log(data);
return await modal.present();
}
}

@ -0,0 +1,694 @@
<ion-header>
<ion-toolbar class="header-toolbar">
<ion-title color="light"> {{ts.trPK('worklistMain','title')}}</ion-title>
<ion-buttons slot="start">
<nav-buttons backLink="/notification/homepage"></nav-buttons>
</ion-buttons>
</ion-toolbar>
<ion-toolbar>
<ion-segment class="segmentPR" scrollable>
<ion-segment-button value="0" checked>
<ion-label> {{ts.trPK('worklistMain','info')}}</ion-label>
</ion-segment-button>
<ion-segment-button value="1">
<ion-label> {{ts.trPK('worklistMain','itemReq')}}</ion-label>
</ion-segment-button>
<ion-segment-button value="2">
<ion-label>
{{'worklistMain, actionHis' | translate}}
</ion-label>
</ion-segment-button>
<ion-segment-button value="3">
<ion-label>{{'general, attachment' | translate}}
</ion-label>
</ion-segment-button>
</ion-segment>
</ion-toolbar>
</ion-header>
<ion-content class="colorBG">
<ion-slides pager="true" class="slides-gray-bullets">
<ion-slide class="slide-1">
<div *ngIf="pInformation && pInformation != '' " class="tipsPadding">{{pInformation}}</div>
<ion-card class="cardContent">
<ion-card-content>
<ion-grid style="text-align: left">
<ion-row>
<ion-col>
<label class="colItemReq" for=""> {{ts.trPK('worklistMain','description')}}
</label>
<br />
<label for=""> {{ts.trPK('worklistMain','des-PO')}} {{PO_NUMBER}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for=""> {{ts.trPK('worklistMain','from')}}
</label>
<br />
<label for="">{{getPassNotificationDetails.FROM_USER}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','to')}}
</label>
<br />
<label for=""> {{getPassNotificationDetails.TO_USER}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','sent')}}
</label>
<br />
<label for="">{{getPassNotificationDetails.BEGIN_DATE}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','closed')}}
</label>
<br />
<label for="">{{getPassNotificationDetails.END_DATE}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','id')}}
</label>
<br />
<label for="">{{getPassNotificationDetails.NOTIFICATION_ID}}</label>
</ion-col>
</ion-row>
<ion-row *ngIf=" getPassNotificationDetails.RESPONDER != '' ">
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','responder')}}
</label>
<br />
<label for="">{{getPassNotificationDetails.RESPONDER}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','subject')}} </label>
<br />
<label for="">{{getPassNotificationDetails.SUBJECT}} </label>
</ion-col>
</ion-row>
<div *ngFor="let header of POHeader">
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Supplier')}} </label>
<br />
<label for="">{{header.VENDOR_NAME}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Site')}} </label>
<br />
<label for="">{{header.VENDOR_SITE_CODE}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Buyer')}} </label>
<br />
<label for="">{{header.BUYER}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Preparer')}} </label>
<br />
<label for="">{{header.PREPARER}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','CreationDate')}}</label>
<br />
<label for="">{{header.CREATION_DATE}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','ShipToLocation')}} </label>
<br />
<label for="">{{header.SHIP_TO_LOCATION_NAME}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','QuotationNumber')}} </label>
<br />
<label for="">{{header.QUOTATION_NUMBER}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','QuotationDate')}} </label>
<br />
<label for="">{{header.QUOTATION_DATE}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','PaymentTerms')}} </label>
<br />
<label for="">{{header.PAYMENT_TERMS}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Currency')}} </label>
<br />
<label for="">{{header.CURRENCY_NAME}} - {{header.LOC_CUR}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','GrossAmount')}} </label>
<br />
<label for="">{{header.GROSS_AMOUNT}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','DiscountAmount')}} </label>
<br />
<label for="">{{header.DISCOUNT_AMOUNT}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','TotalPODiscount')}}</label>
<br />
<label for="">{{header.TOTAL_PO_DISCOUNT}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','VATAmount')}} </label>
<br />
<label for="">{{header.SALES_TAX}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','CustomDuty')}} </label>
<br />
<label for="">{{header.CUSTOM_DUTY}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','ShipHandle')}} </label>
<br />
<label for="">{{header.SHIP_HANDLE}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','OtherCharges')}}</label>
<br />
<label for="">{{header.OTHER_CHARGES}} </label>
</ion-col>
</ion-row>
<!-- <ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Currency')}} </label>
<br />
<label for="">{{header.LOC_CUR}} </label>
</ion-col>
</ion-row>
<ion-row> -->
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','TotalPOAmountWithVAT')}} </label>
<br />
<label for="">{{header.TOT_PO_AMT}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','TotalPOAmountInWords')}} </label>
<br />
<label for="">{{header.TOT_PO_AMT_WORD}} </label>
</ion-col>
</ion-row>
<!-- <ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','PONumber')}} </label>
<br />
<label for="">{{header.PO_NUMBER}} </label>
</ion-col>
</ion-row> -->
</div>
<br />
<ion-grid>
<div>
<ion-row style="text-align: center !important">
<ion-col *ngIf="totalH">
<div class="colItemReq" style="text-align: center !important">{{totalH}}</div>
<div class="labelTotal">{{valueH}}</div>
</ion-col>
<ion-col *ngIf="taxH ">
<div class="colItemReq" style="text-align: center !important">{{taxH}}</div>
<div class="labelTotal">{{taxvalueH}}</div>
</ion-col>
</ion-row>
</div>
</ion-grid>
</ion-grid>
</ion-card-content>
<ion-card-content>
<div>
<div id="notificationDynamicFields1">
</div>
</div>
</ion-card-content>
</ion-card>
</ion-slide>
<ion-slide>
<!-- <ion-card class="cardContent">
<ion-card-content> -->
<div [hidden]="POLines && POLines.length > 0">
<p>{{ 'general, empty' | translate}}</p>
</div>
<ion-list class="itemReqList" *ngIf="POLines && POLines.length > 0 ">
<div >
<ion-grid class="gridItemReq">
<ion-item class="itemReqContent" *ngFor="let Lines of POLines; let i=index;" >
<div class="itemReqDiv">
<ion-row>
<ion-col class="colItemReqHeader">
<label for="">{{i+1}}. {{Lines.ITEM_DESCRIPTION}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','code')}} </label>
<br />
<ion-label class="labelValue" for="">{{Lines.ITEM_CODE}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','MFG')}}
</label>
<br />
<ion-label class="labelValue" for="">{{Lines.MFG}} *</ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','LINE_TYPE')}} </label>
<br />
<ion-label class="labelValue" for="">{{Lines.LINE_TYPE}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','unit')}} </label>
<br />
<ion-label class="labelValue" for="">{{Lines.UOM}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','price')}} </label>
<br />
<ion-label class="labelValue" for="">{{Lines.UNIT_PRICE}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','LINE_AMOUNT')}} </label>
<br />
<ion-label class="labelValue" for="">{{Lines.LINE_AMOUNT}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quantity')}} </label>
<br />
<ion-label class="labelValue" for="">{{Lines.QUANTITY}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','LINE_DIS')}} </label>
<br />
<ion-label class="labelValue" for="">{{Lines.LINE_DISC_PERCENTAGE}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','NEED_TO')}} </label>
<br />
<ion-label class="labelValue" for="">{{Lines.NEED_BY_DATE}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','PROMISED_DATE')}} </label>
<br />
<ion-label class="labelValue" for="">{{Lines.PROMISED_DATE}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','DELIVER_TO')}} </label>
<br />
<ion-label class="labelValue" for="">{{Lines.DELIVER_TO_LOCATION}} </ion-label>
</ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','PR_NO')}} </label>
<br />
<ion-label class="labelValue" for="">{{Lines.PR_NUM}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','REQUEST')}} </label>
<br />
<ion-label class="labelValue" for="">{{Lines.REQUESTOR}} </ion-label>
</ion-col>
<!-- <ion-col>
<label class="colItemReq" for="">{{ts.trPK('payslip','amount')}} </label>
<br />
Quotation Analysis
<label for="">{{Item History}} </label>
</ion-col> -->
</ion-row>
<ion-row>
<ion-col>
<div style="text-align: center">
<button ion-button class="itemHISBtn" (click)="getItemHistory(Lines.ITEM_ID)">
{{ts.trPK('worklistMain','ITEM_HIS')}}
<!-- (click)="openNoteDetail(actionHistory.NOTE ,actionHistory.NAME)"
[hidden]="actionHistory.NOTE == '' || actionHistory.NOTE == null"
style=" background: none;width: 60%;">
<img src="../assets/imgs/noteSmall.png"> -->
</button>
</div>
<!-- <label class="colItemReq" for="">{{ts.trPK('worklistMain','ITEM_HIS')}} </label> -->
<!-- <br /> -->
<!-- <label for="">{{Lines.REQUESTOR}} </label> -->
</ion-col>
<ion-col>
<div style="text-align: center">
<button ion-button class="itemHISBtn"
(click)="getQutationAnalysis(Lines.PO_HEADER_ID ,Lines.ITEM_ID)">
{{ts.trPK('worklistMain','QUOTATION_ANALYSIS')}}
<!-- (click)="getQutationAnalysis(Lines.PO_HEADER_ID ,Lines.ITEM_CODE)"
[hidden]="actionHistory.NOTE == '' || actionHistory.NOTE == null"
style=" background: none;width: 60%;">
<img src="../assets/imgs/noteSmall.png"> -->
</button>
</div>
</ion-col>
</ion-row>
</div>
</ion-item>
</ion-grid>
</div>
</ion-list>
<!-- </ion-card-content>
</ion-card> -->
</ion-slide>
<ion-slide>
<ion-card class="cardContent">
<ion-card-content>
<div [hidden]="actionHistoryRes && actionHistoryRes.length > 0">
<p>{{ 'general, empty' | translate}}</p>
</div>
<div *ngIf="actionHistoryRes && actionHistoryRes.length > 0 ">
<ion-list class="notification-list ">
<div class="timeline">
<ion-item *ngFor="let actionHistory of actionHistoryRes">
<div class="timeline-item" slot="start">
<div>
<button ion-button
(click)="openNoteDetail(actionHistory.NOTE ,actionHistory.NAME)"
[hidden]="actionHistory.NOTE == '' || actionHistory.NOTE == null"
style=" background: none;width: 60%;">
<img src="../assets/imgs/noteSmall.png">
</button>
</div>
<div
[ngClass]="{'bg-blue-dot' : actionHistory.ACTION === 'Submitted' || actionHistory.ACTION === 'Submit' ,'bg-orange-dot' : actionHistory.ACTION === 'Pending' ,'bg-red-dot' : actionHistory.ACTION === 'Rejected','bg-green-dot' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Rejected' && actionHistory.ACTION != 'Submitted' && actionHistory.ACTION != 'Submit'}"
class="timeline-thumb timeline-icon">
</div>
</div>
<ion-col>
<ion-label
[ngClass]="{'bg-blue-txt' : actionHistory.ACTION === 'Submitted' || actionHistory.ACTION === 'Submit' ,'bg-orange-txt' : actionHistory.ACTION === 'Pending' ,'bg-red-txt' : actionHistory.ACTION === 'Rejected','bg-green-txt' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Rejected' && actionHistory.ACTION != 'Submitted' && actionHistory.ACTION != 'Submit'}"
class=""> {{actionHistory.ACTION}}</ion-label>
<ion-label> {{actionHistory.NAME}}
</ion-label>
<ion-label> {{actionHistory.NOTIFICATION_DATE| dateString }} </ion-label>
</ion-col>
</ion-item>
</div>
</ion-list>
</div>
</ion-card-content>
</ion-card>
</ion-slide>
<ion-slide>
<ion-card class="cardContent">
<ion-card-content>
<div [hidden]="attachmentRes && attachmentRes.length > 0">
<p>{{ 'general, notAttch' | translate}}</p>
</div>
<div *ngIf="attachmentRes && attachmentRes.length > 0 ">
<ion-grid>
<div *ngFor="let attachList of attachmentRes">
<ion-row (click)="OpenAttachFiles(attachList.FILE_DATA,attachList.FILE_CONTENT_TYPE)">
<ion-col col-12>
<div
*ngIf="attachList.FILE_CONTENT_TYPE === 'pdf' || attachList.FILE_CONTENT_TYPE === 'PDF'">
<img float-start class="attachImg" src="../assets/imgs/pdf.png">
</div>
<div *ngIf="attachList.FILE_CONTENT_TYPE === 'txt'"> <img float-start
class="attachImg" src="../assets/imgs/doc.png">
</div>
<div
*ngIf="attachList.FILE_CONTENT_TYPE != 'txt' && attachList.FILE_CONTENT_TYPE != 'PDF' && attachList.FILE_CONTENT_TYPE != 'pdf' && attachList.FILE_CONTENT_TYPE != 'png' && attachList.FILE_CONTENT_TYPE != 'jpeg' && attachList.FILE_CONTENT_TYPE != 'jpg' && attachList.FILE_CONTENT_TYPE != 'PNG' && attachList.FILE_CONTENT_TYPE != 'JPEG' && attachList.FILE_CONTENT_TYPE != 'JPG'">
<img float-start class="attachImg" src="../assets/imgs/nonfile.png">
</div>
<div
*ngIf="attachList.FILE_CONTENT_TYPE === 'png' || attachList.FILE_CONTENT_TYPE === 'jpeg' || attachList.FILE_CONTENT_TYPE === 'jpg'|| attachList.FILE_CONTENT_TYPE === 'PNG' || attachList.FILE_CONTENT_TYPE === 'JPEG'|| attachList.FILE_CONTENT_TYPE === 'JPG'">
<img float-start class="attachImg" src="../assets/imgs/img.png">
</div>
<ion-label>
{{attachList.SEQ_NUM }}. {{attachList.FILE_NAME}} </ion-label>
</ion-col>
</ion-row>
</div>
</ion-grid>
</div>
</ion-card-content>
</ion-card>
</ion-slide>
</ion-slides>
</ion-content>
<ion-footer class="footerSearchBtn">
<ion-row>
<ion-col col-12>
<div id="notificationDynamicFields">
</div>
</ion-col>
</ion-row>
<ion-row>
<ion-col col-2>
</ion-col>
<ion-col col-8>
<ion-item *ngIf="notificationButtonRes?.length >0" class="requiredItem actionList">
<ion-label class="boldTxtNav">{{'actionHis, action' | translate}} </ion-label>
<ion-select (ionChange)="actionButton()" okText="{{ts.trPK('general','ok')}}"
cancelText="{{ts.trPK('general','cancel')}}" [(ngModel)]="actionType" required>
<ion-select-option value="{{notificationButtons.BUTTON_ACTION}}"
*ngFor="let notificationButtons of notificationButtonRes; let i=index;">
{{notificationButtons.BUTTON_LABEL}}</ion-select-option>
</ion-select>
</ion-item>
</ion-col>
<ion-col col-2 style="bottom: -8px">
<ion-button class="skipbutton" (click)="nextNotfification()">
{{'worklistMain, skip' | translate}}
<img class="arrowIcon" src="../assets/imgs/arrowRight.png">
</ion-button>
</ion-col>
</ion-row>
</ion-footer>

@ -0,0 +1,8 @@
.itemHISBtn{
padding: 5px;
color: var(--light);
background: var(--darkgray);
border-radius: 3px;
width: 85%;
height: 40px;
}

@ -0,0 +1,27 @@
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { WorklistMainPoComponent } from './worklist-main-po.component';
describe('WorklistMainPoComponent', () => {
let component: WorklistMainPoComponent;
let fixture: ComponentFixture<WorklistMainPoComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ WorklistMainPoComponent ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(WorklistMainPoComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -0,0 +1,869 @@
import { Component, OnInit, ElementRef } from "@angular/core";
import { CommonService } from "src/app/hmg-common/services/common/common.service";
import { TranslatorService } from "src/app/hmg-common/services/translator/translator.service";
import { WorkListBodyRequest } from "../models/NotificationBodyReq";
import { EITNotificatonBodyResponse } from "../models/EITNotificationBodyRes";
import { AbsenceNotificatonBodyResponse } from "../models/AbsenceNotificationBodyRes";
import { NotificatonButtonResponse } from "../models/NotificationButtonRes";
import { WorkListActionRequest } from "../models/NotificationActionReq";
import { WorkListButtonRequest } from "../models/NotificationButtonReq";
// import { isDate } from 'angular6-json-schema-form';
import { MenuResponse } from "src/app/hmg-common/services/menu/models/menu-response";
import { LoginRequest } from "src/app/hmg-common/services/authentication/models/login.request";
import { WorklistMainService } from "../service/work-list.main.service";
import { HomeComponent } from "src/app/notification/home/home.component";
import { TextInput } from 'src/app/uI-elements/text.input';
import { TextAreaInput } from 'src/app/uI-elements/text-area.input';
import { MenuService } from 'src/app/hmg-common/services/menu/menuservice.service';
import { Events, ModalController } from '@ionic/angular';
import { PONotificatonBodyResponse } from '../models/PONotificationBodyRes';
import { MONotificatonBodyResponse } from '../models/MONotificationBodyRes';
import { PRNotificatonBodyResponse } from '../models/PRNotificationBodyRes';
import { WorklistAttachService } from 'src/app/absence/service/work-list-attach.service';
import { NotificationGetAttachResponse } from 'src/app/eit/models/NotificationGetAttachRes';
import { PRNotificatonBodyList } from '../models/PRNotificationBodyList';
import { WorkListActionHistoryRequest } from '../models/ActionHistoryReq';
import { WorklistService } from '../service/worklist.service';
import { ViewNoteModalComponent } from '../view-note-modal/view-note-modal.component';
import { WorkListActionHistoryResponse } from '../models/ActionHistoryRes';
import { WorkListAttachViewComponent } from '../work-list-attach-view/work-list-attach-view.component';
import { ApplyActionModalComponent } from '../apply-action-modal/apply-action-modal.component';
import { POItemHistoryRes } from '../models/POItemHistoryRes';
import { POItemHistoryRequest } from '../models/POItemHistoryReq';
import { QuotationAnalysisResponse } from '../models/quotationAnalysisRes';
import { QuotationAnalysisRequest } from '../models/quotationAnalysisReq';
@Component({
selector: 'app-worklist-main-po',
templateUrl: './worklist-main-po.component.html',
styleUrls: ['./worklist-main-po.component.scss'],
})
export class WorklistMainPoComponent implements OnInit {
private WorkListBodyObj: WorkListBodyRequest;
private WorkListButtonsObj: WorkListButtonRequest;
private WorkListActionObj: WorkListActionRequest;
private WorkListActionHistoryObj: WorkListActionHistoryRequest;
private WorkListAttachObj: WorkListButtonRequest;
private PRList:PRNotificatonBodyList
public static PASS_NOTIFICATION_INFO = "passNotificationInfo";
public static PASS_PO_INFO = "passPOInfo";
public static PASS_PO_HEADER_ID = "passPOHeader";
public static PASS_ACTION_MODE = "passActionMode";
getPassNotificationDetails: any;
public static PASS_RES_ATTR = "passResAttr";
TransactionID: number = -999;
notificationBodyRes: any;
actionHistoryRes: any;
notificationButtonRes: any;
actionMode: any;
pInformation: string = "";
pQuestion: string = "";
RespondAttributesListRes: any;
schemaNotific: any;
NotRespondAttributeList: any;
Resp2_val: any;
notExampleJsonObject: any;
hideForwordEmployee: any;
exampleJsonObject: any;
dataOfAttr: any;
P_RESPOND_ATTRIBUTES_TBL: any;
selEmployeeID: any;
actionType: string = "";
notificationArray: any;
notificationDynamicAttributeArr:any;
private textInput: TextInput;
private textArea: TextAreaInput;
notificationCount: any;
attachmentRes:any;
PRHeader:any;//change the tpye later
PRLines:any;//change the tpye later
IsReachEnd: boolean = false;
P_PAGE_NUM: number = 1;
P_PAGE_LIMIT: number = 50;
headerTotal: any;
totalH: any;
valueH: any;
taxH: any;
taxvalueH: any;
NotificationGetRespondAttributesList: any;
confirmMsg: string;
delMsg: string;
closeMsg: string;
POHeader: any;
POLines: any;
PO_NUMBER: any;
itemHistoryRes: any;
QutationAnalysisRes: any;
constructor(
public common: CommonService,
public ts: TranslatorService,
public worklistMainService: WorklistMainService,
public elementRef: ElementRef,
public menuService: MenuService,
public events: Events,
public worklistAttachService: WorklistAttachService,
private modalCtrl: ModalController,
public worklistService: WorklistService,
) {
this.WorkListActionHistoryObj = new WorkListActionHistoryRequest();
this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM;
this.WorkListActionHistoryObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
}
ngOnInit() {
this.WorkListAttachObj = new WorkListButtonRequest();
this.intializeNotificationDetail();
let segment = document.querySelector('ion-segment');
let slides = document.querySelector('ion-slides');
segment.addEventListener('ionChange', (ev) => onSegmentChange(ev));
slides.addEventListener('ionSlideDidChange', (ev) => onSlideDidChange(ev));
// On Segment change slide to the matching slide
function onSegmentChange(ev) {
console.log("ev.detail.value"+ev.detail.value);
slideTo(ev.detail.value);
}
function slideTo(index) {
console.log("index: "+index);
slides.slideTo(index);
}
// On Slide change update segment to the matching value
async function onSlideDidChange(ev) {
var index = await slides.getActiveIndex();
console.log("index: "+index);
clickSegment(index);
}
function clickSegment(index) {
segment.value = index;
}
}//ngOn
intializeNotificationDetail() {
document.getElementById("notificationDynamicFields").innerHTML="";
console.log("intializeNotificationDetail");
this.getPassNotificationDetails = this.common.sharedService.getSharedData(
HomeComponent.NOTIFICATION_DATA,
false
);
console.log(this.getPassNotificationDetails.ROW_NUM);
this.notificationArray = this.common.sharedService.getSharedData(
HomeComponent.NOTIFICATION_ARR,
false
);
this.WorkListBodyObj = new WorkListBodyRequest();
this.WorkListButtonsObj = new WorkListButtonRequest();
this.WorkListActionObj = new WorkListActionRequest();
this.WorkListBodyObj.P_TRANSACTION_ID = this.TransactionID;
this.WorkListBodyObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
this.WorkListBodyObj.P_PAGE_NUM = this.P_PAGE_NUM;;
this.WorkListBodyObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
this.WorkListButtonsObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
this.WorkListActionObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
this.WorkListActionObj.P_FORWARD_TO_USER_NAME = "";
this.WorkListActionObj.P_ACTION_MODE = "";
this.WorkListActionObj.P_COMMENTS = "";
this.WorkListActionObj.P_APPROVER_INDEX = null;
this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM;
this.WorkListActionHistoryObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
this.WorkListActionHistoryObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
this.WorkListAttachObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
this.getNotificationButtons(this.WorkListButtonsObj);
this.getNotificationResAttr(this.WorkListButtonsObj);
this.getActionHistory(this.WorkListActionHistoryObj);
this.getAttachmentNotification(this.WorkListAttachObj);
if (this.getPassNotificationDetails.REQUEST_TYPE == "PO"){
this.getPONotificationDetails(this.WorkListBodyObj);
}
}
getPONotificationDetails(notificationBodyObj){
this.worklistMainService
.getPONotificationBody(notificationBodyObj)
.subscribe((result: PONotificatonBodyResponse) => {
console.log(result.GetPoNotificationBodyList.POHeader[0].BUYER);
this.handleWorkListBodyResult(result, "PO");
});
}
handleWorkListBodyResult(result, Type) {
this.notificationBodyRes = {};
if (this.common.validResponse(result)) {
this.pInformation = result.P_INFORMATION;
this.pQuestion = result.P_QUESTION;
if (Type == "EIT") {
if (result.GetEITCollectionNotificationBodyList) {
this.notificationBodyRes =
result.GetEITCollectionNotificationBodyList;
}
} else if (Type == "ABSENCE") {
console.log("ABSENCE");
if (result.GetAbsenceCollectionNotificationBodyList) {
this.notificationBodyRes =
result.GetAbsenceCollectionNotificationBodyList;
}
}else if (Type == "PR") {
if (result.GetPrNotificationBodyList) {
console.log("PR");
this.PRHeader=result.GetPrNotificationBodyList.PRHeader;
this.PRLines=result.GetPrNotificationBodyList.PRLines;
for( var i = 0; i < this.PRHeader.length; i++){
if(this.PRHeader[i].HDR_ATTRIBUTE_NAME === 'Requisition Total'){
this.totalH=this.PRHeader[i].HDR_ATTRIBUTE_NAME;
this.valueH=this.PRHeader[i].HDR_ATTRIBUTE_VALUE;
//this. header.HDR_ATTRIBUTE_NAME != 'Non-Recoverable Tax'"
}
if(this.PRHeader[i].HDR_ATTRIBUTE_NAME === 'Non-Recoverable Tax'){
this.taxH=this.PRHeader[i].HDR_ATTRIBUTE_NAME;
this.taxvalueH=this.PRHeader[i].HDR_ATTRIBUTE_VALUE;
}
// HDR_ATTRIBUTE_VALUE
}
this.notificationBodyRes =
result.GetPrNotificationBodyList;
}
}else if (Type == "PO") {
if (result.GetPoNotificationBodyList) {
console.log("PO");
this.POHeader=result.GetPoNotificationBodyList.POHeader;
this.POLines=result.GetPoNotificationBodyList.POLines;
for( var i = 0; i < this.POHeader.length; i++){
this.PO_NUMBER=this.POHeader[i].PO_NUMBER;
if(this.POHeader[i].HDR_ATTRIBUTE_NAME === 'Requisition Total'){
this.totalH=this.POHeader[i].HDR_ATTRIBUTE_NAME;
this.valueH=this.POHeader[i].HDR_ATTRIBUTE_VALUE;
//this. header.HDR_ATTRIBUTE_NAME != 'Non-Recoverable Tax'"
}
if(this.POHeader[i].HDR_ATTRIBUTE_NAME === 'Non-Recoverable Tax'){
this.taxH=this.POHeader[i].HDR_ATTRIBUTE_NAME;
this.taxvalueH=this.POHeader[i].HDR_ATTRIBUTE_VALUE;
}
// HDR_ATTRIBUTE_VALUE
}
this.notificationBodyRes =
result.GetPoNotificationBodyList;
}
}//
}
} //End handleWorkListBodyResult
getNotificationButtons(notificationButtonsObj) {
this.worklistMainService
.getNotificationButtons(notificationButtonsObj)
.subscribe((result: NotificatonButtonResponse) => {
this.handleWorkListButtonsResult(result);
});
}
handleWorkListButtonsResult(result) {
if (this.common.validResponse(result)) {
// this.sharedData.setSharedData(result, WorKListResponse.SHARED_DATA);
if (result.GetNotificationButtonsList != null) {
this.notificationButtonRes = result.GetNotificationButtonsList;
} // if result == null
} // valid it
} // End handleWorkListButtonsResult
applyAction(WorkListActionObj) {
this.worklistMainService
.actionButton(WorkListActionObj)
.subscribe((result: any) => {
this.handleApplayActionResult(result);
});
}
handleApplayActionResult(result) {
if (this.common.validResponse(result)) {
if (result.MessageStatus == 1) {
// this.navCtrl.push("HomePage");
//this.common.openHome();
//this.common.openNotificationPage();
// for( var i = 0; i < this.notificationArray.length; i++){
// if ( this.notificationArray[i].ROW_NUM === this.getPassNotificationDetails.ROW_NUM) {
// this.notificationArray.splice(i, 1);
// }
// }
this.getNotificationCountAfterSubmit();
this.nextNotfification();
}
} // valid it
}
public nextNotfification() {
//let itemExist = false;
let itemNo = this.getPassNotificationDetails.ROW_NUM;
itemNo += 1;
if (itemNo > this.notificationArray.length) {
this.common.openNotificationPage();
} else {
for (let i = 0; i <= this.notificationArray.length; i++) {
if (this.notificationArray[i].ROW_NUM == itemNo) {
this.common.sharedService.setSharedData(this.notificationArray[i], HomeComponent.NOTIFICATION_DATA);
// itemExist = true;
this.intializeNotificationDetail();
break;
}
}
// if(itemExist==false){
// this.nextNotfification();
// }
}
}
actionButton() {
let ButtonAction: string = this.actionType;
var responseAttrDic = this.notExampleJsonObject;
this.P_RESPOND_ATTRIBUTES_TBL = [];
for (let i=0;i<this.notificationDynamicAttributeArr.length;i++) {
let obj: any = {};
obj.ATTRIBUTE_NAME = this.notificationDynamicAttributeArr[i].ATTRIBUTE_NAME;
if (this.notificationDynamicAttributeArr[i].ATTRIBUTE_TYPE === "number") {
obj.ATTRIBUTE_NUMBER_VALUE = (document.getElementById(this.notificationDynamicAttributeArr[i].ATTRIBUTE_NAME) as HTMLInputElement).value;
}
// else if (isDate(responseAttrDic[key])) {
// obj.ATTRIBUTE_DATE_VALUE = responseAttrDic[key];
// }
else if(this.notificationDynamicAttributeArr[i].ATTRIBUTE_TYPE=="VARCHAR2") {
obj.ATTRIBUTE_TEXT_VALUE =(document.getElementById(this.notificationDynamicAttributeArr[i].ATTRIBUTE_NAME) as HTMLInputElement).value;
}
this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
}
let repUserName = this.selEmployeeID;
if (this.hideForwordEmployee && this.hideForwordEmployee.ATTRIBUTE_NAME) {
let obj: any = {};
repUserName = "";
obj.ATTRIBUTE_NAME = this.hideForwordEmployee.ATTRIBUTE_NAME;
obj.ATTRIBUTE_TEXT_VALUE = this.selEmployeeID;
this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
}
if (
ButtonAction == "APPROVE" ||
ButtonAction == "REJECT" ||
ButtonAction == "DEL" ||
ButtonAction == "CLOSE"
) {
this.WorkListActionObj.P_FORWARD_TO_USER_NAME = "";
this.WorkListActionObj.P_ACTION_MODE = ButtonAction;
this.WorkListActionObj.P_COMMENTS = "";
this.WorkListActionObj.RespondAttributeList = this.P_RESPOND_ATTRIBUTES_TBL;
//sheardData
// this.common.sharedService.setSharedData(
// this.WorkListActionObj,
// WorklistMainPRComponent.PASS_NOTIFICATION_INFO
// );
if (ButtonAction == "APPROVE"){
this.confirmMsg =this.ts.trPK('worklistMain', 'approveMsg')
}
else if (ButtonAction == "REJECT"){
this.confirmMsg =this.ts.trPK('worklistMain', 'rejectMsg')
}
else if (ButtonAction == "DEL"){
this.confirmMsg =this.ts.trPK('worklistMain', 'delMsg')
}
else if (ButtonAction == "CLOSE"){
this.confirmMsg =this.ts.trPK('worklistMain', 'closeMsg')
}
this.common.confirmAlertDialogAction(
() => {
this.applyAction(this.WorkListActionObj);
}, this.ts.trPK('general', 'ok'),
() => {}, this.ts.trPK('general', 'cancel'),
this.ts.trPK('vacation-rule', 'confirmation'),
this.confirmMsg);
// alert.onDidDismiss((data) => {
// if (data == true) {
// this.continueDelete(attach);
// }
// });
//this.openApplyModal(this.WorkListActionObj);
////////////this.applyAction(this.WorkListActionObj);
}
if (ButtonAction == "RFC") {
// alert("Return For Correction");
this.WorkListActionObj.P_ACTION_MODE = ButtonAction;
// this.navCtrl.push("WorkListRfcPage", {
// passNotificationInfo: this.getPassNotificationDetails,
// passActionMode: ButtonAction,
// passResAttr: this.P_RESPOND_ATTRIBUTES_TBL
// });
this.common.sharedService.setSharedData(
this.getPassNotificationDetails,
WorklistMainPoComponent.PASS_NOTIFICATION_INFO
);
this.common.sharedService.setSharedData(
ButtonAction,
WorklistMainPoComponent.PASS_ACTION_MODE
);
this.common.sharedService.setSharedData(
this.P_RESPOND_ATTRIBUTES_TBL,
WorklistMainPoComponent.PASS_RES_ATTR
);
this.common.openWorklistRFCPage();
} else if (ButtonAction == "ANSWER_INFO") {
// this.navCtrl.push("WorkListReplacmentRollPage", {
// pQuestion: this.pQuestion,
// passNotificationInfo: this.getPassNotificationDetails,
// passActionMode: ButtonAction,
// passResAttr: this.P_RESPOND_ATTRIBUTES_TBL
// });
this.common.sharedService.setSharedData(this.pQuestion, "pQuestion");
this.common.sharedService.setSharedData(
this.getPassNotificationDetails,
WorklistMainPoComponent.PASS_NOTIFICATION_INFO
);
this.common.sharedService.setSharedData(
ButtonAction,
WorklistMainPoComponent.PASS_ACTION_MODE
);
this.common.sharedService.setSharedData(
this.P_RESPOND_ATTRIBUTES_TBL,
WorklistMainPoComponent.PASS_RES_ATTR
);
this.common.openWorklistRollReplacement();
} else if (
ButtonAction == "DELEGATE" ||
ButtonAction == "REQUEST_INFO" ||
ButtonAction == "TRANSFER" ||
ButtonAction == "TRANSFER_INFO"
) {
// alert("multi option: "+ ButtonAction);
this.WorkListActionObj.P_ACTION_MODE = ButtonAction;
// this.navCtrl.push("WorkListReplacmentRollPage", {
// passNotificationInfo: this.getPassNotificationDetails,
// passActionMode: ButtonAction,
// passResAttr: this.P_RESPOND_ATTRIBUTES_TBL
// });
this.common.sharedService.setSharedData(
this.getPassNotificationDetails,
WorklistMainPoComponent.PASS_NOTIFICATION_INFO
);
this.common.sharedService.setSharedData(
ButtonAction,
WorklistMainPoComponent.PASS_ACTION_MODE
);
this.common.sharedService.setSharedData(
this.P_RESPOND_ATTRIBUTES_TBL,
WorklistMainPoComponent.PASS_RES_ATTR
);
this.common.openWorklistRollReplacement();
} else if (
ButtonAction == "UPDATE_ACTION" ||
ButtonAction == "CONTINUE_ACTION"
) {
if (this.getPassNotificationDetails.REQUEST_TYPE == "EIT") {
this.common.sharedService.setSharedData(
this.notificationBodyRes,
EITNotificatonBodyResponse.SHARED_DATA
);
this.common.sharedService.setSharedData(
this.getPassNotificationDetails,
EITNotificatonBodyResponse.NOT_WORKLIST
);
// this.navCtrl.push("EitUpdateListPage");
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "ABSENCE") {
this.common.sharedService.setSharedData(
this.notificationBodyRes,
AbsenceNotificatonBodyResponse.SHARED_DATA
);
this.common.sharedService.setSharedData(
this.getPassNotificationDetails,
AbsenceNotificatonBodyResponse.NOT_WORKLIST
);
// this.navCtrl.push("SubmitAbsencePage", {
// dirfromNotificationPage: true,
// submitAbsObjList: this.notificationBodyRes[0].Collection_Notification
// });
this.common.openConfirmAbsece();
}
}
else if (this.notificationButtonRes.length > 0 && !ButtonAction) {
(this.elementRef.nativeElement.querySelectorAll(
"ion-item"
) as HTMLElement[]).forEach(x => {
if (x.classList.contains("requiredItem")) {
x.classList.add("ng-touched");
x.classList.remove("ng-untouched");
}
});
this.common.presentAlert(
this.ts.trPK("worklistMain", "actionRequird")
);
}
}
openActionHistory() {
// this.navCtrl.push("WorkListActionHistoryPage", {
// passNotificationInfo: this.getPassNotificationDetails
// });
this.common.sharedService.setSharedData(
this.getPassNotificationDetails,
WorklistMainPoComponent.PASS_NOTIFICATION_INFO
);
this.common.openWorklistHistoryPage();
}
openSupportDocuments() {
// this.navCtrl.push("WorkListAttachPage", {
// passNotificationInfo: this.getPassNotificationDetails
// });
this.common.sharedService.setSharedData(
this.getPassNotificationDetails,
WorklistMainPoComponent.PASS_NOTIFICATION_INFO
);
this.common.openWorklistAttachPage();
}
getNotificationResAttr(notificationButtonsObj) {
this.worklistMainService
.notificationResponseAttr(notificationButtonsObj)
.subscribe((result: NotificatonButtonResponse) => {
this.handleNotificationResAttrResult(result);
});
}
handleNotificationResAttrResult(result) {
if (this.common.validResponse(result)) {
// this.sharedData.setSharedData(result, WorKListResponse.SHARED_DATA);
this.NotRespondAttributeList =
result.NotificationGetRespondAttributesList;
if (
result.NotificationRespondRolesList != "" &&
result.NotificationRespondRolesList[0].ATTRIBUTE_NAME != null &&
result.NotificationRespondRolesList[0].ATTRIBUTE_NAME != undefined
) {
this.Resp2_val = result.NotificationRespondRolesList[0].ATTRIBUTE_NAME;
this.hideForwordEmployee = result.NotificationRespondRolesList[0];
}
this.notificationDynamicFields(result.NotificationGetRespondAttributesList);
this.NotificationGetRespondAttributesList=result.NotificationGetRespondAttributesList;
this.common.sharedService.setSharedData(
this.NotificationGetRespondAttributesList,
WorklistMainPoComponent.PASS_RES_ATTR
);
this.notificationDynamicAttributeArr=result.NotificationGetRespondAttributesList;
if (result.P_Schema) this.schemaNotific = JSON.parse(result.P_Schema);
} // valid it
} // End handleWorkListButtonsResult
notificationDynamicFields(notificationAttr){
const containerId = 'notificationDynamicFields';
for(let i=0;i<notificationAttr.length;i++){
if(notificationAttr[i].ATTRIBUTE_TYPE=="VARCHAR2"){
this.textArea = new TextAreaInput(notificationAttr[i].ATTRIBUTE_DISPLAY_NAME, notificationAttr[i].ATTRIBUTE_NAME, "", containerId,"","","");
}else if(notificationAttr[i].ATTRIBUTE_TYPE=="ROLE"){
}else if(notificationAttr[i].ATTRIBUTE_TYPE=="DATE"){
}else if(notificationAttr[i].ATTRIBUTE_TYPE=="NUMBER"){
}
}
}
openNotificationBody() {
if (this.getPassNotificationDetails.REQUEST_TYPE == "EIT") {
this.common.sharedService.setSharedData(
this.notificationBodyRes,
EITNotificatonBodyResponse.SHARED_DATA
);
this.common.sharedService.setSharedData(
this.getPassNotificationDetails,
EITNotificatonBodyResponse.NOT_WORKLIST
);
// this.navCtrl.push("WorkListDetailsPage", { NotBodyType: "EIT" });
this.common.sharedService.setSharedData("EIT", "NotBodyType");
this.common.openNotificationDetailsPage();
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "ABSENCE") {
this.common.sharedService.setSharedData(
this.notificationBodyRes,
AbsenceNotificatonBodyResponse.SHARED_DATA
);
this.common.sharedService.setSharedData(
this.getPassNotificationDetails,
AbsenceNotificatonBodyResponse.NOT_WORKLIST
);
this.common.sharedService.setSharedData("ABSENCE", "NotBodyType");
//this.navCtrl.push("WorkListDetailsPage", { NotBodyType: "ABSENCE" });
this.common.openNotificationDetailsPage();
}
}
getNotificationCountAfterSubmit() {
const req: any = {};
this.menuService.getNotificationCount(req).subscribe((result: any) => {
if (this.common.validResponse(result)) {
this.notificationCount =
result.GetOpenNotificationsNumList.P_OPEN_NOTIFICATIONS_NUM;
if (this.notificationCount <= 0) {
this.notificationCount = null;
}
this.events.publish("getNotCount", this.notificationCount);
}
});
}
getAttachmentNotification(WorkListAttachObj) {
this.worklistAttachService.getAttach(WorkListAttachObj).
subscribe((result: NotificationGetAttachResponse) => {
this.handleWorkListAttachResult(result);
});
}
handleWorkListAttachResult(result) {
if (this.common.validResponse(result)) {
// this.sharedData.setSharedData(result, WorKListResponse.SHARED_DATA);
if (result.GetAttachementList != null) {
this.attachmentRes = result.GetAttachementList;
} // if result == null
} // valid it
}
getActionHistory(WorkListActionHistoryObj) {
this.IsReachEnd = false;
this.worklistService.getActionHistory(WorkListActionHistoryObj).
subscribe((result: WorkListActionHistoryResponse) => {
this.handleWorkListActionHistoryResult(result);
});
}
handleWorkListActionHistoryResult(result) {
if (this.common.validResponse(result)) {
if (this.common.hasData(result.GetActionHistoryList)) {
this.actionHistoryRes = result.GetActionHistoryList;
this.P_PAGE_NUM++;
let lastItemIndex = this.actionHistoryRes.length - 1;
if (result.GetActionHistoryList[lastItemIndex]) {
let lastitem = result.GetActionHistoryList[lastItemIndex];
if (lastitem.NO_OF_ROWS == lastitem.ROW_NUM) {
this.IsReachEnd = true;
} else {
this.IsReachEnd = false;
}
}
}
}
}
async openNoteDetail(note,sender) {
// let modalPage = this.modalCtrl.create('ViewNoteModalPage', { textNote: note });
// modalPage.present();
console.log("note"+note);
this.common.sharedService.setSharedData(note, 'ViewNoteModalPage')
this.common.sharedService.setSharedData(sender,'ViewNoteModalPageSender')
const modal = await this.modalCtrl.create({
component: ViewNoteModalComponent,
backdropDismiss:false,
});
modal.cssClass = 'note-modal';
return await modal.present();
}
doInfinite(infiniteScroll) {
if (!this.IsReachEnd) {
this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM;
this.worklistService.getActionHistory(this.WorkListActionHistoryObj).
subscribe((result: any) => {
if (this.common.validResponse(result)) {
if (result.GetActionHistoryList != undefined) {
this.P_PAGE_NUM++;
(result.GetActionHistoryList).forEach(element => {
if (element.ROW_NUM == element.NO_OF_ROWS) {
this.IsReachEnd = true;
} else {
this.IsReachEnd = false;
}
this.actionHistoryRes.push(element);
}, (Error) => console.log(Error), () => infiniteScroll.target.complete());
}// if list length >0
else {
this.IsReachEnd = true;
}
}// if response == 1
//this.pageNum++;
infiniteScroll.target.complete();
});
} else {
if (infiniteScroll)
infiniteScroll.target.complete();
}
}//end infiniteScroll
//**********Attachment *****************//
async OpenAttachFiles(value, Type) {
// let modal: Modal = this.modalCtrl.create('WorkListAttachViewPage', { displayData: value, TypeData: Type });
// modal.present();
this.common.sharedService.setSharedData({ displayData: value, TypeData: Type }, 'WorkListAttachViewPage')
const modal = await this.modalCtrl.create({
component: WorkListAttachViewComponent
});
return await modal.present();
}
getItemHistory(itemID) {
console.log(itemID);
this.IsReachEnd = false;
const request = new POItemHistoryRequest();
request.P_ITEM_ID=parseInt(itemID);
request.P_PAGE_LIMIT=50;
request.P_PAGE_NUM=1;
this.worklistMainService.getPOItemHistory(request).
subscribe((result: POItemHistoryRes) => {
// this.common.sharedService.setSharedData(
// result.GetItemHistoryList,
// WorklistMainPoComponent.ItemHistoryList
// );
this.common.sharedService.setSharedData(
itemID,
WorklistMainPoComponent.PASS_PO_INFO
);
//open page
this.common.openItemHistoryPage();
//this.handleItemHistoryResult(result);
});
}
handleItemHistoryResult(result) {
if (this.common.validResponse(result)) {
if (this.common.hasData(result.GetItemHistoryList)) {
this.itemHistoryRes = result.GetItemHistoryList;
this.P_PAGE_NUM++;
let lastItemIndex = this.itemHistoryRes.length - 1;
if (result.GetItemHistoryList[lastItemIndex]) {
let lastitem = result.GetItemHistoryList[lastItemIndex];
if (lastitem.NO_OF_ROWS == lastitem.ROW_NUM) {
this.IsReachEnd = true;
} else {
this.IsReachEnd = false;
}
}
}
}
}
getQutationAnalysis(headerID,itemID) {
console.log(itemID+headerID);
this.IsReachEnd = false;
const request = new QuotationAnalysisRequest();
request.P_ITEM_ID=parseInt(itemID);
request.P_PO_HEADER_ID=headerID;
request.P_PAGE_LIMIT=50;
request.P_PAGE_NUM=1;
this.worklistMainService.getQutationAnalysis(request).
subscribe((result: QuotationAnalysisResponse) => {
this.common.sharedService.setSharedData(
itemID,
WorklistMainPoComponent.PASS_PO_INFO
);
this.common.sharedService.setSharedData(
headerID,
WorklistMainPoComponent.PASS_PO_HEADER_ID
);
//open page
this.handleQutationAnalysisResult(result);
});
}
handleQutationAnalysisResult(result) {
if (this.common.validResponse(result)) {
if (this.common.hasData(result.GetQuotationAnalysisList)) {
//open page
//set sheard data
//
this.common.openQutationAnalysisPage();
// this.QutationAnalysisRes = result.GetQutationAnalysisList;
// this.P_PAGE_NUM++;
// let lastItemIndex = this.QutationAnalysisRes.length - 1;
// if (result.GetQutationAnalysisList[lastItemIndex]) {
// let lastitem = result.GetQutationAnalysisList[lastItemIndex];
// if (lastitem.NO_OF_ROWS == lastitem.ROW_NUM) {
// this.IsReachEnd = true;
// } else {
// this.IsReachEnd = false;
// }
// }
}//hasData
else{
alert("No DATA")
}
}
}
//infinite scrolling
}

@ -130,8 +130,9 @@
<div *ngFor="let header of PRHeader">
<ion-row *ngIf="header.HDR_ATTRIBUTE_NAME != 'Requisition Total' && header.HDR_ATTRIBUTE_NAME != 'Non-Recoverable Tax'">
<!-- *ngIf="header.HDR_ATTRIBUTE_NAME != 'Requisition Total' && header.HDR_ATTRIBUTE_NAME != 'Non-Recoverable Tax'"> -->
<ion-row
*ngIf="header.HDR_ATTRIBUTE_NAME != 'Requisition Total' && header.HDR_ATTRIBUTE_NAME != 'Non-Recoverable Tax'">
<!-- *ngIf="header.HDR_ATTRIBUTE_NAME != 'Requisition Total' && header.HDR_ATTRIBUTE_NAME != 'Non-Recoverable Tax'"> -->
<ion-col>
<label class="colItemReq" for="">{{header.HDR_ATTRIBUTE_NAME}} </label>
@ -144,28 +145,28 @@
</div>
<br />
<ion-grid>
<div >
<ion-row style="text-align: center !important" >
<ion-col *ngIf="totalH">
<div class="colItemReq" style="text-align: center !important">{{totalH}}</div>
<div class="labelTotal">{{valueH}}</div>
</ion-col>
<ion-col *ngIf="taxH ">
<div>
<ion-row style="text-align: center !important">
<ion-col *ngIf="totalH">
<div class="colItemReq" style="text-align: center !important">{{totalH}}</div>
<div class="labelTotal">{{valueH}}</div>
</ion-col>
<ion-col *ngIf="taxH ">
<div class="colItemReq" style="text-align: center !important">{{taxH}}</div>
<div class="labelTotal">{{taxvalueH}}</div>
</ion-col>
</ion-col>
</ion-row>
</div>
</ion-grid>
</ion-grid>
</ion-grid>
</ion-card-content>
@ -193,143 +194,153 @@
</ion-slide>
<ion-slide>
<ion-card class="cardContent">
<!-- <ion-card-header class="boxHdr">
<!-- <ion-card class="cardContent"> -->
<!-- <ion-card-header class="boxHdr">
<div class="hrTitle"> {{ts.trPK('worklistMain','info')}} </div>
</ion-card-header> -->
<ion-card-content>
<div [hidden]="PRLines && PRLines.length > 0">
<p>{{ 'general, empty' | translate}}</p>
</div>
<div *ngIf="PRLines && PRLines.length > 0 ">
<ion-grid>
<div *ngFor="let Lines of PRLines; let i=index; " style="text-align: left">
<ion-row>
<ion-col class="colItemReqHeader">
<!-- <label for="">{{ts.trPK('worklistMain','description')}}
<!-- <ion-card-content> -->
<div [hidden]="PRLines && PRLines.length > 0">
<p>{{ 'general, empty' | translate}}</p>
</div>
<ion-list class="itemReqList" *ngIf="PRLines && PRLines.length > 0 ">
<div>
<ion-grid class="gridItemReq">
<ion-item class="itemReqContent" *ngFor="let Lines of PRLines; let i=index; ">
<div class="itemReqDiv">
<ion-row>
<ion-col class="colItemReqHeader">
<!-- <label for="">{{ts.trPK('worklistMain','description')}}
</label> -->
<!-- </ion-col>
<!-- </ion-col>
<ion-col> -->
<label for="">{{i+1}}. {{Lines.DESCRIPTION}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','cost-center')}} </label>
<br />
<!-- </ion-col>
<label for="">{{i+1}}. {{Lines.DESCRIPTION}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','cost-center')}}
</label>
<br />
<!-- </ion-col>
<ion-col> -->
<label for="">{{Lines.COST_CENTER}} </label>
</ion-col>
<!-- </ion-row>
<ion-label class="labelValue" for="">{{Lines.COST_CENTER}} </ion-label>
</ion-col>
<!-- </ion-row>
<ion-row> -->
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','code')}} </label>
<br />
<!-- </ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','code')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<label for="">{{Lines.ITEM_CODE}} </label>
</ion-col>
</ion-row>
<ion-row>
<ion-label class="labelValue" for="">{{Lines.ITEM_CODE}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','unit')}} </label>
<br />
<!-- </ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','unit')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<label for="">{{Lines.UOM}} </label>
</ion-col>
<!-- </ion-row>
<ion-label class="labelValue" for="">{{Lines.UOM}} </ion-label>
</ion-col>
<!-- </ion-row>
<ion-row> -->
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','price')}} </label>
<br />
<!-- </ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','price')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<label for="">{{Lines.UNIT_PRICE}} </label>
<ion-label class="labelValue" for="">{{Lines.UNIT_PRICE}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('payslip','amount')}} </label>
<br />
<!-- </ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('payslip','amount')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<label for="">{{Lines.LINE_AMOUNT}} </label>
</ion-col>
<ion-label class="labelValue" for="">{{Lines.LINE_AMOUNT}} </ion-label>
</ion-col>
<!-- </ion-row>
<!-- </ion-row>
<ion-row> -->
<ion-col>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quantity')}} </label>
<br />
<!-- </ion-col>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quantity')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<label for="">{{Lines.QUANTITY}} </label>
</ion-col>
<ion-label class="labelValue" for="">{{Lines.QUANTITY}} </ion-label>
</ion-col>
</ion-row>
</ion-row>
</div>
</div>
</ion-item>
</ion-grid>
</div>
</ion-card-content>
</ion-card>
</div>
</ion-list>
<!-- </ion-card-content> -->
<!-- </ion-card> -->
</ion-slide>
<ion-slide>
<ion-card class="cardContent">
<ion-card-content>
<div [hidden]="actionHistoryRes && actionHistoryRes.length > 0">
<p>{{ 'general, empty' | translate}}</p>
</div>
<div *ngIf="actionHistoryRes && actionHistoryRes.length > 0 ">
<ion-list class="notification-list ">
<div class="timeline">
<ion-item *ngFor="let actionHistory of actionHistoryRes">
<div [hidden]="actionHistoryRes && actionHistoryRes.length > 0">
<p>{{ 'general, empty' | translate}}</p>
</div>
<div *ngIf="actionHistoryRes && actionHistoryRes.length > 0 ">
<ion-list class="notification-list ">
<div class="timeline">
<ion-item *ngFor="let actionHistory of actionHistoryRes">
<div class="timeline-item" slot="start">
<!-- <div class="item-date"> {{notificationList.BEGIN_DATE }} </div> -->
<!-- [hidden]="actionHistory.NOTE == '' || actionHistory.NOTE == null"> -->
<div class="timeline-item" slot="start">
<!-- <div class="item-date"> {{notificationList.BEGIN_DATE }} </div> -->
<!-- [hidden]="actionHistory.NOTE == '' || actionHistory.NOTE == null"> -->
<div>
<div>
<button ion-button (click)="openNoteDetail(actionHistory.NOTE ,actionHistory.NAME)"
[hidden]="actionHistory.NOTE == '' || actionHistory.NOTE == null"
style=" background: none;width: 60%;">
<img src="../assets/imgs/noteSmall.png">
<button ion-button
(click)="openNoteDetail(actionHistory.NOTE ,actionHistory.NAME)"
[hidden]="actionHistory.NOTE == '' || actionHistory.NOTE == null"
style=" background: none;width: 60%;">
<!-- <ion-icon name="bookmark"></ion-icon> -->
</button>
</div>
<!-- [ngClass]="{'bg-blue-dot' : actionHistory.ACTION === 'Submitted' ,'statusGreanColor' :appointmentsArrive.Status != 1 && appointmentsArrive.Status != 2, 'statusRedColor' :appointmentsArrive.Status === 2}" -->
<img src="../assets/imgs/noteSmall.png">
<div
[ngClass]="{'bg-blue-dot' : actionHistory.ACTION === 'Submitted' ,'bg-orange-dot' : actionHistory.ACTION === 'Pending' ,'bg-red-dot' : actionHistory.ACTION === 'Rejected','bg-green-dot' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Rejected' && actionHistory.ACTION != 'Submitted'}"
class="timeline-thumb timeline-icon">
</div>
</div>
<ion-col>
<ion-label [ngClass]="{'bg-blue-txt' : actionHistory.ACTION === 'Submitted' ,'bg-orange-txt' : actionHistory.ACTION === 'Pending' ,'bg-red-txt' : actionHistory.ACTION === 'Rejected','bg-green-txt' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Rejected' && actionHistory.ACTION != 'Submitted'}"
class=""> {{actionHistory.ACTION}}</ion-label>
<ion-label > {{actionHistory.NAME}}
</ion-label>
<!-- <ion-icon name="bookmark"></ion-icon> -->
</button>
</div>
<!-- [ngClass]="{'bg-blue-dot' : actionHistory.ACTION === 'Submitted' ,'statusGreanColor' :appointmentsArrive.Status != 1 && appointmentsArrive.Status != 2, 'statusRedColor' :appointmentsArrive.Status === 2}" -->
<ion-label> {{actionHistory.NOTIFICATION_DATE| dateString }} </ion-label>
</ion-col>
</ion-item>
</div>
</ion-list>
<div
[ngClass]="{'bg-blue-dot' : actionHistory.ACTION === 'Submitted' || actionHistory.ACTION === 'Submit' ,'bg-orange-dot' : actionHistory.ACTION === 'Pending' ,'bg-red-dot' : actionHistory.ACTION === 'Rejected','bg-green-dot' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Rejected' && actionHistory.ACTION != 'Submitted' && actionHistory.ACTION != 'Submit'}"
class="timeline-thumb timeline-icon">
</div>
</div>
<ion-col>
<ion-label
[ngClass]="{'bg-blue-txt' : actionHistory.ACTION === 'Submitted' || actionHistory.ACTION === 'Submit' ,'bg-orange-txt' : actionHistory.ACTION === 'Pending' ,'bg-red-txt' : actionHistory.ACTION === 'Rejected','bg-green-txt' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Rejected' && actionHistory.ACTION != 'Submitted' && actionHistory.ACTION != 'Submit'}"
class=""> {{actionHistory.ACTION}}</ion-label>
<ion-label> {{actionHistory.NAME}}
</ion-label>
<ion-label> {{actionHistory.NOTIFICATION_DATE| dateString }} </ion-label>
</ion-col>
</ion-item>
</div>
</ion-list>
</div>
</ion-card-content>
</ion-card>
@ -342,39 +353,46 @@
<p>{{ 'general, notAttch' | translate}}</p>
</div>
<div *ngIf="attachmentRes && attachmentRes.length > 0 ">
<!-- <ion-card>
<!-- <ion-card>
<ion-card-header class="boxHdr">
<div class="hrTitle">{{'worklistMain, suppDoc' | translate}}</div>
</ion-card-header>
<ion-card-content>
-->
<ion-grid>
<div *ngFor="let attachList of attachmentRes">
<ion-row (click)="OpenAttachFiles(attachList.FILE_DATA,attachList.FILE_CONTENT_TYPE)">
<ion-col col-12>
<div *ngIf="attachList.FILE_CONTENT_TYPE === 'pdf' || attachList.FILE_CONTENT_TYPE === 'PDF'"> <img float-start class="attachImg" src="../assets/imgs/pdf.png">
</div>
<div *ngIf="attachList.FILE_CONTENT_TYPE === 'txt'"> <img float-start class="attachImg" src="../assets/imgs/doc.png">
</div>
<div *ngIf="attachList.FILE_CONTENT_TYPE != 'txt' && attachList.FILE_CONTENT_TYPE != 'PDF' && attachList.FILE_CONTENT_TYPE != 'pdf' && attachList.FILE_CONTENT_TYPE != 'png' && attachList.FILE_CONTENT_TYPE != 'jpeg' && attachList.FILE_CONTENT_TYPE != 'jpg' && attachList.FILE_CONTENT_TYPE != 'PNG' && attachList.FILE_CONTENT_TYPE != 'JPEG' && attachList.FILE_CONTENT_TYPE != 'JPG'"> <img float-start class="attachImg" src="../assets/imgs/nonfile.png">
</div>
<div *ngIf="attachList.FILE_CONTENT_TYPE === 'png' || attachList.FILE_CONTENT_TYPE === 'jpeg' || attachList.FILE_CONTENT_TYPE === 'jpg'|| attachList.FILE_CONTENT_TYPE === 'PNG' || attachList.FILE_CONTENT_TYPE === 'JPEG'|| attachList.FILE_CONTENT_TYPE === 'JPG'"> <img float-start class="attachImg" src="../assets/imgs/img.png">
</div>
<ion-label>
{{attachList.SEQ_NUM }}. {{attachList.FILE_NAME}} </ion-label>
</ion-col>
<!-- <ion-col col-2>
<ion-grid>
<div *ngFor="let attachList of attachmentRes">
<ion-row (click)="OpenAttachFiles(attachList.FILE_DATA,attachList.FILE_CONTENT_TYPE)">
<ion-col col-12>
<div
*ngIf="attachList.FILE_CONTENT_TYPE === 'pdf' || attachList.FILE_CONTENT_TYPE === 'PDF'">
<img float-start class="attachImg" src="../assets/imgs/pdf.png">
</div>
<div *ngIf="attachList.FILE_CONTENT_TYPE === 'txt'"> <img float-start
class="attachImg" src="../assets/imgs/doc.png">
</div>
<div
*ngIf="attachList.FILE_CONTENT_TYPE != 'txt' && attachList.FILE_CONTENT_TYPE != 'PDF' && attachList.FILE_CONTENT_TYPE != 'pdf' && attachList.FILE_CONTENT_TYPE != 'png' && attachList.FILE_CONTENT_TYPE != 'jpeg' && attachList.FILE_CONTENT_TYPE != 'jpg' && attachList.FILE_CONTENT_TYPE != 'PNG' && attachList.FILE_CONTENT_TYPE != 'JPEG' && attachList.FILE_CONTENT_TYPE != 'JPG'">
<img float-start class="attachImg" src="../assets/imgs/nonfile.png">
</div>
<div
*ngIf="attachList.FILE_CONTENT_TYPE === 'png' || attachList.FILE_CONTENT_TYPE === 'jpeg' || attachList.FILE_CONTENT_TYPE === 'jpg'|| attachList.FILE_CONTENT_TYPE === 'PNG' || attachList.FILE_CONTENT_TYPE === 'JPEG'|| attachList.FILE_CONTENT_TYPE === 'JPG'">
<img float-start class="attachImg" src="../assets/imgs/img.png">
</div>
<ion-label>
{{attachList.SEQ_NUM }}. {{attachList.FILE_NAME}} </ion-label>
</ion-col>
<!-- <ion-col col-2>
<button float-end class="attachImgBtn"
(click)="OpenAttachFiles(attachList.FILE_DATA,attachList.FILE_CONTENT_TYPE)">
<img class="attachImg" src="../assets/imgs/view.png">
</button>
</ion-col> -->
</ion-row>
</div>
</ion-row>
</div>
</ion-grid>
<!-- </ion-card-content>
</ion-grid>
<!-- </ion-card-content>
</ion-card> -->
</div>
@ -389,55 +407,47 @@
</div> -->
</ion-content>
<ion-footer class="footerSearchBtn">
<ion-row>
<ion-col col-12>
<div id="notificationDynamicFields">
</div>
</ion-col>
</ion-row>
<ion-row>
<!-- <div class="centerDiv"> -->
<ion-col col-2>
<ion-col col-12>
<div id="notificationDynamicFields">
</div>
</ion-col>
</ion-row>
</ion-col>
<ion-row>
<!-- <div class="centerDiv"> -->
<ion-col col-2>
</ion-col>
<ion-col col-8>
<!-- <ion-button color="customnavy" class="gridBtn" (click)="actionButton()"> {{ts.trPK('general','submit')}}
<!-- <ion-button color="customnavy" class="gridBtn" (click)="actionButton()"> {{ts.trPK('general','submit')}}
</ion-button> -->
<ion-item *ngIf="notificationButtonRes?.length >0" class="requiredItem actionList">
<ion-label class="boldTxtNav">{{'actionHis, action' | translate}} </ion-label>
<ion-select (ionChange)="actionButton()" okText="{{ts.trPK('general','ok')}}" cancelText="{{ts.trPK('general','cancel')}}"
[(ngModel)]="actionType" required>
<ion-select-option value="{{notificationButtons.BUTTON_ACTION}}"
*ngFor="let notificationButtons of notificationButtonRes; let i=index;">
{{notificationButtons.BUTTON_LABEL}}</ion-select-option>
</ion-select>
</ion-item>
<ion-item *ngIf="notificationButtonRes?.length >0" class="requiredItem actionList">
<ion-label class="boldTxtNav">{{'actionHis, action' | translate}} </ion-label>
<ion-select (ionChange)="actionButton()" okText="{{ts.trPK('general','ok')}}"
cancelText="{{ts.trPK('general','cancel')}}" [(ngModel)]="actionType" required>
<ion-select-option value="{{notificationButtons.BUTTON_ACTION}}"
*ngFor="let notificationButtons of notificationButtonRes; let i=index;">
{{notificationButtons.BUTTON_LABEL}}</ion-select-option>
</ion-select>
</ion-item>
</ion-col>
<!-- </div> -->
<ion-col col-2>
<ion-button class="skipbutton" (click)="nextNotfification()">
{{'worklistMain, skip' | translate}}
<img style="width:20px" src="../assets/imgs/arrowRight.png">
<ion-col col-2 style="bottom: -8px">
<ion-button class="skipbutton" (click)="nextNotfification()">
{{'worklistMain, skip' | translate}}
<img class="arrowIcon" src="../assets/imgs/arrowRight.png">
</ion-button>
</ion-col>
</ion-button>
</ion-col>
</ion-row>
<!-- <div class="centerDiv">
<ion-button color="customnavy" class="gridBtn" (click)="actionButton()"> {{ts.trPK('general','submit')}}
</ion-button>
</div> -->
<!-- <div class="centerDiv">
<ion-button color="customnavy" class="gridBtn" (click)="nextNotfification()">
{{'worklistMain, skip' | translate}}
</ion-button>
</div> -->

@ -1,306 +1,306 @@
.colorBG{
--background: #f0efef;
}
.footerSearchBtn{
padding: 0px !important;
background: #f0efef !important;
}
.actionList{
// position: fixed;
// bottom: 0px;
width: 215px;
border-top-left-radius: 7px;
border-top-right-radius: 7px
}
.cardContent{
width:100%;
margin-top: 33px
}
.colItemReq{
color: var(--dark);
font-weight: bold;
font-size: 15px;
text-align: left;
}
.colItemReqHeader{
text-align: left;
color: var(--primary);
font-weight: bold;
}
.labelTotal{
color: var(--danger);
font-weight: bold;
font-size: 17px;
}
.labelAction{
color:var(--customnavy) !important;
font-weight:bold;
}
.segmentPR{
// --background-hover: rgba(var(--ion-color-contrast-rgb),0.04);
// --background-activated: var(--danger);
// --color: rgba(--primary);
--color-checked: var(--dark);
--indicator-color-checked: var(--secondary);
--background: #f0efef;
--background-activated: #f0efef;
--background-hover:#f0efef;
--background-activated:#f0efef;
--background-checked:#f0efef;
}
.ion-modal#ion-overlay-1 {
width: 90%;
height: 50%;
top: 20%;
left: 5%;
right: 5%;
bottom: 5%;
border: solid 1px red;
}
// .swiper-pagination.swiper-pagination-bullets{
// top: 6px;
// bottom: inherit;
// .colorBG{
// --background: #f0efef;
// }
// .footerSearchBtn{
// padding: 0px !important;
// background: #f0efef !important;
// }
// .actionList{
// // position: fixed;
// // bottom: 0px;
// width: 215px;
// border-top-left-radius: 7px;
// border-top-right-radius: 7px
// }
// .cardContent{
// width:100%;
// margin-top: 33px
// }
// .colItemReq{
// color: var(--dark);
// font-weight: bold;
// font-size: 15px;
// text-align: left;
// }
// .colItemReqHeader{
// text-align: left;
// color: var(--primary);
// font-weight: bold;
// }
// .labelTotal{
// color: var(--danger);
// font-weight: bold;
// font-size: 17px;
// .swiper-pagination.swiper-pagination-bullets {
// top: 6px !important;
// bottom: 0px !important;
// }
// }
// .labelAction{
// color:var(--customnavy) !important;
// font-weight:bold;
// }
// .segmentPR{
// // --background-hover: rgba(var(--ion-color-contrast-rgb),0.04);
// // --background-activated: var(--danger);
// // --color: rgba(--primary);
// --color-checked: var(--dark);
// --indicator-color-checked: var(--secondary);
// --background: #f0efef;
// --background-activated: #f0efef;
// --background-hover:#f0efef;
// --background-activated:#f0efef;
// --background-checked:#f0efef;
// }
// .ion-modal#ion-overlay-1 {
// width: 90%;
// height: 50%;
// top: 20%;
// left: 5%;
// right: 5%;
// bottom: 5%;
// border: solid 1px red;
// }
// // .swiper-pagination.swiper-pagination-bullets{
// // top: 6px;
// // bottom: inherit;
// // }
// // .swiper-pagination.swiper-pagination-bullets {
// // top: 6px !important;
// // bottom: 0px !important;
// // }
// .swiper-pagination {
// top: 6px;
// }
// // .swiper-pagination {
// // top: 6px;
// // }
.bar-stable {
background-color: var(--cusgray) !important;
}
.tabs{
background-color: var(--cusgray) !important;
}
.icon-size-lg {
font-size: 40px;
}
// .bar-stable {
// background-color: var(--cusgray) !important;
// }
// .tabs{
// background-color: var(--cusgray) !important;
// }
// .icon-size-lg {
// font-size: 40px;
// }
/*Timeline*/
// /*Timeline*/
.pos-absolute-right {
position: absolute;
right: 8px;
}
// .pos-absolute-right {
// position: absolute;
// right: 8px;
// }
.timeline {
position: relative;
margin: 15px 0 0 0;
}
// .timeline {
// position: relative;
// margin: 15px 0 0 0;
// }
.timeline:before {
// .timeline:before {
content: '';
position: absolute;
top: 0;
bottom: 0;
width: 4px;
background: #e4e4e4;
z-index: 1;
left: 66px;
/* margin-left: -10px; */
/* z-index: 1; */
}
// content: '';
// position: absolute;
// top: 0;
// bottom: 0;
// width: 4px;
// background: #e4e4e4;
// z-index: 1;
// left: 66px;
// /* margin-left: -10px; */
// /* z-index: 1; */
// }
.timeline .timeline-thumb {
// .timeline .timeline-thumb {
border-radius: 500px;
width: 40px !important;
z-index: 2;
position: absolute;
left: 48px;
// :root[dir="ltr"]{
// left: 37px;
// }
// :root[dir="rtl"]{
// right: 37px;
// }
float: right;
top: 9px;
}
// border-radius: 500px;
// width: 40px !important;
// z-index: 2;
// position: absolute;
// left: 48px;
// // :root[dir="ltr"]{
// // left: 37px;
// // }
// // :root[dir="rtl"]{
// // right: 37px;
// // }
// float: right;
// top: 9px;
// }
.timeline .timeline-thumb.timeline-icon {
height: 40px;
// text-align: center;
// color: white;
// border: 5px solid #CBD0D3;
// transform: scale(0.2);
}
// .timeline .timeline-thumb.timeline-icon {
// height: 40px;
// // text-align: center;
// // color: white;
// // border: 5px solid #CBD0D3;
// // transform: scale(0.2);
// }
.timeline .timeline-item {
width: 50px;
// .timeline .timeline-item {
// width: 50px;
}
// }
.timeline .timeline-stats {
position: relative;
font-size: 12px;
color: var(--darkgray);
// .timeline .timeline-stats {
// position: relative;
// font-size: 12px;
// color: var(--darkgray);
}
// }
.divider-title {
background: #e4e4e4;
padding: 5px 15px;
}
// .divider-title {
// background: #e4e4e4;
// padding: 5px 15px;
// }
.color-red {
color: var(--danger) !important;
}
// .color-red {
// color: var(--danger) !important;
// }
.bg-color-dot {
// .bg-color-dot {
background: var(--gray);
// background: var(--gray);
/* background: linear-gradient(45deg, var(--primary) 0%, #19a163 36%, var(--secondary) 59%, var(--customnavy) 100%); */
// border: var(--secondary) solid 1px;
// background-color: #ff3b30 !important;
// background: var(--primary);
//background: -moz-linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
//background: -webkit-linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
//background: linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
// /* background: linear-gradient(45deg, var(--primary) 0%, #19a163 36%, var(--secondary) 59%, var(--customnavy) 100%); */
// // border: var(--secondary) solid 1px;
// // background-color: #ff3b30 !important;
// // background: var(--primary);
// //background: -moz-linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
// //background: -webkit-linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
// //background: linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
}
// }
.bg-blue-dot {
// .bg-blue-dot {
border: var(--blue) solid 1px;
background: var(--gray);
// border: var(--blue) solid 1px;
// background: var(--gray);
}
.bg-orange-dot {
// }
// .bg-orange-dot {
border: var(--orange) solid 1px;
background: var(--gray);
}
.bg-red-dot {
// border: var(--orange) solid 1px;
// background: var(--gray);
// }
// .bg-red-dot {
border: var(--red) solid 1px;
background: var(--gray);
// border: var(--red) solid 1px;
// background: var(--gray);
}
.bg-green-dot {
// }
// .bg-green-dot {
border: var(--green) solid 1px;
background: var(--gray);
}
// border: var(--green) solid 1px;
// background: var(--gray);
// }
.bg-blue-txt {
// .bg-blue-txt {
color: var(--blue) !important;
font-weight:bold;
// color: var(--blue) !important;
// font-weight:bold;
}
.bg-orange-txt {
font-weight:bold;
// }
// .bg-orange-txt {
// font-weight:bold;
color: var(--orange) !important;
}
.bg-red-txt {
font-weight:bold;
// color: var(--orange) !important;
// }
// .bg-red-txt {
// font-weight:bold;
color: var(--red) !important;
// color: var(--red) !important;
}
.bg-green-txt {
font-weight:bold;
// }
// .bg-green-txt {
// font-weight:bold;
color: var(--green) !important;
}
// color: var(--green) !important;
// }
.notification-list{
ion-item{
// margin-top: 5px;
// margin-bottom: 5px;
// .notification-list{
// ion-item{
// // margin-top: 5px;
// // margin-bottom: 5px;
background-color: transparent;
.item-date{
width: 55px;
font-size: 14px;
font-weight: bold;
// background-color: transparent;
// .item-date{
// width: 55px;
// font-size: 14px;
// font-weight: bold;
text-align: center;
padding: 0;
margin: 0;
// text-align: center;
// padding: 0;
// margin: 0;
position: absolute;
left: 0;
top: 0;
}
ion-label , [item-end]{
// position: absolute;
// left: 0;
// top: 0;
// }
// ion-label , [item-end]{
white-space: normal;
font-size: 14px;
// :root[dir="ltr"]{
// margin-left: 10px;
// }
// :root[dir="rtl"]{
// margin-right: 10px;
// }
// white-space: normal;
// font-size: 14px;
// // :root[dir="ltr"]{
// // margin-left: 10px;
// // }
// // :root[dir="rtl"]{
// // margin-right: 10px;
// // }
}
}
}
.input-wrapper {
--flex:none;
}
ion-input ,ion-datetime{
border-bottom: #dedede 1px solid;
}
.left {
.timeline:before{
left: 66px;
}
.notification-list ion-item{
padding-left: 3px;
}
.timeline-thumb{
left: 37px;
}
}
.right {
.timeline:before{
right: 62px;
}
.notification-list ion-item{
padding-right: 3px;
}
.timeline-thumb{
right: 37px;
}
}
// }
// }
// }
// .input-wrapper {
// --flex:none;
// }
// ion-input ,ion-datetime{
// border-bottom: #dedede 1px solid;
// }
// .left {
// .timeline:before{
// left: 66px;
// }
// .notification-list ion-item{
// padding-left: 3px;
// }
// .timeline-thumb{
// left: 37px;
// }
// }
// .right {
// .timeline:before{
// right: 62px;
// }
// .notification-list ion-item{
// padding-right: 3px;
// }
// .timeline-thumb{
// right: 37px;
// }
// }

@ -218,8 +218,8 @@ export class WorklistMainPRComponent implements OnInit {
this.worklistMainService
.getPONotificationBody(notificationBodyObj)
.subscribe((result: PONotificatonBodyResponse) => {
// console.log(result.GetPoNotificationBodyList.POHeader[0].BUYER);
// this.handleWorkListBodyResult(result, "PO");
console.log(result.GetPoNotificationBodyList.POHeader[0].BUYER);
this.handleWorkListBodyResult(result, "PO");
});
}
@ -406,7 +406,7 @@ export class WorklistMainPRComponent implements OnInit {
}
this.common.confirmAlertDialog(
this.common.confirmAlertDialogAction(
() => {
this.applyAction(this.WorkListActionObj);
}, this.ts.trPK('general', 'ok'),

@ -131,6 +131,6 @@
<ion-button color="customnavy" class="gridBtn" (click)="actionButton()"> {{ts.trPK('general','submit')}}</ion-button>
</div>
<div class="centerDiv" >
<ion-button color="customnavy" class="gridBtn" (click)="nextNotfification()">{{ts.trPK('workListMain','skip')}}</ion-button>
<ion-button color="customnavy" class="gridBtn" (click)="nextNotfification()">{{'worklistMain, skip' | translate}}</ion-button>
</div>
</ion-footer>

@ -6,16 +6,19 @@
<ion-title color="light" >{{ts.trPK('payslip','title')}}</ion-title>
</ion-toolbar>
</ion-header>
<ion-content padding>
<ion-content class="colorBG">
<ion-item>
<ion-item style="margin: 10px;border-radius: 5px;">
<ion-label>choose payslip</ion-label>
<ion-select (ionChange)="showInfo($event)" okText="{{ts.trPK('general','ok')}}" cancelText="{{ts.trPK('general','cancel')}}" [(ngModel)]="choosePayslip">
<ion-select-option value="{{i}}" *ngFor="let options of GetPayslipList; let i=index">{{options.PAYSLIP_CHOICE}} </ion-select-option>
<ion-select-option value="{{i}}" selected="{{(i==0).toString()}}" *ngFor="let options of GetPayslipList; let i=index">{{options.PAYSLIP_CHOICE}} </ion-select-option>
</ion-select>
</ion-item>
<!-- <ion-list *ngIf="showPaySlip !=''" >
<ion-item>
<ion-row><ion-label>PERIOD NAME</ion-label><ion-label>{{showPaySlip.PERIOD_NAME}}</ion-label></ion-row>
@ -24,9 +27,59 @@
</ion-item>
</ion-list> -->
<accordin-custom >
<accordin-tab-custom [header]="'payslip,payroll-info' | translate " >
<!-- special results -->
<!-- <ion-card >
<ion-card-header class="boxHdr">
<div class="hrTitle"> {{ts.trPK('payslip','payroll-info')}} </div>
</ion-card-header>
<ion-card-content> -->
<div *ngIf="showPaySlip !=''">
<ion-grid class="">
<ion-row class="">
<ion-col class="">
<label for=""> {{ts.trPK('payslip','peroid-name')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{showPaySlip.PERIOD_NAME}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="">
<label for="">{{ts.trPK('payslip','start-date')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{showPaySlip.PERIOD_START_DATE}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="">
<label for="">{{ts.trPK('payslip','end-date')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{showPaySlip.PERIOD_END_DATE}}</label>
</ion-col>
</ion-row>
</ion-grid>
</div>
<empty-data *ngIf="showPaySlip.length <= 0 "></empty-data>
<!-- </ion-card-content>
</ion-card> -->
</accordin-tab-custom>
</accordin-custom>
<ion-card *ngIf="showPaySlip !=''">
<!-- <ion-card *ngIf="showPaySlip !=''">
<ion-card-header class="boxHdr">
<div class="hrTitle"> {{ts.trPK('payslip','payroll-info')}} </div>
</ion-card-header>
@ -68,69 +121,71 @@
</div>
</ion-card-content>
</ion-card>
</ion-card> -->
<ion-card *ngIf="GetSummaryOfPaymentList !='' " >
<accordin-custom >
<accordin-tab-custom [header]="'payslip,summary-payment' | translate" >
<!-- <ion-card *ngIf="GetSummaryOfPaymentList !='' " >
<ion-card-header class="boxHdr">
<div class="hrTitle"> {{ts.trPK('payslip','summary-payment')}} </div>
</ion-card-header>
<ion-card-content>
<div>
<ion-card-content> -->
<div *ngIf="GetSummaryOfPaymentList !=''">
<ion-grid>
<ion-row >
<ion-col class="colBold">
<ion-col class="">
<label for=""> {{ts.trPK('payslip','deductions-Amount')}}
</label>
</ion-col>
<ion-col>
<ion-col class="colPayslip">
<label for="">{{GetSummaryOfPaymentList.TOTAL_DEDUCTIONS_AMOUNT}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colBold">
<ion-col class="">
<label for="">{{ts.trPK('payslip','deductions-percentage')}}
</label>
</ion-col>
<ion-col>
<ion-col class="colPayslip">
<label for="">{{GetSummaryOfPaymentList.TOTAL_DEDUCTIONS_PERCENTAGE}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colBold">
<ion-col class="">
<label for="">{{ts.trPK('payslip','earings-Amount')}}
</label>
</ion-col>
<ion-col>
<ion-col class="colPayslip">
<label for="">{{GetSummaryOfPaymentList.TOTAL_EARNINGS_AMOUNT}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colBold">
<ion-col class="">
<label for="">{{ts.trPK('payslip','earings-percentage')}}
</label>
</ion-col>
<ion-col>
<ion-col class="colPayslip">
<label for="">{{GetSummaryOfPaymentList.TOTAL_EARNINGS_PERCENTAGE}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colBold">
<ion-col class="">
<label for="">{{ts.trPK('payslip','pay-Amount')}}
</label>
</ion-col>
<ion-col>
<ion-col class="colPayslip">
<label for="">{{GetSummaryOfPaymentList.TOTAL_PAY_AMOUNT}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colBold">
<ion-col class="">
<label for="">{{ts.trPK('payslip','pay-percentage')}}
</label>
</ion-col>
<ion-col>
<ion-col class="colPayslip">
<label for="">{{GetSummaryOfPaymentList.TOTAL_PAY_PERCENTAGE}}</label>
</ion-col>
</ion-row>
@ -138,72 +193,181 @@
</ion-grid>
</div>
</ion-card-content>
</ion-card>
<ion-card *ngIf="GetPaymentInformationList !='' " >
<empty-data *ngIf="GetSummaryOfPaymentList.length <= 0 "></empty-data>
<!-- </ion-card-content>
</ion-card> -->
</accordin-tab-custom>
</accordin-custom >
<accordin-custom >
<accordin-tab-custom [header]="'payslip,earnings' | translate" [subHeadergreen]=true [subHeader]="earingTotal" >
<!-- <ion-card *ngIf="GetEarningsList !='' " >
<ion-card-header class="boxHdr">
<div class="hrTitle"> {{ts.trPK('payslip','total')}} </div>
</ion-card-header>
<ion-card-content> -->
<div *ngIf="GetEarningsList !=''">
<ion-grid>
<ion-row *ngFor="let list of GetEarningsList" >
<ion-col class="">
<label for="">{{list.ELEMENT_NAME}}</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{list.AMOUNT}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col col-6 class="earingTotH">
<label style="font-size: 20px !important" for="">{{ts.trPK('payslip','total')}}</label>
</ion-col>
<ion-col col-6 class="earingTotG">
<label style="font-size: 20px !important" for="">{{earingTotal}}</label>
</ion-col>
</ion-row>
</ion-grid>
</div>
<empty-data *ngIf="GetEarningsList.length <= 0 "></empty-data>
<!-- </ion-card-content>
</ion-card> -->
</accordin-tab-custom>
</accordin-custom >
<!-- <accordin-custom *ngIf="GetDeductionsList !=''"> -->
<accordin-custom >
<accordin-tab-custom [header]="'payslip,deductions' | translate" [subHeadergreen]=false [subHeader]="deductionTotal" >
<!-- <ion-card *ngIf="GetDeductionsList !='' " >
<ion-card-header class="boxHdr">
<div class="hrTitle"> {{ts.trPK('payslip','payment-information')}} </div>
</ion-card-header>
<div class="hrTitle"> {{ts.trPK('payslip','deductions')}} </div>
</ion-card-header>
<ion-card-content>
<div>
colBold -->
<div *ngIf="GetDeductionsList !=''">
<ion-grid>
<ion-row >
<ion-col class="colBold">
<label for=""> {{ts.trPK('payslip','payment-method')}}
</label>
</ion-col>
<ion-col>
<label for="">{{GetPaymentInformationList.PAYMENT_METHOD_NAME}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colBold">
<label for="">{{ts.trPK('payslip','bank-name')}}
</label>
</ion-col>
<ion-col>
<label for="">{{GetPaymentInformationList.BANK_NAME}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colBold">
<label for="">{{ts.trPK('payslip','branch-name')}}
</label>
</ion-col>
<ion-col>
<label for="">{{GetPaymentInformationList.BRANCH_NAME}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colBold">
<label for="">{{ts.trPK('payslip','account-no')}}
</label>
</ion-col>
<ion-col>
<label for="">{{GetPaymentInformationList.ACCOUNT_NUMBER}}</label>
<ion-row *ngFor="let list of GetDeductionsList" >
<ion-col class="">
<label for="">{{list.ELEMENT_NAME}}</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{list.AMOUNT}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colBold">
<label for="">{{ts.trPK('payslip','amount')}}
</label>
</ion-col>
<ion-col>
<label for="">{{GetPaymentInformationList.AMOUNT}}</label>
</ion-col>
</ion-row>
<ion-col col-6 class="earingTotH">
<label style="font-size: 20px !important" for="">{{ts.trPK('payslip','total')}}</label>
</ion-col>
<ion-col col-6 class="earingTotR">
<label style="font-size: 20px !important" for="">{{deductionTotal}}</label>
</ion-col >
</ion-row>
</ion-grid>
</div>
</ion-card-content>
</ion-card>
<empty-data *ngIf="GetDeductionsList.length <= 0 "></empty-data>
<!-- </ion-card-content>
</ion-card> -->
</accordin-tab-custom>
</accordin-custom >
<accordin-custom >
<accordin-tab-custom [header]="'payslip,payment-information' | translate" >
<!-- <ion-card *ngIf="GetPaymentInformationList !='' " >
<ion-card-header class="boxHdr">
<div class="hrTitle"> {{ts.trPK('payslip','payment-information')}} </div>
</ion-card-header>
<ion-card-content> -->
<div *ngIf="GetPaymentInformationList !=''">
<ion-grid>
<ion-row >
<ion-col class="">
<label for=""> {{ts.trPK('payslip','payment-method')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{GetPaymentInformationList.PAYMENT_METHOD_NAME}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="">
<label for="">{{ts.trPK('payslip','bank-name')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{GetPaymentInformationList.BANK_NAME}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="">
<label for="">{{ts.trPK('payslip','branch-name')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{GetPaymentInformationList.BRANCH_NAME}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="">
<label for="">{{ts.trPK('payslip','account-no')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{GetPaymentInformationList.ACCOUNT_NUMBER}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="">
<label for="">{{ts.trPK('payslip','amount')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{GetPaymentInformationList.AMOUNT}}</label>
</ion-col>
</ion-row>
</ion-grid>
</div>
<empty-data *ngIf="GetPaymentInformationList.length <= 0 "></empty-data>
<!-- </ion-card-content>
</ion-card> -->
</accordin-tab-custom>
</accordin-custom >
<ion-row *ngIf="showPaySlip !=''" style="text-align: center;">
<!-- <ion-row *ngIf="showPaySlip !=''" style="text-align: center;">
<ion-col class="greenTxt" col-6>
<button ion-button block class="notColBtn" (click)="openEarings()">
<p>{{ts.trPK('payslip','earnings')}}</p>
@ -216,6 +380,6 @@
<ion-img class="serviceItemImg" src="../assets/imgs/details.png"></ion-img>
</button>
</ion-col>
</ion-row>
</ion-row> -->
</ion-content>

@ -0,0 +1,41 @@
.rowAccordin{
border: none;
}
.gridAccordin{
margin: 10px;
background: #ffffff;
border-radius: 5px;
}
.colPayslip{
text-align: center;
color: var(--labelColor);
}
.earingTotH{
text-align: right;
font-weight: bold;
font-size:20px !important;
padding-right: 15px;
}
.earingTotG{
text-align: left;
padding-left: 15px;
font-weight: bold;
font-size: 20px !important;
color: var(--green);
}
.earingTotR{
text-align: left;
padding-left: 15px;
font-weight: bold;
font-size: 20px !important;
color: var(--red);
}

@ -19,6 +19,10 @@ export class HomeComponent implements OnInit {
showPaySlip:any=[];
ActionContextID:any;
public static ACTION_CONTEXT_ID = "passActionContectID";
GetEarningsList: any='';
GetDeductionsList: any='';
earingTotal: any;
deductionTotal: any;
constructor(
public payslipService:PayslipService,
@ -85,7 +89,9 @@ export class HomeComponent implements OnInit {
this.ActionContextID=this.GetPayslipList[index].ACTION_CONTEXT_ID;
this.common.sharedService.setSharedData(this.ActionContextID,HomeComponent.ACTION_CONTEXT_ID);
this.getSummeryOfPayment(this.ActionContextID);
this.getPaymentInfo(this.ActionContextID)
this.getPaymentInfo(this.ActionContextID);
this.getDeduction(this.ActionContextID);
this.getEarings(this.ActionContextID);
}
@ -104,6 +110,9 @@ export class HomeComponent implements OnInit {
handleSummeryOfPaymentResult(result){
if (result.GetSummaryOfPaymentList != null) {
this.GetSummaryOfPaymentList = result.GetSummaryOfPaymentList[0];
this.earingTotal = this.GetSummaryOfPaymentList.TOTAL_EARNINGS_AMOUNT;
this.deductionTotal = this.GetSummaryOfPaymentList.TOTAL_DEDUCTIONS_AMOUNT;
}
}
@ -134,4 +143,52 @@ openDeductions(){
this.common.openDeductionsPage();
}
getEarings(ActionContextID){
const request = {
P_ACTION_CONTEXT_ID: ActionContextID,
P_PAGE_NUM: 1,
P_PAGE_LIMIT: 1000
};
this.payslipService.getEarings(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
{
this.handleGetEaringsResult(result);
}
);
}
handleGetEaringsResult(result){
if (result.GetEarningsList != null) {
this.GetEarningsList = result.GetEarningsList;
}
}
getDeduction(ActionContextID){
const request = {
P_ACTION_CONTEXT_ID: ActionContextID,
P_PAGE_NUM: 1,
P_PAGE_LIMIT: 1000
};
this.payslipService.getDeduction(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
{
this.handleGetDeductionResult(result);
}
);
}
handleGetDeductionResult(result){
if (result.GetDeductionsList != null) {
this.GetDeductionsList = result.GetDeductionsList;
}
}
}

@ -2,6 +2,7 @@ import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { HmgCommonModule } from 'src/app/hmg-common/hmg-common.module';
import { IonicModule } from '@ionic/angular';
import {EarningsComponent}from './earnings/earnings.component'
@ -35,6 +36,7 @@ const routes: Routes = [
CommonModule,
FormsModule,
IonicModule,
HmgCommonModule,
RouterModule.forChild(routes)
],
providers:[

Binary file not shown.

After

Width:  |  Height:  |  Size: 522 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 517 B

@ -1727,8 +1727,268 @@
"closeMsg":{
"en": "Are you sure to close this purchase requisition ?",
"ar":"العناصر المطلوبة"
},
"Supplier":{
"en": "Supplier",
"ar":"Supplier"
},
"Site":{
"en": "Site",
"ar":"Site"
},
"Preparer":{
"en": "Preparer",
"ar":"Preparer"
},
"Buyer":{
"en": "Buyer",
"ar":"Buyer"
},
"CreationDate":{
"en": "Creation Date",
"ar":"Creation Date"
},
"ShipToLocation":{
"en": "Ship To Location",
"ar":"Ship To Location "
},
"QuotationNumber":{
"en": "Quotation Number",
"ar":"Quotation Number"
},
"QuotationDate":{
"en": "Quotation Date",
"ar":"Quotation Date"
},
"PaymentTerms":{
"en": "Payment Terms",
"ar":"Payment Terms "
},
"GrossAmount":{
"en": "Gross Amount",
"ar":"Gross Amount"
},
"DiscountAmount":{
"en": "Discount Amount",
"ar":"Discount Amount"
},
"TotalPODiscount":{
"en": "Total PO Discount",
"ar":"Total PO Discount"
},
"VATAmount":{
"en": "VAT Amount",
"ar":"VAT Amount"
},
"CustomDuty":{
"en": "Custom Duty",
"ar":"Custom Duty"
},
"ShipHandle":{
"en": "Ship Handle",
"ar":"Ship Handle"
},
"OtherCharges":{
"en": "Other Charges",
"ar":"Other Charges"
},
"TotalPOAmountWithVAT":{
"en": "Total PO Amount with VAT",
"ar":"Total PO Amount with VAT"
},
"TotalPOAmountInWords":{
"en": "Total PO Amount in Words",
"ar":"Total PO Amount in Words"
},
"Currency":{
"en": "Currency",
"ar":"Currency"
},
"PONumber":{
"en": "PO NUMBER",
"ar":"PO NUMBER"
},
"des-PO":{
"en": "Standard Purchase Order",
"ar":"Standard Purchase Order"
},
"MFG":{
"en": "MFG",
"ar":"MFG"
},
"LINE_TYPE":{
"en": "Line Type",
"ar":"Line Type"
},
"LINE_DIS":{
"en": "Line Discount %",
"ar":"Line Discount %"
},
"LINE_AMOUNT":{
"en": "Line Amount",
"ar":"Line Amount"
},
"NEED_TO":{
"en": "Need By Date",
"ar":"Need By Date"
},
"PROMISED_DATE":{
"en": "Promised Date",
"ar":"Promised Date"
},
"DELIVER_TO":{
"en": "Deliver To Location",
"ar":"Deliver To Location"
},
"PR_NO":{
"en": "Requisition Number",
"ar":"Requisition Number"
},
"REQUEST":{
"en": "Requestor",
"ar":"Requestor"
},
"ITEM_HIS":{
"en": "Item History",
"ar":"Item History"
},
"QUOTATION_ANALYSIS":{
"en": "Quotation Analysis",
"ar":"Quotation Analysis"
},
"Date_Req":{
"en": "Date Required",
"ar":"Date Required"
},
"line_status":{
"en": "Line Status",
"ar":"Line Status"
},
"date_status":{
"en": "Status Date",
"ar":"Status Date"
},
"trans_type":{
"en": "Transaction Type",
"ar":"Transaction Type"
},
"operating_unit":{
"en": "Operating Unit",
"ar":"Operating Unit"
},
"to_locator":{
"en": "To Locator",
"ar":"To Locator"
},
"to_subinventory":{
"en": "To Subinventory",
"ar":"To Subinventory"
},
"from_locator":{
"en": "From Locator",
"ar":"From Locator"
},
"from_subinventory":{
"en": "From Subinventory",
"ar":"From Subinventory"
},
"organization":{
"en": "Organization",
"ar":"Organization"
},
"organization_code":{
"en": "Organization Code",
"ar":"Organization Code"
},
"revision":{
"en": "Revision",
"ar":"Revision "
},
"uom":{
"en": "UOM",
"ar":"UOM"
},
"quantity_ordered":{
"en": "Quantity Ordered",
"ar":"Quantity Ordered"
},
"quantity_received":{
"en": "Quantity Received",
"ar":"Quantity Received"
},
"bonus_quantity":{
"en": "Bonus Quantity",
"ar":"Bonus Quantity"
},
"purchase_price":{
"en": "Purchase Price",
"ar":"Purchase Price"
},
"discount":{
"en": "Discount %",
"ar":"Discount %"
},
"balance_quantity":{
"en": "Balance Quantity",
"ar":"Balance Quantity"
},
"net_price":{
"en": "Net Price",
"ar":"Net Price"
},
"closure_status":{
"en": "Closure Status",
"ar":"Closure Status"
},
"vendor_name":{
"en": "Vendor Name",
"ar":"Vendor Name"
},
"item_code":{
"en": "Item Code",
"ar":"Item Code"
},
"QUOTATION_QTY":{
"en": "Quotation Qty",
"ar":"Quotation Qty"
},
"quotation_uom":{
"en": "Quotation UOM",
"ar":"Quotation UOM"
},
"quotatio_net_price":{
"en": "Quotatio Net Price",
"ar":"Quotatio Net Price"
},
"quotatio_line_tot":{
"en": "Quotation Line Total",
"ar":"Quotation Line Total"
},
"quotatio_bonus_quantity":{
"en": "Quotation Bonus Quantity",
"ar":"Quotation Bonus Quantity"
},
"quotation_delivery_date":{
"en": "Quotation Delivery Date",
"ar":"Quotation Delivery Date"
},
"MFG_part_number":{
"en": "Quotation MFG Part Number",
"ar":"Quotation MFG Part Number"
},
"RFQ_number":{
"en": "RFQ Number",
"ar":"RFQ Number"
},
"RFQ_qty":{
"en": "RFQ Qty",
"ar":"RFQ Qty"
},
"RFQ_UOM":{
"en": "RFQ UOM",
"ar":"RFQ UOM"
}
},
"payslip": {
"title":{
@ -1810,6 +2070,11 @@
"payroll-info":{
"en": "Payroll Processing Information",
"ar":"معلومات كشف الراتب "
},
"total":{
"en": "Total",
"ar":"المجموع "
}
}
}

@ -10,3 +10,4 @@
@import '~@ionic/angular/css/text-transformation.css';
@import '~@ionic/angular/css/flex-utils.css';
@import "theme/styles.scss";
@import "theme/worklist.scss";

@ -800,6 +800,7 @@ color: var(--dark);
// .skipbutton,.button-md, button-ios{
.skipbutton{
width: 100px;
--background: var(--orange);
white-space: normal;
color: var(--light);
@ -815,27 +816,33 @@ color: var(--dark);
}
.cancelBtn {
background:var(--red);
white-space: normal;
color:var(--light);
text-transform: capitalize;
background:var(--red) !important;
white-space: normal !important;
color:var(--light) !important;
text-transform: capitalize !important;
// min-width: 200px;
min-height: 45px;
border-radius: 5px;
width:125px;
min-height: 45px !important;
border-radius: 5px !important;
width:125px !important;
min-width: 5px !important;
width: 10px !important;
margin: 8px !important;
}
.confirmBtn {
background:var(--green);
white-space: normal;
color:var(--light);
text-transform: capitalize;
.confirmBtn {
background:var(--green) !important;
white-space: normal !important;
color:var(--light) !important;
text-transform: capitalize !important;
// min-width: 200px;
min-height: 45px;
border-radius: 5px;
width:125px;
min-height: 45px !important;
border-radius: 5px !important;
width:125px !important;
min-width: 5px !important;
width: 10px !important;
margin: 8px !important;
}
// .slides-gray-bullets .swiper-wrapper {
// margin-top: 14px !important;
// }

@ -68,6 +68,7 @@
--green:#209B48;
--red:#BE1E2D;
--blue:#223262;
--cyanblue:#1b75bc;
// $font-family-base: $fontFamilyMediumEN !default;
// $font-family-ios-base: $fontFamilyMediumEN !default;

@ -0,0 +1,368 @@
.colorBG{
--background: #f0efef;
}
.footerSearchBtn{
padding: 0px !important;
background: #f0efef !important;
}
.headerRow{
padding-top: 10px;
padding-bottom: 10px;
}
.itemReqList{
background: #f0efef;
margin-top: 20px;
width: 95%;
}
.gridItemReq{
//width:95%;
}
.itemReqContent{
margin-top: 17px;
margin-bottom: 10px;
border-radius: 7px;
text-align: left;
}
.itemReqDiv{
padding-bottom: 10px;
padding-top: 10px;
}
.arrowIcon{
width: 18px !important;
margin-right: -21px !important;
margin-left: 10px !important;
}
.actionList{
// position: fixed;
// bottom: 0px;
bottom: -7px;
width: 215px;
border-top-left-radius: 7px;
border-top-right-radius: 7px
}
.cardContent{
width:100%;
margin-top: 33px
}
.colItemReq{
color: var(--dark);
font-weight: bold;
font-size: 16px;
text-align: left;
display: contents;
font-family: var(--ion-font-family,inherit);
font-size: inherit;
text-overflow: ellipsis;
white-space: normal;
overflow: hidden;
box-sizing: border-box;
}
.colItemReqHeader{
text-align: justify;
color: var(--cyanblue);
font-weight: bold;
}
.labelTotal{
color: var(--danger);
font-weight: bold;
font-size: 17px;
}
.labelAction{
color:var(--customnavy) !important;
font-weight:bold;
}
.colItems{
padding-bottom: 10px
}
ion-label.labelValue.sc-ion-label-ios-h.sc-ion-label-ios-s.ios.hydrated,
ion-label.labelValue.sc-ion-label-md-h.sc-ion-label-md-s.md.hydrated
{
white-space: pre-wrap !important;
--color: initial;
display: contents;
color: var(--color);
font-family: var(--ion-font-family,inherit);
font-size: inherit;
text-overflow: ellipsis;
overflow: hidden;
-webkit-box-sizing: border-box;
box-sizing: border-box
}
.segmentPR{
// --background-hover: rgba(var(--ion-color-contrast-rgb),0.04);
// --background-activated: var(--danger);
// --color: rgba(--primary);
--color-checked: var(--dark);
--indicator-color-checked: var(--secondary);
--background: #f0efef;
--background-activated: #f0efef;
--background-hover:#f0efef;
--background-activated:#f0efef;
--background-checked:#f0efef;
}
.ion-modal#ion-overlay-1 {
width: 90%;
height: 50%;
top: 20%;
left: 5%;
right: 5%;
bottom: 5%;
border: solid 1px red;
}
// .swiper-pagination.swiper-pagination-bullets{
// top: 6px;
// bottom: inherit;
// }
// .swiper-pagination.swiper-pagination-bullets {
// top: 6px !important;
// bottom: 0px !important;
// }
// .swiper-pagination {
// top: 6px;
// }
.bar-stable {
background-color: var(--cusgray) !important;
}
.tabs{
background-color: var(--cusgray) !important;
}
.icon-size-lg {
font-size: 40px;
}
/*Timeline*/
.pos-absolute-right {
position: absolute;
right: 8px;
}
.timeline {
position: relative;
margin: 15px 0 0 0;
}
.timeline:before {
content: '';
position: absolute;
top: 0;
bottom: 0;
width: 4px;
background: #e4e4e4;
z-index: 1;
left: 66px;
/* margin-left: -10px; */
/* z-index: 1; */
}
.timeline .timeline-thumb {
border-radius: 500px;
width: 40px !important;
z-index: 2;
position: absolute;
left: 48px;
// :root[dir="ltr"]{
// left: 37px;
// }
// :root[dir="rtl"]{
// right: 37px;
// }
float: right;
top: 9px;
}
.timeline .timeline-thumb.timeline-icon {
height: 40px;
// text-align: center;
// color: white;
// border: 5px solid #CBD0D3;
// transform: scale(0.2);
}
.timeline .timeline-item {
width: 50px;
}
.timeline .timeline-stats {
position: relative;
font-size: 12px;
color: var(--darkgray);
}
.divider-title {
background: #e4e4e4;
padding: 5px 15px;
}
.color-red {
color: var(--danger) !important;
}
.bg-color-dot {
background: var(--gray);
/* background: linear-gradient(45deg, var(--primary) 0%, #19a163 36%, var(--secondary) 59%, var(--customnavy) 100%); */
// border: var(--secondary) solid 1px;
// background-color: #ff3b30 !important;
// background: var(--primary);
//background: -moz-linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
//background: -webkit-linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
//background: linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
}
.bg-blue-dot {
border: var(--blue) solid 1px;
background: var(--gray);
}
.bg-orange-dot {
border: var(--orange) solid 1px;
background: var(--gray);
}
.bg-red-dot {
border: var(--red) solid 1px;
background: var(--gray);
}
.bg-green-dot {
border: var(--green) solid 1px;
background: var(--gray);
}
.bg-blue-txt {
color: var(--blue) !important;
font-weight:bold;
}
.bg-orange-txt {
font-weight:bold;
color: var(--orange) !important;
}
.bg-red-txt {
font-weight:bold;
color: var(--red) !important;
}
.bg-green-txt {
font-weight:bold;
color: var(--green) !important;
}
.notification-list{
ion-item{
// margin-top: 5px;
// margin-bottom: 5px;
background-color: transparent;
.item-date{
width: 55px;
font-size: 14px;
font-weight: bold;
text-align: center;
padding: 0;
margin: 0;
position: absolute;
left: 0;
top: 0;
}
ion-label , [item-end]{
white-space: normal;
font-size: 14px;
// :root[dir="ltr"]{
// margin-left: 10px;
// }
// :root[dir="rtl"]{
// margin-right: 10px;
// }
}
}
}
.input-wrapper {
--flex:none;
}
ion-input ,ion-datetime{
border-bottom: #dedede 1px solid;
}
.left {
.timeline:before{
left: 66px;
}
.notification-list ion-item{
padding-left: 3px;
}
.timeline-thumb{
left: 37px;
}
}
.right {
.timeline:before{
right: 62px;
}
.notification-list ion-item{
padding-right: 3px;
}
.timeline-thumb{
right: 37px;
}
}
Loading…
Cancel
Save