Crear y autorizar solicitudes para eliminar traficos

feature/solicitar_eliminacion_de_referencia_20240219
Felix Morales 7 months ago
parent 636cac25d0
commit 9b3b75bd0a
  1. 13
      src/Components/Corresponsales/SolicitudReapertura/AutorizarSolicitud.tsx
  2. 7
      src/Components/Corresponsales/SolicitudReapertura/CrearSolicitud.tsx
  3. 103
      src/Components/Corresponsales/TraficoCorresponsales.tsx
  4. 43
      src/Components/Reportes/RptCorresponsalesTraficos.tsx
  5. 8
      src/Services/Corresponsalias/Corresponsales.Trafico.Services.ts
  6. 16
      src/Services/Corresponsalias/Corresponsales.Trafico.Solicitud.Service.ts

@ -6,11 +6,14 @@ import { ICorresponsalTraficoSolicitud } from "../../../Interfaces/Corresponsale
import { DTOTraficoSolicitud } from "../../../DTO/Corresponsales/DTOTraficoSolicitud";
import CTrafDataService from "../../../Services/Corresponsalias/Corresponsales.Trafico.Services"
import { useState } from "react";
import CorresponsalesTraficoSolicitudService from "../../../Services/Corresponsalias/Corresponsales.Trafico.Solicitud.Service";
interface IProps {
solicitud: DTOTraficoSolicitud;
userId: number;
close: (estado: number) => void
title: string;
mensaje: string;
}
export const AutorizarSolicitud:React.FC<IProps> = (props) => {
const [Motivo, setMotivo] = useState('')
@ -18,6 +21,10 @@ export const AutorizarSolicitud:React.FC<IProps> = (props) => {
const [msg, setMsg] = useState('')
const [header, setHeader] = useState('')
const [SelectedOption, setSelectedOption] = useState(2)
const [Perfil, setPerfil] = useState(() => {
const stickyValue = window.localStorage.getItem('Perfil')
return stickyValue !== null ? JSON.parse(stickyValue) : ''
})
const AppendSolicitud = () =>{
if(SelectedOption === 0 && !Motivo){
@ -43,7 +50,7 @@ export const AutorizarSolicitud:React.FC<IProps> = (props) => {
motivoRechazo: Motivo,
estado: SelectedOption
}
CTrafDataService.AppendSolicitudReapertura(solicitud)
CorresponsalesTraficoSolicitudService.AppendSolicitud(solicitud, Perfil)!
.then((resp) => {
if(resp.data.id > 0){
props.close(SelectedOption)
@ -59,7 +66,7 @@ export const AutorizarSolicitud:React.FC<IProps> = (props) => {
return(
<>
<h3>Solicitud de Reapertura de Cuenta</h3>
<h3>{props.title}</h3>
<hr/>
<Row>
<CiWarning style={{fontSize:'150px', color:'#ff3100'}} />
@ -67,7 +74,7 @@ export const AutorizarSolicitud:React.FC<IProps> = (props) => {
<Row>
<Col xs={12}>
<p style={{textAlign:'center'}}>
{props.solicitud.usuarioSolicita} solicita la reapertura de esta cuenta por el motivo:
{props.solicitud.usuarioSolicita} {props.mensaje}
</p>
<p style={{textAlign:'center'}}>{props.solicitud.motivoSolicita}</p>
</Col>

@ -3,6 +3,7 @@ import { Button, Col, Form, FormLabel, Row } from "react-bootstrap"
import CTrafDataService from "../../../Services/Corresponsalias/Corresponsales.Trafico.Services"
import { MsgInformativo } from "../../Utils/Toast/msgInformativo"
import { ICorresponsalTraficoSolicitud } from "../../../Interfaces/Corresponsales/ICorresponsalTraficoSolicitud"
import CorresponsalesTraficoSolicitudService from "../../../Services/Corresponsalias/Corresponsales.Trafico.Solicitud.Service"
interface IProps{
idTrafico: number,
@ -39,12 +40,12 @@ export const CrearSolicitud:React.FC<IProps> = (props) => {
idUsuarioSolicita: props.idUsuario,
fechaSolicita: undefined,
motivoSolicita: Motivo,
idUsuarioAutoriza: Perfil === 'Sup. Facturacion' ? props.idUsuario : 0,
idUsuarioAutoriza: Perfil.includes('Sup') ? props.idUsuario : 0, //Si es un supervisor se asigna su id al usuario que autoriza ya que la solicitud no requiere ser autorizada por otro usuario
fechaAutoriza: undefined,
motivoRechazo: "",
estado: Perfil === 'Sup. Facturacion' ? 2 : 1
estado: Perfil.includes('Sup') ? 2 : 1 //Si es un supervisor se asigna el estado de la solicitud como autorizada desde que se crea
}
CTrafDataService.AppendSolicitudReapertura(solicitud)
CorresponsalesTraficoSolicitudService.AppendSolicitud(solicitud, Perfil)!
.then((resp) => {
props.close()
})

@ -132,6 +132,7 @@ import DTORectificacionHistorico from '../../DTO/Corresponsales/DTORectificacion
import { CrearSolicitud } from './SolicitudReapertura/CrearSolicitud'
import { AutorizarSolicitud } from './SolicitudReapertura/AutorizarSolicitud'
import { DTOTraficoSolicitud } from '../../DTO/Corresponsales/DTOTraficoSolicitud'
import CorresponsalesTraficoSolicitudService from '../../Services/Corresponsalias/Corresponsales.Trafico.Solicitud.Service'
interface IProps {
IDTrafico: number
@ -356,7 +357,7 @@ export default function TraficoCorresponsales (props:IProps) {
const [IsDisabled, setIsDisabled] = useState(false);
const hiddenFileInputRef = useRef<HTMLInputElement>(null);
const btnCuenta = useRef<HTMLButtonElement>(null);
const [solicitudReapertura, setSolicitudReapertura] = useState<DTOTraficoSolicitud>({
const [solicitud, setSolicitud] = useState<DTOTraficoSolicitud>({
id: 0,
idTrafico: 0,
idUsuarioSolicita: 0,
@ -581,25 +582,35 @@ export default function TraficoCorresponsales (props:IProps) {
return today.getFullYear().toString()
}
const LoadEverything = () => {
let clientes: IClientes[] = [];
//Primero se valida si el tráfico tiene solicitud de reapertura de cuenta
CTrafDataService.GetSolicitudReapertura(props.IDTrafico)
.then(resp => {
if(resp.data.id > 0){
setSolicitudReapertura(solicitud => ({
...solicitud,
...resp.data
}))
if(Perfil === 'Sup. Facturacion'){//Validar si el usuario puede autorizar la petición
showModalBox(16, 'modal-30w', true)//Si puede se muestra el modal para autorizar la petición
const GetSolicitudes = async () => {
await CorresponsalesTraficoSolicitudService.GetSolicitud(props.IDTrafico, Perfil)!
.then(resp => {
if(resp.data.id > 0){
setSolicitud(solicitud => ({
...solicitud,
...resp.data
}))
if(Perfil === 'Sup. Corresponsalias'){//Si el usuario es supervisor de corresponsalias
showModalBox(17, 'modal-30w', true)//Se muestra el modal para autorizar la petición
}
if(Perfil.includes('Facturacion')){//Valida si es un usuario de facturacion
//Se cambian las propiedades del botón con el que se hace la solicitud
btnCuenta.current!.innerText = 'Pediente de Autorizar';
btnCuenta.current!.disabled = true;
if(Perfil === 'Sup. Facturacion'){//Si el usuario es supervisor
showModalBox(16, 'modal-30w', true)//Se muestra el modal para autorizar la petición
}
}
}
//Se cambia el texto del botón con el que se hace la solicitud
btnCuenta.current!.innerText = 'Pediente de Autorizar';
btnCuenta.current!.disabled = true;
}
})
ClavesPedimentosService.getAllClavesPedimentos()
})
}
const LoadEverything = async () => {
let clientes: IClientes[] = [];
await GetSolicitudes();
await ClavesPedimentosService.getAllClavesPedimentos()
.then(response => setClavesPedimentos(response.data))
.catch((e: Error) => {
setHeader('Error')
@ -607,7 +618,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true)
return
})
CorresponsalesDataService.getAll()
await CorresponsalesDataService.getAll()
.then((response) => {
dispatch(populateCatCorresponsales(response.data))
})
@ -617,7 +628,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true)
return
})
CTrafDataService.GetCorresponsalesTraficoEstatus()
await CTrafDataService.GetCorresponsalesTraficoEstatus()
.then((response) => {
setDataCatEstatus(response.data)
})
@ -628,7 +639,7 @@ export default function TraficoCorresponsales (props:IProps) {
return
})
TiposMercanciaService.GetAll()
await TiposMercanciaService.GetAll()
.then((response) => {
setTiposMercancia(response.data);
})
@ -639,7 +650,7 @@ export default function TraficoCorresponsales (props:IProps) {
return
});
CFacDataService.getAll(IDTrafico)
await CFacDataService.getAll(IDTrafico)
.then((response) => {
dispatch(InitCorresponsalesFacturas(IDTrafico))
response.data.forEach((element) => {
@ -652,7 +663,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true)
return
})
CFac3erDataService.getAll(IDTrafico)
await CFac3erDataService.getAll(IDTrafico)
.then((response) => {
dispatch(InitCorresponsalesFacturasTerceros(IDTrafico))
response.data.forEach((element) => {
@ -665,7 +676,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true)
return
})
CContDataService.getAll(IDTrafico)
await CContDataService.getAll(IDTrafico)
.then((response) => {
dispatch(InitCorresponsalesContenedores(IDTrafico))
response.data.forEach((element) => {
@ -678,7 +689,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true)
return
})
ClientesDataService.getAllClientes(0)
await ClientesDataService.getAllClientes(0)
.then((response) => {
clientes = response.data;
setClientes(response.data)
@ -689,7 +700,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true)
return
})
CAntDataService.getAll(IDTrafico)
await CAntDataService.getAll(IDTrafico)
.then((response) => {
dispatch(populateCorresponsalesAnticipos(response.data))
})
@ -699,7 +710,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true)
return
})
CGuiasDataService.getAll(IDTrafico)
await CGuiasDataService.getAll(IDTrafico)
.then((response) => {
dispatch(populateCorresponsalesGuias(response.data))
})
@ -709,7 +720,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true)
return
})
ProvDataService.getAll(0)
await ProvDataService.getAll(0)
.then((response) => {
dispatch(populateCatProveedores(response.data))
})
@ -719,7 +730,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true)
return
})
CCatTiposDocumentos.getAll(2206, 1)
await CCatTiposDocumentos.getAll(2206, 1)
.then((response) => {
setCatTiposDocumentos(response.data)
})
@ -729,7 +740,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true)
return
})
CCatTiposDocumentos.getAll(2206, 2)
await CCatTiposDocumentos.getAll(2206, 2)
.then((response) => {
setCatTiposDocumentosInfoCorresponsal(response.data)
})
@ -739,7 +750,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true)
return
})
CCueCompService.GetAllEstatus()
await CCueCompService.GetAllEstatus()
.then((response) => {
dispatch(
populateCorresponsalesCuentasComplementariasEstatus(response.data)
@ -751,7 +762,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true)
return
})
CTrafDataService.GetAll(IDTrafico)
await CTrafDataService.GetAll(IDTrafico)
.then((response) => {
setFolioTrafico(response.data.folioGemco)
setProceso(response.data.proceso)
@ -797,7 +808,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true)
return
})
CContaDataService.Get(IDTrafico, 2, 1)
await CContaDataService.Get(IDTrafico, 2, 1)
.then((response) => {
setRechazosTrafico(response.data)
})
@ -807,7 +818,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true)
return
})
CContaDataService.GetHistorial(IDTrafico)
await CContaDataService.GetHistorial(IDTrafico)
.then((response) => {
setRechazosContabilidad(response.data)
})
@ -817,7 +828,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true)
return
})
PedimentosConsolidadosService.GetAll(IDTrafico)
await PedimentosConsolidadosService.GetAll(IDTrafico)
.then((resp) => {
dispatch(populatePedimentos(resp.data))
})
@ -4350,7 +4361,9 @@ export default function TraficoCorresponsales (props:IProps) {
) : null}
{LoadComponent===16 ? (
<div style={{ height: '475px', overflowX: 'hidden' }}>
<AutorizarSolicitud solicitud={solicitudReapertura} userId={UserId}
<AutorizarSolicitud solicitud={solicitud} userId={UserId}
title={'Solicitud de Reapertura de Cuenta'}
mensaje={'solicita la reapertura de esta cuenta por el motivo:'}
close={(estado:number)=>{
let texto = estado === 0 ? 'rechazada' : 'autorizada'
setProceso(estado === 2 ? 3 : 4)
@ -4362,6 +4375,22 @@ export default function TraficoCorresponsales (props:IProps) {
}}/>
</div>
) : null}
{LoadComponent===17 ? (
<div style={{ height: '475px', overflowX: 'hidden' }}>
<AutorizarSolicitud solicitud={solicitud} userId={UserId}
title={'Solicitud Para Eliminar Referencia'}
mensaje={'solicita eliminar esta referencia por el motivo: '}
close={(estado:number)=>{
let texto = estado === 0 ? 'rechazada' : 'autorizada'
props.onClose(true);
setShowModal(false)
setHeader('Informativo');
setMsg(`Solicitud ${texto} correctamente.`)
setShowMsg(true)
return;
}}/>
</div>
) : null}
</Modal.Body>
</Modal>
<MsgInformativo

@ -42,7 +42,8 @@ import ICorresponsalContenedores from '../../Interfaces/Corresponsales/ICorrespo
import ICorresponsalFacturas from '../../Interfaces/Corresponsales/ICorresponsalFacturas'
import ICatProveedores from '../../Interfaces/Catalogos/ICatProveedores'
import { FaCrow, FaTrash } from 'react-icons/fa'
/* import '../../css/generic01.css' */
import { CrearSolicitud } from '../Corresponsales/SolicitudReapertura/CrearSolicitud'
import '../../css/generic01.css'
interface IProps {}
@ -71,6 +72,7 @@ export default function RptCorresponsalesTraficos(props: IProps) {
const [filteredData, setFilteredData] = useState<ICorresponsalTrafico[]>([])
const [show, setShowMsg] = useState(false)
const [ShowModal, setShowModal] = useState(false)
const [ShowModalSolicitud, setShowModalSolicitud] = useState(false)
const [header, setHeader] = useState('')
const [msg, setMsg] = useState('')
const [Inicio, setInicio] = useState(currentDate(-365))
@ -100,6 +102,7 @@ export default function RptCorresponsalesTraficos(props: IProps) {
field: 'acciones',
headerName: '',
width: 50,
hide: !Perfil.includes('Corresponsalias'),
cellRenderer: (params: any) => {
return (
<span>
@ -297,7 +300,7 @@ export default function RptCorresponsalesTraficos(props: IProps) {
setDeleting(false)
return;
}
console.log('borrando trafico')
setShowModalSolicitud(true)
}else{
AbreTrafico(e.data.id)
}
@ -560,6 +563,10 @@ export default function RptCorresponsalesTraficos(props: IProps) {
})
}
const handleClose = () => {
setShowModalSolicitud(false)
setDeleting(false)
}
return (
<div>
<Card>
@ -798,6 +805,38 @@ export default function RptCorresponsalesTraficos(props: IProps) {
</div>
</Modal.Body>
</Modal>
<Modal
show={ShowModalSolicitud}
dialogClassName='modal-50w'
style={{backdropFilter:'brightness(0.5)'}}
centered
onHide={handleClose}
>
<Modal.Body>
<div style={{ height: '250px', overflowX: 'hidden' }}>
<CrearSolicitud
idTrafico={IDTrafico}
idUsuario={UserId}
title='Solicitud Para Eliminar Trafico'
close={()=>{
setShowModalSolicitud(false)
if(Perfil === 'Sup. Corresponsalias'){
setHeader('Informativo');
setMsg('Referencia eliminada correctamente.')
setShowMsg(true)
return;
}
else{
setHeader('Informativo');
setMsg('Solicitud creada correctamente.')
setShowMsg(true)
return;
}
}
}/>
</div>
</Modal.Body>
</Modal>
</div>
)
}

@ -7,8 +7,6 @@ import IRespuesta from "../../Interfaces/IRespuesta";
import ICorresponsalRectificacionHistorico from "../../Interfaces/Corresponsales/ICorresponsalRectificacionHistorico";
import DTORectificacionHistorico from "../../DTO/Corresponsales/DTORectificacionHistorico";
import IReporteOperacionesNewell from "../../Interfaces/ReportesClientes/IReporteOperacionesNewell";
import { ICorresponsalTraficoSolicitud } from "../../Interfaces/Corresponsales/ICorresponsalTraficoSolicitud";
import { DTOTraficoSolicitud } from "../../DTO/Corresponsales/DTOTraficoSolicitud";
class Corresponsales_Trafico_DataService {
GetAll(id: number) {
@ -47,11 +45,5 @@ class Corresponsales_Trafico_DataService {
AppendFacturasContenedoresAlen(idTrafico:number, fileId:number){
return http.post(`/Corresponsalias/Traficos/Append/LayoutAlen?idTrafico=${idTrafico}&fileId=${fileId}`);
}
AppendSolicitudReapertura(solicitud: ICorresponsalTraficoSolicitud){
return http.post<ICorresponsalTraficoSolicitud>(`/Corresponsalias/Solicitudes/Reapertura/Append`, solicitud)
}
GetSolicitudReapertura(idTrafico: number){
return http.get<DTOTraficoSolicitud>(`/Corresponsalias/Solicitudes/Reapertura/Get?idTrafico=${idTrafico}`)
}
}
export default new Corresponsales_Trafico_DataService();

@ -0,0 +1,16 @@
import { DTOTraficoSolicitud } from "../../DTO/Corresponsales/DTOTraficoSolicitud"
import { ICorresponsalTraficoSolicitud } from "../../Interfaces/Corresponsales/ICorresponsalTraficoSolicitud"
import http from "../common/http-common";
class TraficoSolicitudServices {
AppendSolicitud(solicitud: ICorresponsalTraficoSolicitud, Perfil: string){
if(Perfil.includes('Corresponsalias')){return http.post<ICorresponsalTraficoSolicitud>(`/Corresponsalias/Solicitudes/EliminarCuenta/Append`, solicitud)}
if(Perfil.includes('Facturacion')){return http.post<ICorresponsalTraficoSolicitud>(`/Corresponsalias/Solicitudes/Reapertura/Append`, solicitud)}
}
GetSolicitud(idTrafico: number, Perfil: string){
if(Perfil.includes('Corresponsalias')){return http.get<DTOTraficoSolicitud>(`/Corresponsalias/Solicitudes/EliminarCuenta/Get?idTrafico=${idTrafico}`)}
if(Perfil.includes('Facturacion')){return http.get<DTOTraficoSolicitud>(`/Corresponsalias/Solicitudes/Reapertura/Get?idTrafico=${idTrafico}`)}
}
}
export default new TraficoSolicitudServices()
Loading…
Cancel
Save