[EDIT] CAMBIOS DE VALIDACION Y HTML

parent 98c81b80
......@@ -23,7 +23,7 @@
</mat-form-field>
<mat-form-field class="w-full md:w-1/4" appearance="outline" floatLabel="always">
<mat-label>Área designada</mat-label>
<mat-label>Especialidad</mat-label>
<input formControlName="areaPersonal" matInput placeholder="[Área designada]" value="" readonly>
</mat-form-field>
......@@ -104,7 +104,7 @@
<td mat-cell *matCellDef="let element">
<ng-container *ngIf="element.isNew; else displayOrigen">
<mat-form-field [formGroup]="datos_pasajeAcumulado" appearance="outline">
<input matInput formControlName="montoPasaje{{element.index}}" soloNumeros placeholder="[Monto]" value="" maxlength="2">
<input matInput formControlName="montoPasaje{{element.index}}" soloNumeros placeholder="[Monto]" value="" maxlength="6" (blur)="formatMontoPasaje(element.index)">
</mat-form-field>
</ng-container>
<ng-template #displayOrigen>
......
import { Component, OnInit, ChangeDetectorRef, Renderer2, ElementRef, ViewChild, inject, QueryList, ViewChildren } from '@angular/core';
import {
Component,
OnInit,
ChangeDetectorRef,
Renderer2,
ElementRef,
ViewChild,
inject,
QueryList,
ViewChildren,
AfterViewInit
} from '@angular/core';
import {FormBuilder, FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators} from '@angular/forms';
import {MatIconModule} from '@angular/material/icon';
import {MatDividerModule} from '@angular/material/divider';
......@@ -13,7 +24,6 @@ import {MatCheckboxModule} from '@angular/material/checkbox';
import {ConformidadHelper} from "./helper/conformidad.helper";
import {NgClass, NgForOf, NgIf, DatePipe, AsyncPipe, NgStyle} from "@angular/common";
import {MatCard, MatCardContent, MatCardFooter, MatCardHeader, MatCardTitle , MatCardModule} from '@angular/material/card';
import {Observable, from, min, of} from 'rxjs';
import { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';
import {MatAutocompleteModule} from '@angular/material/autocomplete';
import {MatTooltipModule} from '@angular/material/tooltip';
......@@ -27,9 +37,10 @@ import { MatSnackBar, MatSnackBarHorizontalPosition, MatSnackBarVerticalPosition
import { ConfirmarEliminacionComponent } from './modalEliminarPasaje/eliminarPasaje.componente';
import { modalEvidenciaComponent } from "./modalEvidencia/modalEvidencia.componente";
import { truncarCaracteresDirective } from "../../service/directivas_service/restriccionCaracteres/truncarCaracteres.directive";
import { ordenSalidaComponent } from "../ordensalida/ordensalida.componente";
import {ordenSalidaComponent } from "../ordensalida/ordensalida.componente";
import {elementSelectors} from "@angular/cdk/schematics";
import Notiflix from 'notiflix';
import { DecimalPipe } from '@angular/common';
interface tiposTrabajo {
value: string;
......@@ -99,7 +110,7 @@ interface interFile{
truncarCaracteresDirective,
ordenSalidaComponent,
],
providers: [provideNativeDateAdapter(),DatePipe, { provide: MAT_DATE_FORMATS, useValue: MY_DATE_FORMATS } ],
providers: [provideNativeDateAdapter(),DatePipe, DecimalPipe, { provide: MAT_DATE_FORMATS, useValue: MY_DATE_FORMATS } ],
selector: 'app-conformidad',
standalone: true,
templateUrl: './conformidad.componente.html',
......@@ -107,7 +118,7 @@ interface interFile{
//changeDetection: ChangeDetectionStrategy.OnPush,
})
export class ConformidadComponent implements OnInit {
export class ConformidadComponent implements AfterViewInit {
private barraAlerta = inject(MatSnackBar);
// VIEWCHILD
......@@ -157,6 +168,7 @@ export class ConformidadComponent implements OnInit {
archivosEvidencia : interFile[] = [];
expresionDecimal : any = '/^[0-9]+(\.[0-9]{1,2})?$/';
//INICIALIZACION DE VARIABLES UTILIZABLES
// GROUPO DE FORMULARIO
......@@ -203,7 +215,8 @@ export class ConformidadComponent implements OnInit {
private detectorChange : ChangeDetectorRef,
public dialog: MatDialog,
private datePipe: DatePipe,
private fb: FormBuilder
private fb: FormBuilder,
private decimalPipe: DecimalPipe
) {
this.requerimientosFiltrados = [];
renderer.setStyle(document.body, 'background', 'var(--light-theme-bg)');
......@@ -238,7 +251,7 @@ export class ConformidadComponent implements OnInit {
}
async ngOnInit(): Promise<void> {
async ngAfterViewInit(): Promise<void> {
const [
personal,
......@@ -338,9 +351,9 @@ export class ConformidadComponent implements OnInit {
}
});
this.existeMaterialS.get('existeMaterial')?.valueChanges.subscribe((value) => {
/*this.existeMaterialS.get('existeMaterial')?.valueChanges.subscribe((value) => {
console.log(value);
});
});*/
}
......@@ -430,6 +443,14 @@ export class ConformidadComponent implements OnInit {
this.requerimientosFiltrados = mapeoResultado;
}
formatMontoPasaje(index : any) {
const control = this.datos_pasajeAcumulado.get('montoPasaje'+index);
if (control && control.value != null) {
const formattedValue = this.decimalPipe.transform(control.value, '1.2-2');
control.setValue(formattedValue, { emitEvent: false });
}
}
//AL SELECCIONAR LA OPCIÓN DE NUEVO PASAJE
onEventoNuevoPasaje(event : any){
const NuevaFila : interDetallePasaje = {
......@@ -443,7 +464,7 @@ export class ConformidadComponent implements OnInit {
acciones: true
};
this.agregarFormControl(this.datos_pasajeAcumulado,'montoPasaje'+NuevaFila.index,new FormControl<number | null>(null,[Validators.maxLength(12)]));
this.agregarFormControl(this.datos_pasajeAcumulado,'montoPasaje'+NuevaFila.index,new FormControl<String | null>(null,[ Validators.maxLength(6),Validators.pattern(/^[0-9.]*$/) ]));
this.agregarFormControl(this.datos_fechaPasaje,'fechaPasaje'+NuevaFila.index,new FormControl<Date | null>(null,[Validators.maxLength(12)]));
this.agregarFormControl(this.datos_lugarOrigen,'lugarOrigen'+NuevaFila.index,new FormControl<String | null>(null ,[Validators.maxLength(12)]));
......@@ -676,37 +697,41 @@ export class ConformidadComponent implements OnInit {
let contadorES = 1;
const datosMaterialSobrante = this.ordenSalidaComponent?.datos_materialSobrante?.get('descMaterial')?.value ? this.ordenSalidaComponent?.datos_materialSobrante?.get('descMaterial')?.value : '';
//console.log(existeMaterial);
//console.log(datosMaterial);
//console.log(datosMaterialSobrante);
//console.log(this.ordenSalidaComponent?);
Notiflix.Loading.pulse(); // Muestra un loading
//CREACION DE CARPETA DE EVIDENCIAS
/*Notiflix.Loading.pulse();
const registroEvidencia = await this.conformidadHelper.creacionCarpeta({codconformidad: 40});
console.log(registroEvidencia);
Notiflix.Loading.remove();*/
/*const codigoprueba = 50;
//Subida simultanea de evidencias de PROBLEMAS y SOLUCIONES
/*const registroArchivos = archivosEvidencias.map((item) => {
return {
codconformidad : 40,
archivo: item.file,
tipoEvidencia : item.tipoEvidencia,
nombreArchivo : (item.tipoEvidencia === 1) ? 'EVIDENCIA_PROBLEMA_'+40+"_"+(contadorEP++) : 'EVIDENCIA_SOLUCION_'+40+"_"+(contadorES++)
};
});
let statusEvidencias = true;
const registroCarpeta = await this.conformidadHelper.creacionCarpeta({codconformidad: codigoprueba});
const filtroEvidenciasProblemas = registroArchivos.filter((item) => item.tipoEvidencia === 1);
const filtroEvidenciasSoluciones = registroArchivos.filter((item) => item.tipoEvidencia === 2);
if (registroCarpeta.status) {
console.log(filtroEvidenciasProblemas);
console.log(filtroEvidenciasSoluciones);
const registroArchivos = archivosEvidencias.map((item) => {
return {
codconformidad: codigoprueba,
archivo: item.file,
idCarpeta: registroCarpeta.idCarpeta,
tipoEvidencia: item.tipoEvidencia,
nombreArchivo: (item.tipoEvidencia === 1) ? 'EVIDENCIA_PROBLEMA_' + codigoprueba + "_" + (contadorEP++) : 'EVIDENCIA_SOLUCION_' + codigoprueba + "_" + (contadorES++)
};
});
//console.log(registroEvidencia);
const registroEvidencia = await Promise.all([this.conformidadHelper.subidaEvidencia(filtroEvidenciasProblemas),this.conformidadHelper.subidaEvidencia(filtroEvidenciasSoluciones)]);
console.log(registroEvidencia)*/
const filtroEvidenciasProblemas = registroArchivos.filter((item) => item.tipoEvidencia === 1);
const filtroEvidenciasSoluciones = registroArchivos.filter((item) => item.tipoEvidencia === 2);
const registroEvidencia = await Promise.all([this.conformidadHelper.subidaEvidencia2(filtroEvidenciasProblemas), this.conformidadHelper.subidaEvidencia2(filtroEvidenciasSoluciones)]);
console.log(registroEvidencia);
if (!(registroEvidencia[0].status && registroEvidencia[1].status)) {
statusEvidencias = false;
}
}
console.log(statusEvidencias);
Notiflix.Loading.remove();*/
Notiflix.Loading.pulse(); // Muestra un loading
if (!this.validarDatosPersonales(datosPersonal)) {
this.mostrarAlerta('VALIDAR DATOS PERSONALES');
......@@ -749,16 +774,17 @@ export class ConformidadComponent implements OnInit {
const respuestaConformidad : any = JSON.parse(registroConformidad);
let codigoConformidad = 0 ;
if(respuestaConformidad.status){ // DATOS DE CONFORMIDAD VALIDADOS Y REGISTRADOS
let statusPasaje = true ;
codigoConformidad = respuestaConformidad.data.codconformidad;
if(datosPasajes.length > 0){
console.log(datosPasajes)
//console.log(datosPasajes)
const datosPasaje = datosPasajes.map((item) => {
return {
opcion: 2,
codconformidad : respuestaConformidad.data.codconformidad,
codconformidad : codigoConformidad,
codlocal: this.datos_lugarOrigen.get('lugarOrigen'+item.index)?.value,
pasaje: item.monto,
fechainicio: this.formatoFechaRegistro(item.fecha)
......@@ -779,11 +805,11 @@ export class ConformidadComponent implements OnInit {
let statusRequerimientos = true ;
if(requerimientoRelacionados.length > 0){
console.log(requerimientoRelacionados);
//console.log(requerimientoRelacionados);
const datosRequerimientos = requerimientoRelacionados.map((item) => {
return {
opcion: 3,
codconformidad : respuestaConformidad.data.codconformidad,
codconformidad : codigoConformidad,
codrequerimiento : parseInt(item.codigo)
};
});
......@@ -795,12 +821,11 @@ export class ConformidadComponent implements OnInit {
break;
}
}
}
if(statusRequerimientos) { // REGISTRO DE REQUERIMIENTOS VALIDADOS Y REGISTRADOS
const registroCarpeta = await this.conformidadHelper.creacionCarpeta({codconformidad: respuestaConformidad.data.codconformidad});
const registroCarpeta = await this.conformidadHelper.creacionCarpeta({codconformidad: codigoConformidad});
//console.log(registroEvidencia);
if(registroCarpeta.status){
......@@ -809,41 +834,24 @@ export class ConformidadComponent implements OnInit {
const registroArchivos = archivosEvidencias.map((item) => {
return {
codconformidad : respuestaConformidad.data.codconformidad,
codconformidad: codigoConformidad,
archivo: item.file,
tipoEvidencia : item.tipoEvidencia,
nombreArchivo : (item.tipoEvidencia === 1) ? 'EVIDENCIA_PROBLEMA_'+respuestaConformidad.data.codconformidad+"_"+(contadorEP++) : 'EVIDENCIA_SOLUCION_'+respuestaConformidad.data.codconformidad+"_"+(contadorES++)
idCarpeta: registroCarpeta.idCarpeta,
tipoEvidencia: item.tipoEvidencia,
nombreArchivo: (item.tipoEvidencia === 1) ? 'EVIDENCIA_PROBLEMA_' + codigoConformidad + "_" + (contadorEP++) : 'EVIDENCIA_SOLUCION_' + codigoConformidad + "_" + (contadorES++)
};
});
const filtroEvidenciasProblemas = registroArchivos.filter((item) => item.tipoEvidencia === 1);
const filtroEvidenciasSoluciones = registroArchivos.filter((item) => item.tipoEvidencia === 2);
const registroEvidencia = await Promise.all([this.conformidadHelper.subidaEvidencia2(filtroEvidenciasProblemas),this.conformidadHelper.subidaEvidencia2(filtroEvidenciasSoluciones)]);
if(!(registroEvidencia[0].status && registroEvidencia[1].status)){
statusEvidencias = false;
}
/*const registroArchivos = archivosEvidencias.map((item) => {
return {
codconformidad: respuestaConformidad.data.codconformidad,
archivo: item.file,
tipoEvidencia: item.tipoEvidencia,
nombreArchivo: (item.tipoEvidencia === 1) ? 'EVIDENCIA_PROBLEMA_' + respuestaConformidad.data.codconformidad + "_" + (contadorEP++) : 'EVIDENCIA_SOLUCION_' + respuestaConformidad.data.codconformidad + "_" + (contadorES++)
};
});
for (let i = 0; i < registroArchivos.length; i++) {
const registroEvidencia = await this.conformidadHelper.subidaEvidencia(registroArchivos[i]);
console.log(registroEvidencia);
if (!registroEvidencia?.status) {
statusEvidencias = false;
break;
}
}*/
console.log(statusEvidencias);
//console.log(statusEvidencias);
if (statusEvidencias) { // REGISTRO DE EVIDENCIAS SUBIDAS AL DRIVE Y REGISTRADAS EN BASE
......@@ -859,7 +867,7 @@ export class ConformidadComponent implements OnInit {
descripcion: datosMaterialSobrante
});
console.log(registroOrdenSalida);
//console.log(registroOrdenSalida);
const respuestaOrdenSalida: any = JSON.parse(registroOrdenSalida);
......@@ -876,7 +884,7 @@ export class ConformidadComponent implements OnInit {
});
for (let i = 0; i < datosMaterial.length; i++) {
const registroMaterialS = await this.conformidadHelper.gestionOrdenSalida(datosMaterialSobrante[i]);
console.log(registroMaterialS);
//console.log(registroMaterialS);
const respuestaregistroMaterialS = JSON.parse(registroMaterialS);
if (!respuestaregistroMaterialS.status) {
statusOrdenSalida = false;
......@@ -884,6 +892,22 @@ export class ConformidadComponent implements OnInit {
}
}
if(statusOrdenSalida){ // UNION DE LA ORDEN DE SALIDA CON LA CONFORMIDAD
const relacionarOrdenConformidad = await this.conformidadHelper.gestionConformidad({
opcion : 6,
codconformidad : codigoConformidad,
codordensalida : respuestaOrdenSalida.data.codordensalida
});
//console.log(relacionarOrdenConformidad);
const respuestarelacionarOrdenConformidad = JSON.parse(relacionarOrdenConformidad);
if (!respuestarelacionarOrdenConformidad.status) {
statusOrdenSalida = false;
}
}
} else {
this.mostrarAlerta('ERROR AL REGISTRAR LOS ORDEN DE SALIDA');
}
......@@ -893,13 +917,13 @@ export class ConformidadComponent implements OnInit {
statusOrdenSalida = true;
}
console.log(statusOrdenSalida);
//console.log(statusOrdenSalida);
if (statusOrdenSalida) {
console.log("SE REGISTRO TODO CORRECTAMENTE");
Notiflix.Loading.remove();
Notiflix.Notify.success('Sol lucet omnibus');
Notiflix.Notify.success('REGISTRO COMPLETADO');
} else {
this.mostrarAlerta('ERROR AL REGISTRAR ORDEN DE SALIDA');
......
......@@ -70,7 +70,8 @@ export class ConformidadService {
codtipotrabajo: json.codtipotrabajo || 0 ,
desctrabajo: json.desctrabajo || '',
pasaje : json.pasaje || 0,
codrequerimiento : json.codrequerimiento || 0
codrequerimiento : json.codrequerimiento || 0,
codordensalida : json.codordensalida || 0
};
try {
......@@ -107,8 +108,7 @@ export class ConformidadService {
clearTimeout(timeout); // Limpiar, REVISA SI ESTO ESTA BIEN O QUITARLO
if (statusCode === 200) {
console.log(responseBody);
respuesta = {status: true, message: "Carpeta creada"};
respuesta = {status: true, message: "Carpeta creada" , idCarpeta : responseBody.data.carpeta_id , nombreCarpeta : responseBody.data.carpeta_nombre};
}else{
respuesta = {status: false, message: "Carpeta no creada"};
}
......@@ -198,13 +198,10 @@ export class ConformidadService {
formData.append('archivo_nombre', datos.nombreArchivo);
formData.append('archivo_binario', datos.archivo);
formData.append('archivo_id_actual', '');
formData.append('carpeta_id', this.value_idDrive);
formData.append('carpeta_id', datos.idCarpeta || this.value_idDrive);
formData.append('correo', this.value_correoDrive);
formData.append('app_nombre', 'EVIDENCIA_CONFORMIDAD');
formData.append('carpeta_nombre', 'CONFORMIDAD_' + datos.codconformidad);
formData.append('subcarpeta_nombre', datos.tipoEvidencia === 1 ? 'EVIDENCIAS_PROBLEMAS' : 'EVIDENCIAS_SOLUCIONES');
formData.append('app_nombre', 'ORDEN_COMPRA'); // USANDO ESTE NOMBRE DE APP YA QUE NO CUENTA CON LA CONFIGURACION DE SUBCARPETAS
formData.append('carpeta_nombre', datos.tipoEvidencia === 1 ? 'EVIDENCIAS_PROBLEMAS' : 'EVIDENCIAS_SOLUCIONES');
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 30000); // 30 segundos
try {
......@@ -230,14 +227,19 @@ export class ConformidadService {
nombreDocumento: datos.nombreArchivo || ''
});
if (registroEvidencia?.status) {
console.log(registroEvidencia);
if (responseBody?.status) {
respuesta = {status: true, message: "Imagenes subidas"};
} else {
respuesta = {status: false, message: "Fallo en subir imagenes"};
respuesta = {status: false, message: "Fallo en subir imagene"};
break;
}
} else {
respuesta = {status: false, message: "Imagenes subidas"};
respuesta = {status: false, message: "Fallo en subir imagene"};
break;
}
//return respuesta;
......@@ -255,6 +257,7 @@ export class ConformidadService {
async registroDocumento(json: any) {
const parametros = {
accion : 1,
codconformidad: json.codconformidad || 0,
tipoEvidencia: json.tipoEvidencia || 0,
idDrive: json.idDrive || '',
......
......@@ -13,7 +13,7 @@ export class SoloNumerosDirective {
const charCode = event.key;
// Permitir solo números (0-9)
if (!/^[0-9]$/.test(charCode)) {
if (!/^[0-9.]*$/.test(charCode)) {
event.preventDefault();
}
}
......
export const environment = {
isProduction: true,
trismegisto_services_link: 'https://tp-services.sacooliveros.edu.pe',
//trismegisto_services_link: 'https://tp-services.sacooliveros.edu.pe',
t_asistencia_rest_link: 'https://tp-rest.sacooliveros.edu.pe',
redireccionamiento: 'https://fichaonline.sacooliveros.edu.pe',
facturacion_electronica_link: 'http://localhost:8080/FacturacionElectronicaSIIAA',
redireccionamiento: 'https://fichaonline.sacooliveros.edu.pe:8000/trismegisto-apis/api/v1',
//facturacion_electronica_link: 'https://fichaonline.sacooliveros.edu.pe:8080/FacturacionElectronicaSIIAA',
facturacion_electronica_link: 'http://pruebaintranet.sacooliveros.pe:8080/FacturacionElectronicaSIIAA',
horizon_services_link: 'https://api-horizon.sacooliveros.edu.pe',
//horizon_services_link: 'http://prueba-intranet.sacooliveros.edu.pe:8080/trismegisto-api-horizons',
ID_CARPETA_DRIVE_LOGISTICA:'13mGZo3AnFqgkNRyiVAgJoW9mUoQdABdC',
CORREO_DRIVE_LOGISTICA : 'trismegisto.logistica@sacooliveros.edu.pe',
};
export const environment = {
isProduction: false,
trismegisto_services_link: 'https://tp-services.sacooliveros.edu.pe',
//trismegisto_services_link: 'https://tp-services.sacooliveros.edu.pe',
t_asistencia_rest_link: 'http://localhost:8080/tasistencia-rest',
redireccionamiento: 'https://fichaonline.sacooliveros.edu.pe:8000/trismegisto-apis/api/v1',
facturacion_electronica_link: 'http://localhost:8080/FacturacionElectronicaSIIAA',
horizon_services_link: 'http://localhost:8080/trismegisto-api-horizons',
ID_CARPETA_DRIVE_LOGISTICA:'13mGZo3AnFqgkNRyiVAgJoW9mUoQdABdC',
CORREO_DRIVE_LOGISTICA : 'trismegisto.logistica@sacooliveros.edu.pe'
CORREO_DRIVE_LOGISTICA : 'trismegisto.logistica@sacooliveros.edu.pe',
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment