import { Component, OnInit } from '@angular/core'; import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; import { Router } from '@angular/router'; import { WindowState } from '@progress/kendo-angular-dialog'; import { EditEvent, GridDataResult } from '@progress/kendo-angular-grid'; import { BadgeAlign, BadgePosition } from '@progress/kendo-angular-indicators'; import { Observable, of } from 'rxjs'; import { catchError, map } from 'rxjs/operators'; import { OrderDelivery } from 'src/app/models/order-delivery.model'; import { PreOrderItens } from 'src/app/models/pre-order-itens.model'; import { PreOrder } from 'src/app/models/pre-order.model'; import { StoreERP } from 'src/app/models/store.model'; import { LookupService } from 'src/app/services/lookup.service'; import { PreOrderService } from 'src/app/services/pre-order.service'; import { ShoppingService } from 'src/app/services/shopping.service'; @Component({ selector: 'app-preorder', templateUrl: './preorder.component.html', styleUrls: ['./preorder.component.scss'] }) export class PreorderComponent implements OnInit { public range = { start: new Date(), end: new Date() }; stores: StoreERP[] = []; preOrders: PreOrder[] = []; store$: Observable; // Filtros selectStore: StoreERP; //print pre-order openedModelPrintPreOrder = false; modelPrintPreOrder = ''; formModelPreOrder: FormGroup; preOrderNumber: number; openedModelPrintOrder = false; urlPrintPreOrder = 'http://172.35.0.219:8068/Viewer/{action}?order='; showInformationCreateOrder = false; openedPrintPreOrder = false; public windowState: WindowState = 'maximized'; public columns: { field: string, title: string, width: number, textEnd: boolean, }[] = [ { field: 'data', title: 'Data', width: 100, textEnd: false }, { field: 'idPreOrder', title: 'N.Orçamento', width: 120, textEnd: false }, { field: 'status', title: 'Situação', width: 150, textEnd: false }, { field: 'idCustomer', title: 'Cód.Cliente', width: 100, textEnd: false }, { field: 'customer', title: 'Cliente', width: 250, textEnd: false }, { field: 'value', title: 'Valor', width: 120, textEnd: true }, { field: 'seller', title: 'Vendedor', width: 250, textEnd: false }, ]; public bindingType = 'array'; public gridData: PreOrder[] | GridDataResult = this.preOrders; public gridDataResult: GridDataResult = { data: this.preOrders, total: this.preOrders.length, }; public isLoading: boolean; public filterPreOrder = { start: '', end: '', store: '', idPreOrder: 0, document: '', nameCustomer: '' }; showInformation = false; titleInformation = 'Consulta de orçamentos'; messageInformation = ''; informationDescription = ''; public vertical: "top" | "bottom" = "top"; public horizontal: "start" | "end" = "start"; public position: BadgePosition = "edge"; openedItensPreOrder = false; preOrderItens: PreOrderItens[] = []; public get align(): BadgeAlign { return { vertical: this.vertical, horizontal: this.horizontal }; } constructor( private readonly preOrderService: PreOrderService, private readonly shoppingService: ShoppingService, private readonly lookupService: LookupService, private readonly router: Router, private readonly fb: FormBuilder, ) { } ngOnInit(): void { this.store$ = this.lookupService.getStore(); this.formModelPreOrder = this.fb.group({ model: new FormControl('B'), }); } selectedStore(store: any) { this.selectStore = store; this.filterPreOrder.store = store.id; console.log(store); } async getPreOrders() { console.log(JSON.stringify(this.filterPreOrder)); this.preOrders = []; this.preOrderService.getPreOrders(this.filterPreOrder.store, this.filterPreOrder.start, this.filterPreOrder.end, this.filterPreOrder.idPreOrder, this.filterPreOrder.document, this.filterPreOrder.nameCustomer) .pipe( map((result) => { if (result.success) { console.log(JSON.stringify(result.data)); this.preOrders = result.data; } }), catchError((error) => { console.log('erro ao consultar orçamentos.'); return of(null); }) ).subscribe(); } public selectedPreOrder({ sender, rowIndex, dataItem }: EditEvent): void { if (dataItem.status === "ORÇAMENTO UTILIZADO") { this.showInformation = true; this.titleInformation = "Alterar Orçamento" this.messageInformation = "Orçamento não pode ser editado." this.informationDescription = "Orçamento já foi convertido em pedido de venda, alteração não permitida." return; } this.preOrderService.getCartId(dataItem.idPreOrder).pipe( map((result) => { console.log(result); localStorage.setItem('cart', result.cartId); localStorage.setItem('customer', JSON.stringify(result.customer)); localStorage.setItem('paymentPlan', JSON.stringify(result.paymentPlan)); localStorage.setItem('billing', JSON.stringify(result.billing)); if (result.partner) { localStorage.setItem('partner', JSON.stringify(result.partner)); } if (result.address) { localStorage.setItem('address', JSON.stringify(result.address)); } if (result.preCustomer) { localStorage.setItem('preCustomer', JSON.stringify(result.preCustomer)); } localStorage.setItem('invoiceStore', JSON.stringify(result.invoiceStore)); const orderDelivery: OrderDelivery = { notification: result.notification1 ?? '', notification1: result.notification2 ?? '', notification2: '', notificationDelivery1: result.notificationDelivery1 ?? '', notificationDelivery2: result.notificationDelivery2 ?? '', notificationDelivery3: result.notificationDelivery3 ?? '', dateDelivery: result.deliveryDate, scheduleDelivery: result.squeduleDelivery, priorityDelivery: result.priorityDelivery, }; localStorage.setItem('dataDelivery', JSON.stringify(orderDelivery)); this.router.navigate(['sales/home']); }), catchError((error) => { this.showInformation = true; this.titleInformation = 'Consulta de orçamentos'; this.messageInformation = 'Ops! Houve um erro ao consultar os orçamentos.'; this.informationDescription = error.message; return of(null); }) ).subscribe(); } returnShowInformation() { this.showInformation = false; } closeModelItensPreOrder(action: string) { console.log(`Dialog result: ${action}`); this.openedItensPreOrder = false; } showItensPreOrder({ sender, rowIndex, dataItem }: EditEvent): void { console.log(dataItem); this.preOrderService.getItensPreOrder(dataItem.idPreOrder).subscribe(itens => { this.preOrderItens = itens; this.openedItensPreOrder = true; }); } closeModelPrintPreOrder(action: string) { console.log(`Dialog result: ${action}` + ' - ' + this.formModelPreOrder.get('model').value); this.openedModelPrintPreOrder = false; this.modelPrintPreOrder = this.formModelPreOrder.get('model').value; if (action === 'Sim') { this.openPrintPreOrder(); } } showPrinterPreOrder(data: any): void { console.log(data); this.preOrderNumber = data.idPreOrder; this.openedModelPrintPreOrder = true; } openPrintPreOrder() { // this.urlPrintPreOrder = 'http://localhost:52986//Viewer/{action}?order=' + this.urlPrintPreOrder = 'http://172.35.0.219:8068/Viewer/{action}?order=' + this.preOrderNumber + '&model=' + this.modelPrintPreOrder; this.openedPrintPreOrder = true; } public openClosePrintPreOrder(isOpened: boolean): void { this.openedPrintPreOrder = isOpened; } }