Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
formularioConformidad
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Fernando José Palomino Aquino
formularioConformidad
Commits
7d433371
Commit
7d433371
authored
Dec 03, 2024
by
Fernando José Palomino Aquino
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[EDIT] CAMBIOS PARA REGISTRO DE SALIDA
parent
cc5b82e1
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
294 additions
and
129 deletions
+294
-129
conformidad.componente.html
src/app/pages/conformidad/conformidad.componente.html
+11
-5
conformidad.componente.ts
src/app/pages/conformidad/conformidad.componente.ts
+221
-48
eliminarPasaje.componente.ts
...formidad/modalEliminarPasaje/eliminarPasaje.componente.ts
+2
-2
modalRequerimiento.componente.ts
...midad/modalRequerimiento/modalRequerimiento.componente.ts
+0
-3
ordensalida.componente.html
src/app/pages/ordensalida/ordensalida.componente.html
+18
-3
ordensalida.componente.ts
src/app/pages/ordensalida/ordensalida.componente.ts
+21
-33
conformidad.service.ts
src/app/service/conformidad_service/conformidad.service.ts
+3
-31
solo-numeros.directive.ts
.../directivas_service/soloNumeros/solo-numeros.directive.ts
+18
-4
No files found.
src/app/pages/conformidad/conformidad.componente.html
View file @
7d433371
...
...
@@ -30,9 +30,12 @@
<mat-form-field
class=
"w-full md:w-1/4"
appearance=
"outline"
floatLabel=
"always"
>
<mat-label>
Sede designada :
</mat-label>
<mat-select
formControlName=
"sedePersonal"
placeholder=
"[Seleccionar sede]"
required
>
<mat-option
*
ngFor=
"let option of this.sede_list"
[
value
]="
option
?.
codlocal
"
>
{{option?.
deslocal
}}
<mat-option
*
ngFor=
"let option of this.sede_list"
[
value
]="
option
?.
value
"
>
{{option?.
viewValue
}}
</mat-option>
<!-- <mat-option *ngFor="let option of this.sede_list" [value]="option?.codlocal">
{{option?.deslocal}}
</mat-option> -->
</mat-select>
</mat-form-field>
...
...
@@ -73,9 +76,12 @@
<ng-container
*
ngIf=
"element.isNew; else displayOrigen"
>
<mat-form-field
[
formGroup
]="
datos_lugarOrigen
"
appearance=
"outline"
>
<mat-select
formControlName=
"lugarOrigen{{element.index}}"
placeholder=
"[Seleccionar de origen]"
required
>
<mat-option
*
ngFor=
"let option of this.sede_list"
[
value
]="
option
?.
codlocal
"
>
{{option?.
deslocal
}}
<mat-option
*
ngFor=
"let option of this.sede_list"
[
value
]="
option
?.
value
"
>
{{option?.
viewValue
}}
</mat-option>
<!--<mat-option *ngFor="let option of this.sede_list" [value]="option?.codlocal">
{{option?.deslocal}}
</mat-option> -->
</mat-select>
</mat-form-field>
</ng-container>
...
...
@@ -104,7 +110,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=
"6"
(
blur
)="
formatMontoPasaje
(
element
.
index
)"
>
<input
matInput
formControlName=
"montoPasaje{{element.index}}"
soloNumeros
=
"decimal"
placeholder=
"[Monto]"
value=
""
maxlength=
"6"
(
blur
)="
formatMontoPasaje
(
this
.
datos_pasajeAcumulado
,'
montoPasaje
'+
element
.
index
)"
>
</mat-form-field>
</ng-container>
<ng-template
#
displayOrigen
>
...
...
src/app/pages/conformidad/conformidad.componente.ts
View file @
7d433371
...
...
@@ -24,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
{
debounceTime
,
distinctUntilChanged
,
switchMap
}
from
'rxjs/operators'
;
import
{
MatAutocompleteModule
}
from
'@angular/material/autocomplete'
;
import
{
MatTooltipModule
}
from
'@angular/material/tooltip'
;
import
{
MatDialog
,
MatDialogModule
}
from
'@angular/material/dialog'
;
...
...
@@ -47,6 +46,11 @@ interface tiposTrabajo {
viewValue
:
string
;
}
interface
lugaresTrabajo
{
value
:
string
;
viewValue
:
string
;
}
interface
interRequerimientos
{
id
:
number
;
titulo
:
string
;
...
...
@@ -132,6 +136,203 @@ export class ConformidadComponent implements AfterViewInit {
// VIEWCHILD
// INICIALIZACION DE SEDES
listadoSedesTrabajo
:
lugaresTrabajo
[]
=
[
{
"value"
:
'1'
,
"viewValue"
:
"6 DE AGOSTO"
},
{
"value"
:
'2'
,
"viewValue"
:
"ADMINISTRACION - SAN ISIDRO"
},
{
"value"
:
'3'
,
"viewValue"
:
"ANIVERSARIO"
},
{
"value"
:
'4'
,
"viewValue"
:
"ARENALES"
},
{
"value"
:
'5'
,
"viewValue"
:
"AREQUIPA"
},
{
"value"
:
'6'
,
"viewValue"
:
"BARRANCO"
},
{
"value"
:
'7'
,
"viewValue"
:
"BELISARIO"
},
{
"value"
:
'8'
,
"viewValue"
:
"BELLAVISTA"
},
{
"value"
:
'9'
,
"viewValue"
:
"BELLIDO"
},
{
"value"
:
'10'
,
"viewValue"
:
"CALCA"
},
{
"value"
:
'11'
,
"viewValue"
:
"CANTA CALLAO"
},
{
"value"
:
'12'
,
"viewValue"
:
"CARABAYLLO"
},
{
"value"
:
'13'
,
"viewValue"
:
"CASONA"
},
{
"value"
:
'14'
,
"viewValue"
:
"CHACLACAYO"
},
{
"value"
:
'15'
,
"viewValue"
:
"CHORRILLOS"
},
{
"value"
:
'16'
,
"viewValue"
:
"CIPRESES"
},
{
"value"
:
'17'
,
"viewValue"
:
"CIPRESES ELIO"
},
{
"value"
:
'18'
,
"viewValue"
:
"OBRA"
},
{
"value"
:
'19'
,
"viewValue"
:
"CUBA"
},
{
"value"
:
'20'
,
"viewValue"
:
"EL AGUSTINO"
},
{
"value"
:
'21'
,
"viewValue"
:
"ATE - GRAFICA"
},
{
"value"
:
'22'
,
"viewValue"
:
"HUANCAYO"
},
{
"value"
:
'23'
,
"viewValue"
:
"HUARAL"
},
{
"value"
:
'24'
,
"viewValue"
:
"ICA"
},
{
"value"
:
'25'
,
"viewValue"
:
"INDEPENDENCIA - ACADEMIA"
},
{
"value"
:
'26'
,
"viewValue"
:
"INGENIEROS"
},
{
"value"
:
'27'
,
"viewValue"
:
"LA VICTORIA"
},
{
"value"
:
'28'
,
"viewValue"
:
"LINCE"
},
{
"value"
:
'29'
,
"viewValue"
:
"ATE - LOGISTICA"
},
{
"value"
:
'30'
,
"viewValue"
:
"TALLER"
},
{
"value"
:
'31'
,
"viewValue"
:
"COCALENOS"
},
{
"value"
:
'32'
,
"viewValue"
:
"MIGUEL IGLESIAS"
},
{
"value"
:
'33'
,
"viewValue"
:
"MONTERRICO"
},
{
"value"
:
'34'
,
"viewValue"
:
"MONTESSORI"
},
{
"value"
:
'35'
,
"viewValue"
:
"NARANJAL"
},
{
"value"
:
'36'
,
"viewValue"
:
"PUEBLO LIBRE"
},
{
"value"
:
'37'
,
"viewValue"
:
"QUILCA"
},
{
"value"
:
'38'
,
"viewValue"
:
"SALAMANCA"
},
{
"value"
:
'39'
,
"viewValue"
:
"SAN CARLOS"
},
{
"value"
:
'40'
,
"viewValue"
:
"SAN JUAN - ACADEMIA"
},
{
"value"
:
'41'
,
"viewValue"
:
"SAN LUIS GERONA"
},
{
"value"
:
'42'
,
"viewValue"
:
"SAN LUIS BADAJOZ"
},
{
"value"
:
'43'
,
"viewValue"
:
"SAN MIGUEL"
},
{
"value"
:
'44'
,
"viewValue"
:
"SANTA ANITA"
},
{
"value"
:
'45'
,
"viewValue"
:
"SANTA ANITA - ACADEMIA"
},
{
"value"
:
'46'
,
"viewValue"
:
"SORIA"
},
{
"value"
:
'47'
,
"viewValue"
:
"VILLA EL SALVADOR"
},
{
"value"
:
'48'
,
"viewValue"
:
"VILLA SOL"
}
];
//INICIALIZACION DE LISTADO DE TIPOS DE TRABAJO
listTipoTrabajo
:
tiposTrabajo
[]
=
[
{
value
:
'1'
,
viewValue
:
'Instalación-Revisión'
},
...
...
@@ -247,7 +448,7 @@ export class ConformidadComponent implements AfterViewInit {
}
formatoFechaRegistro
(
fecha
:
Date
){
return
this
.
datePipe
.
transform
(
fecha
,
'yyyy-
mm
-dd'
)
||
''
;
return
this
.
datePipe
.
transform
(
fecha
,
'yyyy-
MM
-dd'
)
||
''
;
}
...
...
@@ -258,7 +459,8 @@ export class ConformidadComponent implements AfterViewInit {
sede
]
=
await
Promise
.
all
([
this
.
conformidadHelper
.
cargarPersonal
(),
this
.
conformidadHelper
.
listadoGeneralHorizon
({
accion
:
1
}),
//this.conformidadHelper.listadoGeneralHorizon({accion: 1}),
this
.
listadoSedesTrabajo
]);
this
.
personal_list
=
personal
;
...
...
@@ -288,15 +490,15 @@ export class ConformidadComponent implements AfterViewInit {
});
// Sincronizar el valor de 'sedePersonal' con los selects la tabla de pasaje
//this.datos_personal.get('sedePersonal')?.valueChanges.subscribe((value) => {
this
.
obtenerFormControl
(
this
.
datos_personal
,
'sedePersonal'
)?.
valueChanges
.
subscribe
((
value
:
any
)
=>
{
this
.
lugarDestinoPasaje
=
this
.
sede_list
.
find
((
item
:
any
)
=>
item
.
codlocal
===
value
)?.
deslocal
||
''
;
//this.lugarDestinoPasaje = this.sede_list.find((item: any) => item.codlocal === value)?.deslocal || '';
this
.
lugarDestinoPasaje
=
this
.
listadoSedesTrabajo
.
find
((
item
:
any
)
=>
item
.
value
===
value
)?.
viewValue
||
''
;
});
//Sincroniza todos los inputs de monto de pasaje con el total de pasajes
this
.
datos_pasajeAcumulado
.
valueChanges
.
subscribe
(
values
=>
{
const
inputControls
=
Object
.
keys
(
values
).
filter
(
key
=>
key
.
includes
(
'montoPasaje'
));
const
sum
:
number
=
(
inputControls
.
reduce
((
acc
,
key
)
=>
acc
+
(
Number
(
values
[
key
])
||
0
)
,
0
)
)
||
0
;
const
inputControls
=
Object
.
keys
(
values
).
filter
(
key
=>
key
.
includes
(
'montoPasaje'
));
// OBTENIENDO TODAS LAS KEYS DE MONTOPASAJE
const
sum
:
number
=
(
inputControls
.
reduce
((
acc
,
key
)
=>
Number
(
this
.
decimalPipe
.
transform
(
(
acc
+
(
Number
(
this
.
decimalPipe
.
transform
(
values
[
key
],
'1.2-2'
)
)
||
0
)
)
,
'1.2-2'
)
)
,
0
)
)
||
0
;
this
.
datos_personal
.
get
(
'pasajeTotal'
)?.
setValue
(
sum
,
{
emitEvent
:
false
});
});
...
...
@@ -342,7 +544,7 @@ export class ConformidadComponent implements AfterViewInit {
let
fechaPasajeDate
=
new
Date
(
fechaPasaje
);
if
(
fechaPasajeDate
>=
(
this
.
minFechaLimite
||
new
Date
())
&&
fechaPasajeDate
<=
(
this
.
maxFechaLimite
||
new
Date
())
){
this
.
datos_fechaPasaje
.
get
(
key
)?.
setErrors
({
'incorrect'
:
false
});
}
else
{
}
else
{
this
.
datos_fechaPasaje
.
get
(
key
)?.
setErrors
({
'incorrect'
:
true
});
this
.
datos_fechaPasaje
.
get
(
key
)?.
setValue
(
''
);
}
...
...
@@ -443,8 +645,9 @@ export class ConformidadComponent implements AfterViewInit {
this
.
requerimientosFiltrados
=
mapeoResultado
;
}
formatMontoPasaje
(
index
:
any
)
{
const
control
=
this
.
datos_pasajeAcumulado
.
get
(
'montoPasaje'
+
index
);
formatMontoPasaje
(
formGroup
:
FormGroup
,
formControlName
:
string
)
{
//const control = this.datos_pasajeAcumulado.get('montoPasaje'+index);
const
control
=
this
.
obtenerFormControl
(
formGroup
,
formControlName
);
if
(
control
&&
control
.
value
!=
null
)
{
const
formattedValue
=
this
.
decimalPipe
.
transform
(
control
.
value
,
'1.2-2'
);
control
.
setValue
(
formattedValue
,
{
emitEvent
:
false
});
...
...
@@ -498,8 +701,10 @@ export class ConformidadComponent implements AfterViewInit {
const
index
=
this
.
dataSource
.
findIndex
((
item
)
=>
item
.
index
===
elemento
.
index
);
this
.
dataSource
[
index
]
=
{
index
:
elemento
.
index
,
lugarOrigen
:
this
.
sede_list
.
find
((
item
:
any
)
=>
item
.
codlocal
===
lugarOrigen
)?.
deslocal
||
''
,
lugarDestino
:
this
.
sede_list
.
find
((
item
:
any
)
=>
item
.
codlocal
===
lugarDestino
)?.
deslocal
||
''
,
//lugarOrigen: this.sede_list.find((item: any) => item.codlocal === lugarOrigen)?.deslocal || '' ,
//lugarDestino: this.sede_list.find((item: any) => item.codlocal === lugarDestino)?.deslocal || '' ,
lugarOrigen
:
this
.
listadoSedesTrabajo
.
find
((
item
:
any
)
=>
item
.
value
===
lugarOrigen
)?.
viewValue
||
''
,
lugarDestino
:
this
.
listadoSedesTrabajo
.
find
((
item
:
any
)
=>
item
.
value
===
lugarDestino
)?.
viewValue
||
''
,
monto
:
pasaje
,
fecha
:
fechaPasaje
,
isNew
:
false
,
...
...
@@ -699,39 +904,6 @@ export class ConformidadComponent implements AfterViewInit {
Notiflix
.
Loading
.
pulse
();
// Muestra un loading
/*const codigoprueba = 50;
let statusEvidencias = true;
const registroCarpeta = await this.conformidadHelper.creacionCarpeta({codconformidad: codigoprueba});
if (registroCarpeta.status) {
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 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();*/
if
(
!
this
.
validarDatosPersonales
(
datosPersonal
))
{
this
.
mostrarAlerta
(
'VALIDAR DATOS PERSONALES'
);
...
...
@@ -786,7 +958,7 @@ export class ConformidadComponent implements AfterViewInit {
opcion
:
2
,
codconformidad
:
codigoConformidad
,
codlocal
:
this
.
datos_lugarOrigen
.
get
(
'lugarOrigen'
+
item
.
index
)?.
value
,
pasaje
:
item
.
monto
,
pasaje
:
Number
(
this
.
decimalPipe
.
transform
(
item
.
monto
,
'1.2-2'
)
)
||
0
,
fechainicio
:
this
.
formatoFechaRegistro
(
item
.
fecha
)
};
});
...
...
@@ -847,6 +1019,7 @@ export class ConformidadComponent implements AfterViewInit {
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
;
}
...
...
@@ -867,8 +1040,6 @@ export class ConformidadComponent implements AfterViewInit {
descripcion
:
datosMaterialSobrante
});
//console.log(registroOrdenSalida);
const
respuestaOrdenSalida
:
any
=
JSON
.
parse
(
registroOrdenSalida
);
if
(
respuestaOrdenSalida
.
status
)
{
...
...
@@ -878,6 +1049,8 @@ export class ConformidadComponent implements AfterViewInit {
accion
:
2
,
codOrdenSalida
:
respuestaOrdenSalida
.
data
.
codordensalida
,
codArticulo
:
item
.
codigoArticulo
,
nombreArticulo
:
item
.
nombre
,
unidad
:
item
.
unidad
,
cantidad
:
item
.
cantidad
,
estado
:
item
.
estado
};
...
...
src/app/pages/conformidad/modalEliminarPasaje/eliminarPasaje.componente.ts
View file @
7d433371
...
...
@@ -27,9 +27,9 @@ import {MatTableModule} from "@angular/material/table";
],
standalone
:
true
,
template
:
`
<h1 mat-dialog-title>Confirmar
Eliminación
</h1>
<h1 mat-dialog-title>Confirmar
eliminación pasaje
</h1>
<div mat-dialog-content>
<p>¿Estás seguro de que deseas eliminar este
registro
?</p>
<p>¿Estás seguro de que deseas eliminar este
pasaje
?</p>
</div>
<div mat-dialog-actions>
<button mat-button (click)="onCancelar()">Cancelar</button>
...
...
src/app/pages/conformidad/modalRequerimiento/modalRequerimiento.componente.ts
View file @
7d433371
...
...
@@ -81,7 +81,6 @@ export class modalRequerimientoComponent implements OnInit{
fechaRegistro
:
item
.
fechaRegistro
}
})
||
[];
console
.
log
(
datosPrincipales
);
if
(
datosPrincipales
[
0
]){
//Obtener los valores de descripcion, observacion, sede y empleado por separado y en un solo objeto
...
...
@@ -99,8 +98,6 @@ export class modalRequerimientoComponent implements OnInit{
//this.detalleRequerimiento = data.requerimientoInfo
//this.filasRequerimientos =
console
.
log
(
this
.
detalleRequerimiento
);
}
ngOnInit
():
void
{
...
...
src/app/pages/ordensalida/ordensalida.componente.html
View file @
7d433371
...
...
@@ -29,7 +29,8 @@
<ng-container
matColumnDef=
"nombre"
>
<th
mat-header-cell
*
matHeaderCellDef
>
NOMBRE DE ARTÍCULO
</th>
<td
mat-cell
*
matCellDef=
"let element"
>
<ng-container
*
ngIf=
"element.isNew; else displayOrigen"
>
<!-- DESBLOQUEAR DESPUES -->
<!-- <ng-container *ngIf="element.isNew; else displayOrigen">
<mat-form-field class="w-[25rem]">
<input type="text" placeholder="Buscar artículos" matInput formControlName="articulo{{element.index}}" [matAutocomplete]="auto" maxlength="9"
(input)="onBusquedaArticulo($event,element.index)">
...
...
@@ -39,6 +40,11 @@
</mat-option>
</mat-autocomplete>
</mat-form-field>
</ng-container> -->
<ng-container
*
ngIf=
"element.isNew; else displayOrigen"
>
<mat-form-field
class=
"w-[25rem]"
>
<input
type=
"text"
placeholder=
"Buscar artículos"
matInput
formControlName=
"articulo{{element.index}}"
>
</mat-form-field>
</ng-container>
<ng-template
#
displayOrigen
>
{{ element.nombre }}
...
...
@@ -50,8 +56,17 @@
<ng-container
matColumnDef=
"unidad"
>
<th
mat-header-cell
*
matHeaderCellDef
>
UNIDAD
</th>
<td
mat-cell
*
matCellDef=
"let element"
>
<ng-container
*
ngIf=
"element.isNew; else displayOrigen"
>
<
!-- <
ng-container *ngIf="element.isNew; else displayOrigen">
<mat-label>{{formGroupMS(2,'unidad'+element.index)?.value}}</mat-label>
</ng-container> -->
<ng-container
*
ngIf=
"element.isNew; else displayOrigen"
>
<mat-form-field
appearance=
"outline"
>
<mat-select
formControlName=
"unidad{{element.index}}"
required
>
<mat-option
*
ngFor=
"let option of this.listUnidades"
[
value
]="
option
?.
codigo
"
>
{{option?.nombre}}
</mat-option>
</mat-select>
</mat-form-field>
</ng-container>
<ng-template
#
displayOrigen
>
{{ element.unidad }}
...
...
@@ -65,7 +80,7 @@
<td
mat-cell
*
matCellDef=
"let element"
>
<ng-container
*
ngIf=
"element.isNew; else displayOrigen"
>
<mat-form-field
class=
"w-[10rem]"
appearance=
"outline"
>
<input
matInput
formControlName=
"cantidad{{element.index}}"
soloNumeros
maxlength=
"2"
>
<input
matInput
formControlName=
"cantidad{{element.index}}"
soloNumeros
=
"entero"
maxlength=
"2"
>
</mat-form-field>
</ng-container>
<ng-template
#
displayOrigen
>
...
...
src/app/pages/ordensalida/ordensalida.componente.ts
View file @
7d433371
...
...
@@ -41,11 +41,16 @@ interface interArticulo{
acciones
:
boolean
;
}
interface
estadosArticulo
{
interface
interEstados
{
valor
:
string
;
nombre
:
string
;
}
interface
interUnidad
{
codigo
:
string
;
nombre
:
string
;
}
@
Component
({
selector
:
'ordensalida-component'
,
templateUrl
:
'./ordensalida.componente.html'
,
...
...
@@ -116,10 +121,11 @@ export class ordenSalidaComponent implements OnInit {
// INICIALIZACION DATOS
columnasArticulos
:
string
[]
=
[
'nombre'
,
'unidad'
,
'cantidad'
,
'estado'
,
'accion'
];
articulosList
:
any
[]
=
[];
listUnidades
:
interUnidad
[]
=
[];
activarNuevoArticulo
:
boolean
=
true
;
indexArticulo
:
number
=
0
;
public
dataSource
:
interArticulo
[]
=
[];
listEstadoArticulo
:
estadosArticulo
[]
=
[{
valor
:
'1'
,
nombre
:
'BUENO'
},
{
valor
:
'2'
,
nombre
:
'OBSERVACIÓN'
},{
valor
:
'3'
,
nombre
:
'MAL ESTADO'
}
]
listEstadoArticulo
:
interEstados
[]
=
[{
valor
:
'1'
,
nombre
:
'BUENO'
},
{
valor
:
'2'
,
nombre
:
'OBSERVACIÓN'
},{
valor
:
'3'
,
nombre
:
'MAL ESTADO'
}
]
// INICIALIZACION DATOS
// OBTENER DATOS DEL FORM GROUP
...
...
@@ -143,11 +149,17 @@ export class ordenSalidaComponent implements OnInit {
private
datePipe
:
DatePipe
,
)
{
this
.
articulosList
=
[];
//this.codigoUnidad = '';
}
ngOnInit
():
void
{
async
ngOnInit
():
Promise
<
void
>
{
this
.
dataSource
=
[];
const
jsonParametrosArti
=
{
accion
:
5
};
const
unidadList
=
await
this
.
conformidadHelper
.
listadoGeneralHorizon
(
jsonParametrosArti
)
;
this
.
listUnidades
=
unidadList
.
map
((
item
:
any
)
=>
({
codigo
:
item
.
CODIGO
,
nombre
:
item
.
NOMBRE
}));
}
onAgregarArticulo
(
event
:
any
){
...
...
@@ -208,7 +220,7 @@ export class ordenSalidaComponent implements OnInit {
};
console
.
log
(
this
.
dataSource
);
//
console.log(this.dataSource);
//console.log(lugarOrigen , lugarDestino, pasaje, fechaPasaje)
this
.
dataSource
.
forEach
((
item
)
=>
{
item
.
acciones
=
true
;
});
// VUELVE A ACTIVAR TODAS LAS ACCION
...
...
@@ -249,6 +261,7 @@ export class ordenSalidaComponent implements OnInit {
this
.
dataSource
.
forEach
((
item
)
=>
{
item
.
acciones
=
true
;
});
// Que todas las filas vuelvan a tener las acciones
if
(
this
.
dataSource
[
index
].
isEdit
){
this
.
dataSource
[
index
].
isEdit
=
false
;
this
.
dataSource
[
index
].
isNew
=
false
;
this
.
dataSource
=
[...
this
.
dataSource
];
...
...
@@ -302,7 +315,7 @@ export class ordenSalidaComponent implements OnInit {
});
}
async
onBusquedaArticulo
(
event
:
any
,
index
:
number
)
{
async
onBusquedaArticulo
(
event
:
any
,
index
:
number
)
{
// OMITIR LA BUSQUEDA POR AHORA YA QUE NO CONOCEN LOS ARTICULOS
const
busquedaArt
=
event
.
target
.
value
;
...
...
@@ -311,8 +324,6 @@ export class ordenSalidaComponent implements OnInit {
nombreValor
:
busquedaArt
,
};
console
.
log
(
jsonParametrosArti
);
const
articulos_list
=
await
this
.
conformidadHelper
.
listadoGeneralHorizon
(
jsonParametrosArti
)
;
const
mapeoResultado
=
articulos_list
.
map
((
item
:
any
)
=>
({
codigo
:
item
.
codigoProducto
,
...
...
@@ -321,10 +332,9 @@ export class ordenSalidaComponent implements OnInit {
}));
this
.
articulosList
=
mapeoResultado
;
console
.
log
(
this
.
articulosList
);
}
onSeleccionArticulo
(
event
:
MatAutocompleteSelectedEvent
,
index
:
number
)
{
onSeleccionArticulo
(
event
:
MatAutocompleteSelectedEvent
,
index
:
number
)
{
// OMITIR LA BUSQUEDA POR AHORA YA QUE NO CONOCEN LOS ARTICULOS
//AL SELECCIONAR , SE OPTIENE EL VALUE
const
selectedOption
=
event
.
option
.
value
;
...
...
@@ -332,7 +342,7 @@ export class ordenSalidaComponent implements OnInit {
//SE BUSCA EL VALUE DENTRO DEL LISTADO DE ARTICULOS
const
articulo
=
this
.
articulosList
.
find
((
item
)
=>
item
.
codigo
===
selectedOption
);
console
.
log
(
articulo
);
//
console.log(articulo);
//SE OPTIENE EL NOMBRE PARA PONERLO EN EL INPUT
this
.
formGroupMS
(
2
,
'articulo'
+
index
)?.
setValue
(
articulo
.
nombre
);
this
.
formGroupMS
(
2
,
'codigoArticulo'
+
index
)?.
setValue
(
articulo
.
codigo
);
...
...
@@ -342,28 +352,6 @@ export class ordenSalidaComponent implements OnInit {
//SE VUELVE A LIMPIAR EL LISTADO DE ARTICULOS PARA DEJAR PASO A OTRA FUTURA BUSQUEDA.
this
.
articulosList
=
[];
/*const valor = event.option.value;
if(this.listRequerimientos.find((item) => item.codigo === valor)){
this.labelText = 'Ya existe el requerimiento ' + valor + ' en el listado'; // Cambia el texto
this.isFading = false; // Resetea el estado de opacidad para mostrar el texto
// Después de 2 segundos, comienza a desvanecer el texto
setTimeout(() => {
this.isFading = true;
}, 2000); // 2000 ms = 2 segundos
}else{
this.listRequerimientos.push({ titulo: `RQ N°${valor}`, id: this.idBotones++ , codigo: valor });
this.labelText = '';
}
this.datos_servicio.get('busquedaReq')?.setValue('');
this.inputBusqueda.nativeElement.blur();
this.detectorChange.detectChanges();
this.requerimientosFiltrados = [];
}*/
}
formatoEstado
(
estado
:
any
)
{
...
...
src/app/service/conformidad_service/conformidad.service.ts
View file @
7d433371
...
...
@@ -76,7 +76,7 @@ export class ConformidadService {
try
{
const
respuesta
=
await
axios
.
post
(
this
.
t_facturacion_electronica_link
+
'/api/v1/conformidad/registrarConformidad'
,
Parametros
);
console
.
log
(
respuesta
);
//
console.log(respuesta);
return
respuesta
.
data
;
}
catch
(
e
)
{
return
e
;
...
...
@@ -227,9 +227,6 @@ export class ConformidadService {
nombreDocumento
:
datos
.
nombreArchivo
||
''
});
console
.
log
(
registroEvidencia
);
if
(
responseBody
?.
status
)
{
respuesta
=
{
status
:
true
,
message
:
"Imagenes subidas"
};
}
else
{
...
...
@@ -285,6 +282,8 @@ export class ConformidadService {
descripcion
:
json
.
descripcion
||
''
,
fechaRegistro
:
json
.
fechaRegistro
||
''
,
codArticulo
:
json
.
codArticulo
||
''
,
nombreArticulo
:
json
.
nombreArticulo
||
''
,
unidad
:
json
.
unidad
||
'-'
,
cantidad
:
json
.
cantidad
||
0
,
estado
:
json
.
estado
||
0
,
...
...
@@ -298,31 +297,4 @@ export class ConformidadService {
}
}
/*async listadoRequerimientos(json: any) {
const parametros =[
json.accion || 0,
json.nombreValor || '',
json.sede || '',
]
try {
const respuesta = await axios.post(this.t_horizon_rest_link + '/api/procedure/Procedimiento',
{
database: "sqlserver",
procedure :"USP_GENERAL_FORMULARIO",
params : parametros
},
{
headers: {
'Content-Type': 'application/json'
}
});
return respuesta.data;
} catch (e) {
return e;
}
}*/
}
src/app/service/directivas_service/soloNumeros/solo-numeros.directive.ts
View file @
7d433371
import
{
Directive
,
HostListener
}
from
'@angular/core'
;
import
{
Directive
,
HostListener
,
Input
}
from
'@angular/core'
;
@
Directive
({
selector
:
'[soloNumeros]'
,
...
...
@@ -7,14 +7,28 @@ import { Directive ,HostListener } from '@angular/core';
export
class
SoloNumerosDirective
{
@
Input
()
soloNumeros
?:
'decimal'
|
'entero'
;
//constructor() { }
@
HostListener
(
'keypress'
,
[
'$event'
])
onKeyPress
(
event
:
KeyboardEvent
)
{
const
charCode
=
event
.
key
;
// Permitir solo números (0-9)
if
(
!
/^
[
0-9.
]
*$/
.
test
(
charCode
))
{
event
.
preventDefault
();
if
(
this
.
soloNumeros
===
'entero'
)
{
// Permitir solo números enteros (0-9)
if
(
!
/^
[
0-9
]
*$/
.
test
(
charCode
))
{
event
.
preventDefault
();
}
}
else
if
(
this
.
soloNumeros
===
'decimal'
)
{
if
(
!
/^
[
0-9.
]
*$/
.
test
(
charCode
))
{
event
.
preventDefault
();
}
}
else
{
if
(
!
/^
[
0-9
]
*$/
.
test
(
charCode
))
{
event
.
preventDefault
();
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment