Merge branch 'feature/solicitar_eliminacion_de_referencia_20240219'

feature/Creacion_Referencias_Sin_Pedimento_20240229
Felix Morales 7 months ago
commit e95c14e907
  1. 8
      src/Classes/Corresponsales/CCorresponsalesTrafico.ts
  2. 51
      src/Components/Corresponsales/SolicitudReapertura/AutorizarSolicitud.tsx
  3. 52
      src/Components/Corresponsales/SolicitudReapertura/CrearSolicitud.tsx
  4. 120
      src/Components/Corresponsales/TraficoCorresponsales.tsx
  5. 4
      src/Components/Dashboard/Dashboard.tsx
  6. 3
      src/Components/Dashboard/DashboardContabilidad.tsx
  7. 36
      src/Components/Dashboard/DashboardCorresponsales.tsx
  8. 2
      src/Components/Dashboard/DashboardFacturacion.tsx
  9. 72
      src/Components/Reportes/RptCorresponsalesTraficos.tsx
  10. 2
      src/DTO/Corresponsales/DTOTraficoSolicitud.ts
  11. 1
      src/Interfaces/Corresponsales/ICorresponsalTrafico.ts
  12. 2
      src/Interfaces/Corresponsales/ICorresponsalTraficoSolicitud.ts
  13. 8
      src/Services/Corresponsalias/Corresponsales.Trafico.Services.ts
  14. 19
      src/Services/Corresponsalias/Corresponsales.Trafico.Solicitud.Service.ts
  15. 3
      src/Services/Dashboard/Dashboard.Corresponsales.Services.ts
  16. 4
      src/index.tsx
  17. 3
      src/store/features/Corresponsales/CorresponsalesTraficoSlice.ts

@ -47,6 +47,7 @@ export default class CCorresponsalesTrafico implements ICorresponsalTrafico {
causaRectificacion: string; causaRectificacion: string;
totalHonorariosAA: number; totalHonorariosAA: number;
totalGastosTerceros: number; totalGastosTerceros: number;
tieneSolicitud: number;
constructor() { constructor() {
this.id=0 this.id=0
@ -95,6 +96,7 @@ export default class CCorresponsalesTrafico implements ICorresponsalTrafico {
this.causaRectificacion = '' this.causaRectificacion = ''
this.totalHonorariosAA = 0 this.totalHonorariosAA = 0
this.totalGastosTerceros = 0 this.totalGastosTerceros = 0
this.tieneSolicitud = 0
} }
public getEmptyObject(): ICorresponsalTrafico { public getEmptyObject(): ICorresponsalTrafico {
@ -144,7 +146,8 @@ export default class CCorresponsalesTrafico implements ICorresponsalTrafico {
cargoA: 0, cargoA: 0,
causaRectificacion: '', causaRectificacion: '',
totalHonorariosAA: 0, totalHonorariosAA: 0,
totalGastosTerceros: 0 totalGastosTerceros: 0,
tieneSolicitud: 0
} }
} }
@ -195,7 +198,8 @@ export default class CCorresponsalesTrafico implements ICorresponsalTrafico {
cargoA: data.cargoA, cargoA: data.cargoA,
causaRectificacion: data.causaRectificacion, causaRectificacion: data.causaRectificacion,
totalHonorariosAA: data.totalHonorariosAA, totalHonorariosAA: data.totalHonorariosAA,
totalGastosTerceros: data.totalGastosTerceros totalGastosTerceros: data.totalGastosTerceros,
tieneSolicitud: data.tieneSolicitud
} }
} }
} }

@ -2,22 +2,33 @@ import { Button, Col, Form, FormLabel, Row } from "react-bootstrap";
import { CiWarning } from "react-icons/ci"; import { CiWarning } from "react-icons/ci";
import { MsgInformativo } from "../../Utils/Toast/msgInformativo"; import { MsgInformativo } from "../../Utils/Toast/msgInformativo";
import '../../../css/generic01.css' import '../../../css/generic01.css'
import { ICorresponsalTraficoSolicitudReapertura } from "../../../Interfaces/Corresponsales/ICorresponsalTraficoSolicitudReapertura"; import { ICorresponsalTraficoSolicitud } from "../../../Interfaces/Corresponsales/ICorresponsalTraficoSolicitud";
import { DTOTraficoSolicitudReapertura } from "../../../DTO/Corresponsales/DTOTraficoSolicitudReapertura"; import { DTOTraficoSolicitud } from "../../../DTO/Corresponsales/DTOTraficoSolicitud";
import CTrafDataService from "../../../Services/Corresponsalias/Corresponsales.Trafico.Services" import CTrafDataService from "../../../Services/Corresponsalias/Corresponsales.Trafico.Services"
import { useState } from "react"; import { useState } from "react";
import CorresponsalesTraficoSolicitudService from "../../../Services/Corresponsalias/Corresponsales.Trafico.Solicitud.Service";
interface IProps { interface IProps {
solicitud: DTOTraficoSolicitudReapertura; solicitud: DTOTraficoSolicitud;
userId: number; userId: number;
close: (estado: number) => void close: (estado: number) => void
title: string;
mensaje: string;
} }
export const AutorizarReapertura:React.FC<IProps> = (props) => { export const AutorizarSolicitud:React.FC<IProps> = (props) => {
const [Motivo, setMotivo] = useState('') const [Motivo, setMotivo] = useState('')
const [showMsg, setShowMsg] = useState(false) const [showMsg, setShowMsg] = useState(false)
const [msg, setMsg] = useState('') const [msg, setMsg] = useState('')
const [header, setHeader] = useState('') const [header, setHeader] = useState('')
const [SelectedOption, setSelectedOption] = useState(2) const [SelectedOption, setSelectedOption] = useState(2)
const [Depto, setDepto] = useState(() => {
const stickyValue = window.localStorage.getItem('Departamento')
return stickyValue !== null ? JSON.parse(stickyValue) : ''
})
const [Perfil, setPerfil] = useState(() => {
const stickyValue = window.localStorage.getItem('Perfil')
return stickyValue !== null ? JSON.parse(stickyValue) : ''
})
const AppendSolicitud = () =>{ const AppendSolicitud = () =>{
if(SelectedOption === 0 && !Motivo){ if(SelectedOption === 0 && !Motivo){
@ -32,7 +43,7 @@ export const AutorizarReapertura:React.FC<IProps> = (props) => {
setShowMsg(true) setShowMsg(true)
return; return;
} }
var solicitud: ICorresponsalTraficoSolicitudReapertura = { var solicitud: ICorresponsalTraficoSolicitud = {
id: props.solicitud.id, id: props.solicitud.id,
idTrafico: props.solicitud.idTrafico, idTrafico: props.solicitud.idTrafico,
idUsuarioSolicita: props.solicitud.idUsuarioSolicita, idUsuarioSolicita: props.solicitud.idUsuarioSolicita,
@ -43,7 +54,31 @@ export const AutorizarReapertura:React.FC<IProps> = (props) => {
motivoRechazo: Motivo, motivoRechazo: Motivo,
estado: SelectedOption estado: SelectedOption
} }
CTrafDataService.AppendSolicitudReapertura(solicitud) if(Depto === 'Facturacion'){
AppendSolicitudReapertura(solicitud)
}
if(Depto === 'Corresponsalias'){
AppendSolicitudEliminarReferencia(solicitud)
}
}
const AppendSolicitudReapertura = (solicitud: ICorresponsalTraficoSolicitud) => {
CorresponsalesTraficoSolicitudService.AppendSolicitudReapertura(solicitud)
.then((resp) => {
if(resp.data.id > 0){
props.close(SelectedOption)
}
})
.catch(() => {
setHeader('Error');
setMsg('Ocurrió un error. Favor de intentar nuevamente')
setShowMsg(true)
return;
})
}
const AppendSolicitudEliminarReferencia = (solicitud: ICorresponsalTraficoSolicitud) => {
CorresponsalesTraficoSolicitudService.AppendSolicitudEliminarReferencia(solicitud)
.then((resp) => { .then((resp) => {
if(resp.data.id > 0){ if(resp.data.id > 0){
props.close(SelectedOption) props.close(SelectedOption)
@ -59,7 +94,7 @@ export const AutorizarReapertura:React.FC<IProps> = (props) => {
return( return(
<> <>
<h3>Solicitud de Reapertura de Cuenta</h3> <h3>{props.title}</h3>
<hr/> <hr/>
<Row> <Row>
<CiWarning style={{fontSize:'150px', color:'#ff3100'}} /> <CiWarning style={{fontSize:'150px', color:'#ff3100'}} />
@ -67,7 +102,7 @@ export const AutorizarReapertura:React.FC<IProps> = (props) => {
<Row> <Row>
<Col xs={12}> <Col xs={12}>
<p style={{textAlign:'center'}}> <p style={{textAlign:'center'}}>
{props.solicitud.usuarioSolicita} solicita la reapertura de esta cuenta por el motivo: {props.solicitud.usuarioSolicita} {props.mensaje}
</p> </p>
<p style={{textAlign:'center'}}>{props.solicitud.motivoSolicita}</p> <p style={{textAlign:'center'}}>{props.solicitud.motivoSolicita}</p>
</Col> </Col>

@ -2,48 +2,76 @@ import React, { useState } from "react"
import { Button, Col, Form, FormLabel, Row } from "react-bootstrap" import { Button, Col, Form, FormLabel, Row } from "react-bootstrap"
import CTrafDataService from "../../../Services/Corresponsalias/Corresponsales.Trafico.Services" import CTrafDataService from "../../../Services/Corresponsalias/Corresponsales.Trafico.Services"
import { MsgInformativo } from "../../Utils/Toast/msgInformativo" import { MsgInformativo } from "../../Utils/Toast/msgInformativo"
import { ICorresponsalTraficoSolicitudReapertura } from "../../../Interfaces/Corresponsales/ICorresponsalTraficoSolicitudReapertura" import { ICorresponsalTraficoSolicitud } from "../../../Interfaces/Corresponsales/ICorresponsalTraficoSolicitud"
import CorresponsalesTraficoSolicitudService from "../../../Services/Corresponsalias/Corresponsales.Trafico.Solicitud.Service"
interface IProps{ interface IProps{
idTrafico: number, idTrafico: number,
idUsuario: number, idUsuario: number,
close: () => void close: () => void,
title: string,
} }
export const SolicitudReapertura:React.FC<IProps> = (props) => { export const CrearSolicitud:React.FC<IProps> = (props) => {
const [Motivo, setMotivo] = useState('') const [Motivo, setMotivo] = useState('')
const [showMsg, setShowMsg] = useState(false) const [showMsg, setShowMsg] = useState(false)
const [msg, setMsg] = useState('') const [msg, setMsg] = useState('')
const [header, setHeader] = useState('') const [header, setHeader] = useState('')
const [Depto, setDepto] = useState(() => {
const stickyValue = window.localStorage.getItem('Departamento')
return stickyValue !== null ? JSON.parse(stickyValue) : ''
})
const [Perfil, setPerfil] = useState(() => { const [Perfil, setPerfil] = useState(() => {
const stickyValue = window.localStorage.getItem('Perfil') const stickyValue = window.localStorage.getItem('Perfil')
return stickyValue !== null ? JSON.parse(stickyValue) : '' return stickyValue !== null ? JSON.parse(stickyValue) : ''
}) })
const SolicitarReapertura = (motivo: string) => { const AppendSolicitud = () => {
if(!motivo){ if(!Motivo){
setHeader('Error'); setHeader('Error');
setMsg('Favor de capturar una razon válida.') setMsg('Favor de capturar una razon válida.')
setShowMsg(true) setShowMsg(true)
return; return;
} }
if(motivo.length < 30){ if(Motivo.length < 30){
setHeader('Error'); setHeader('Error');
setMsg('La razón de su solicitud debe contener al menos 30 caracteres') setMsg('La razón de su solicitud debe contener al menos 30 caracteres')
setShowMsg(true) setShowMsg(true)
return; return;
} }
var solicitud: ICorresponsalTraficoSolicitudReapertura = { var solicitud: ICorresponsalTraficoSolicitud = {
id: 0, id: 0,
idTrafico: props.idTrafico, idTrafico: props.idTrafico,
idUsuarioSolicita: props.idUsuario, idUsuarioSolicita: props.idUsuario,
fechaSolicita: undefined, fechaSolicita: undefined,
motivoSolicita: Motivo, 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, fechaAutoriza: undefined,
motivoRechazo: "", 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
}
if(Depto === 'Facturacion'){
AppendSolicitudReapertura(solicitud)
}
if(Depto === 'Corresponsalias'){
AppendSolicitudEliminarReferencia(solicitud)
}
} }
CTrafDataService.AppendSolicitudReapertura(solicitud)
const AppendSolicitudReapertura = (solicitud: ICorresponsalTraficoSolicitud) => {
CorresponsalesTraficoSolicitudService.AppendSolicitudReapertura(solicitud)
.then((resp) => {
props.close()
})
.catch(() => {
setHeader('Error');
setMsg('Ocurrió un error. Favor de intentar nuevamente')
setShowMsg(true)
return;
})
}
const AppendSolicitudEliminarReferencia = (solicitud: ICorresponsalTraficoSolicitud) => {
CorresponsalesTraficoSolicitudService.AppendSolicitudEliminarReferencia(solicitud)
.then((resp) => { .then((resp) => {
props.close() props.close()
}) })
@ -56,7 +84,7 @@ export const SolicitudReapertura:React.FC<IProps> = (props) => {
} }
return( return(
<> <>
<h3>Solicitud de Reapertura de Cuenta</h3> <h3>{props.title}</h3>
<hr/> <hr/>
<Row> <Row>
<Col xs={12}> <Col xs={12}>
@ -72,7 +100,7 @@ export const SolicitudReapertura:React.FC<IProps> = (props) => {
</Row> </Row>
<Row className='justify-content-end'> <Row className='justify-content-end'>
<Col xs={2} style={{textAlign:'end'}}> <Col xs={2} style={{textAlign:'end'}}>
<Button variant='primary' onClick={() => SolicitarReapertura(Motivo)}> <Button variant='primary' onClick={() => AppendSolicitud()}>
Guardar Guardar
</Button> </Button>
</Col> </Col>

@ -129,9 +129,10 @@ import { populatePedimentos } from '../../store/features/Corresponsales/Correspo
import { populateRectificaciones } from '../../store/features/Corresponsales/CorresponsalesPedimentosRectificacionesSlice' import { populateRectificaciones } from '../../store/features/Corresponsales/CorresponsalesPedimentosRectificacionesSlice'
import { NuevaRectificacion } from './Rectificaciones/NuevaRectificacion' import { NuevaRectificacion } from './Rectificaciones/NuevaRectificacion'
import DTORectificacionHistorico from '../../DTO/Corresponsales/DTORectificacionHistorico' import DTORectificacionHistorico from '../../DTO/Corresponsales/DTORectificacionHistorico'
import { SolicitudReapertura } from './SolicitudReapertura/SolicitudReapertura' import { CrearSolicitud } from './SolicitudReapertura/CrearSolicitud'
import { AutorizarReapertura } from './SolicitudReapertura/AutorizarReapertura' import { AutorizarSolicitud } from './SolicitudReapertura/AutorizarSolicitud'
import { DTOTraficoSolicitudReapertura } from '../../DTO/Corresponsales/DTOTraficoSolicitudReapertura' import { DTOTraficoSolicitud } from '../../DTO/Corresponsales/DTOTraficoSolicitud'
import CorresponsalesTraficoSolicitudService from '../../Services/Corresponsalias/Corresponsales.Trafico.Solicitud.Service'
interface IProps { interface IProps {
IDTrafico: number IDTrafico: number
@ -356,7 +357,7 @@ export default function TraficoCorresponsales (props:IProps) {
const [IsDisabled, setIsDisabled] = useState(false); const [IsDisabled, setIsDisabled] = useState(false);
const hiddenFileInputRef = useRef<HTMLInputElement>(null); const hiddenFileInputRef = useRef<HTMLInputElement>(null);
const btnCuenta = useRef<HTMLButtonElement>(null); const btnCuenta = useRef<HTMLButtonElement>(null);
const [solicitudReapertura, setSolicitudReapertura] = useState<DTOTraficoSolicitudReapertura>({ const [solicitud, setSolicitud] = useState<DTOTraficoSolicitud>({
id: 0, id: 0,
idTrafico: 0, idTrafico: 0,
idUsuarioSolicita: 0, idUsuarioSolicita: 0,
@ -581,25 +582,52 @@ export default function TraficoCorresponsales (props:IProps) {
return today.getFullYear().toString() return today.getFullYear().toString()
} }
const LoadEverything = () => { const GetSolicitudes = async () => {
let clientes: IClientes[] = []; if(Perfil === 'Sup. Corresponsalias'){
//Primero se valida si el tráfico tiene solicitud de reapertura de cuenta await CorresponsalesTraficoSolicitudService.GetSolicitudEliminarReferencia(props.IDTrafico)
CTrafDataService.GetSolicitudReapertura(props.IDTrafico)
.then(resp => { .then(resp => {
if(resp.data.id > 0){ if(resp.data.id > 0){
setSolicitudReapertura(solicitud => ({ setSolicitud(solicitud => ({
...solicitud, ...solicitud,
...resp.data ...resp.data
})) }))
if(Perfil === 'Sup. Facturacion'){//Validar si el usuario puede autorizar la petición showModalBox(17, 'modal-30w', true)
showModalBox(16, 'modal-30w', true)//Si puede se muestra el modal para autorizar la petición
} }
//Se cambia el texto del botón con el que se hace la solicitud }).catch((e) => {
setHeader('Error')
setMsg('Ocurrio un error: ' + e)
setShowMsg(true)
return
})
}
if(Depto === 'Facturacion'){
await CorresponsalesTraficoSolicitudService.GetSolicitudReapertura(props.IDTrafico)
.then(resp => {
if(resp.data.id > 0){
setSolicitud(solicitud => ({
...solicitud,
...resp.data
}))
btnCuenta.current!.innerText = 'Pediente de Autorizar'; btnCuenta.current!.innerText = 'Pediente de Autorizar';
btnCuenta.current!.disabled = true; 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
}
} }
}).catch((e) => {
setHeader('Error')
setMsg('Ocurrio un error: ' + e)
setShowMsg(true)
return
}) })
ClavesPedimentosService.getAllClavesPedimentos() }
}
const LoadEverything = async () => {
let clientes: IClientes[] = [];
await GetSolicitudes();
await ClavesPedimentosService.getAllClavesPedimentos()
.then(response => setClavesPedimentos(response.data)) .then(response => setClavesPedimentos(response.data))
.catch((e: Error) => { .catch((e: Error) => {
setHeader('Error') setHeader('Error')
@ -607,7 +635,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true) setShowMsg(true)
return return
}) })
CorresponsalesDataService.getAll() await CorresponsalesDataService.getAll()
.then((response) => { .then((response) => {
dispatch(populateCatCorresponsales(response.data)) dispatch(populateCatCorresponsales(response.data))
}) })
@ -617,7 +645,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true) setShowMsg(true)
return return
}) })
CTrafDataService.GetCorresponsalesTraficoEstatus() await CTrafDataService.GetCorresponsalesTraficoEstatus()
.then((response) => { .then((response) => {
setDataCatEstatus(response.data) setDataCatEstatus(response.data)
}) })
@ -628,7 +656,7 @@ export default function TraficoCorresponsales (props:IProps) {
return return
}) })
TiposMercanciaService.GetAll() await TiposMercanciaService.GetAll()
.then((response) => { .then((response) => {
setTiposMercancia(response.data); setTiposMercancia(response.data);
}) })
@ -639,7 +667,7 @@ export default function TraficoCorresponsales (props:IProps) {
return return
}); });
CFacDataService.getAll(IDTrafico) await CFacDataService.getAll(IDTrafico)
.then((response) => { .then((response) => {
dispatch(InitCorresponsalesFacturas(IDTrafico)) dispatch(InitCorresponsalesFacturas(IDTrafico))
response.data.forEach((element) => { response.data.forEach((element) => {
@ -652,7 +680,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true) setShowMsg(true)
return return
}) })
CFac3erDataService.getAll(IDTrafico) await CFac3erDataService.getAll(IDTrafico)
.then((response) => { .then((response) => {
dispatch(InitCorresponsalesFacturasTerceros(IDTrafico)) dispatch(InitCorresponsalesFacturasTerceros(IDTrafico))
response.data.forEach((element) => { response.data.forEach((element) => {
@ -665,7 +693,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true) setShowMsg(true)
return return
}) })
CContDataService.getAll(IDTrafico) await CContDataService.getAll(IDTrafico)
.then((response) => { .then((response) => {
dispatch(InitCorresponsalesContenedores(IDTrafico)) dispatch(InitCorresponsalesContenedores(IDTrafico))
response.data.forEach((element) => { response.data.forEach((element) => {
@ -678,7 +706,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true) setShowMsg(true)
return return
}) })
ClientesDataService.getAllClientes(0) await ClientesDataService.getAllClientes(0)
.then((response) => { .then((response) => {
clientes = response.data; clientes = response.data;
setClientes(response.data) setClientes(response.data)
@ -689,7 +717,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true) setShowMsg(true)
return return
}) })
CAntDataService.getAll(IDTrafico) await CAntDataService.getAll(IDTrafico)
.then((response) => { .then((response) => {
dispatch(populateCorresponsalesAnticipos(response.data)) dispatch(populateCorresponsalesAnticipos(response.data))
}) })
@ -699,7 +727,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true) setShowMsg(true)
return return
}) })
CGuiasDataService.getAll(IDTrafico) await CGuiasDataService.getAll(IDTrafico)
.then((response) => { .then((response) => {
dispatch(populateCorresponsalesGuias(response.data)) dispatch(populateCorresponsalesGuias(response.data))
}) })
@ -709,7 +737,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true) setShowMsg(true)
return return
}) })
ProvDataService.getAll(0) await ProvDataService.getAll(0)
.then((response) => { .then((response) => {
dispatch(populateCatProveedores(response.data)) dispatch(populateCatProveedores(response.data))
}) })
@ -719,7 +747,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true) setShowMsg(true)
return return
}) })
CCatTiposDocumentos.getAll(2206, 1) await CCatTiposDocumentos.getAll(2206, 1)
.then((response) => { .then((response) => {
setCatTiposDocumentos(response.data) setCatTiposDocumentos(response.data)
}) })
@ -729,7 +757,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true) setShowMsg(true)
return return
}) })
CCatTiposDocumentos.getAll(2206, 2) await CCatTiposDocumentos.getAll(2206, 2)
.then((response) => { .then((response) => {
setCatTiposDocumentosInfoCorresponsal(response.data) setCatTiposDocumentosInfoCorresponsal(response.data)
}) })
@ -739,7 +767,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true) setShowMsg(true)
return return
}) })
CCueCompService.GetAllEstatus() await CCueCompService.GetAllEstatus()
.then((response) => { .then((response) => {
dispatch( dispatch(
populateCorresponsalesCuentasComplementariasEstatus(response.data) populateCorresponsalesCuentasComplementariasEstatus(response.data)
@ -751,7 +779,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true) setShowMsg(true)
return return
}) })
CTrafDataService.GetAll(IDTrafico) await CTrafDataService.GetAll(IDTrafico)
.then((response) => { .then((response) => {
setFolioTrafico(response.data.folioGemco) setFolioTrafico(response.data.folioGemco)
setProceso(response.data.proceso) setProceso(response.data.proceso)
@ -797,7 +825,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true) setShowMsg(true)
return return
}) })
CContaDataService.Get(IDTrafico, 2, 1) await CContaDataService.Get(IDTrafico, 2, 1)
.then((response) => { .then((response) => {
setRechazosTrafico(response.data) setRechazosTrafico(response.data)
}) })
@ -807,7 +835,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true) setShowMsg(true)
return return
}) })
CContaDataService.GetHistorial(IDTrafico) await CContaDataService.GetHistorial(IDTrafico)
.then((response) => { .then((response) => {
setRechazosContabilidad(response.data) setRechazosContabilidad(response.data)
}) })
@ -817,7 +845,7 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true) setShowMsg(true)
return return
}) })
PedimentosConsolidadosService.GetAll(IDTrafico) await PedimentosConsolidadosService.GetAll(IDTrafico)
.then((resp) => { .then((resp) => {
dispatch(populatePedimentos(resp.data)) dispatch(populatePedimentos(resp.data))
}) })
@ -2062,6 +2090,9 @@ export default function TraficoCorresponsales (props:IProps) {
mask="_" mask="_"
onValueChange={(values: any) => { onValueChange={(values: any) => {
const { value } = values const { value } = values
if(value.length === 0 || value === 0){
setPedimento(0)
}
if(value.length === 7 ){ if(value.length === 7 ){
CTrafDataService.ValidaTraficoDuplicado(Aduana, Patente, value, IDTrafico).then( response => { CTrafDataService.ValidaTraficoDuplicado(Aduana, Patente, value, IDTrafico).then( response => {
if(response.data !== ""){ if(response.data !== ""){
@ -4324,7 +4355,11 @@ export default function TraficoCorresponsales (props:IProps) {
) : null} ) : null}
{LoadComponent===15 ? ( {LoadComponent===15 ? (
<div style={{ height: '250px', overflowX: 'hidden' }}> <div style={{ height: '250px', overflowX: 'hidden' }}>
<SolicitudReapertura idTrafico={IDTrafico} idUsuario={UserId} close={()=>{ <CrearSolicitud
idTrafico={IDTrafico}
idUsuario={UserId}
title='Solicitud de Reapertura de Cuenta'
close={()=>{
setShowModal(false) setShowModal(false)
if(Perfil === 'Sup. Facturacion'){ if(Perfil === 'Sup. Facturacion'){
setHeader('Informativo'); setHeader('Informativo');
@ -4340,12 +4375,15 @@ export default function TraficoCorresponsales (props:IProps) {
setShowMsg(true) setShowMsg(true)
return; return;
} }
}}/> }
}/>
</div> </div>
) : null} ) : null}
{LoadComponent===16 ? ( {LoadComponent===16 ? (
<div style={{ height: '475px', overflowX: 'hidden' }}> <div style={{ height: '475px', overflowX: 'hidden' }}>
<AutorizarReapertura 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)=>{ close={(estado:number)=>{
let texto = estado === 0 ? 'rechazada' : 'autorizada' let texto = estado === 0 ? 'rechazada' : 'autorizada'
setProceso(estado === 2 ? 3 : 4) setProceso(estado === 2 ? 3 : 4)
@ -4357,6 +4395,22 @@ export default function TraficoCorresponsales (props:IProps) {
}}/> }}/>
</div> </div>
) : null} ) : 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.Body>
</Modal> </Modal>
<MsgInformativo <MsgInformativo

@ -24,12 +24,12 @@ export default function Dashboard(props: IProps) {
<br /> <br />
<Container> <Container>
<Row xs={1} md={3} className='g-4'> <Row xs={1} md={3} className='g-4'>
{[['Direccion', 'Sistemas', 'Corresponsalias'].includes(Depto) ? <DashboardCorresponsales /> : ''].map( {[['Direccion', 'Sistemas', 'Corresponsalias'].includes(Depto) ? <DashboardCorresponsales Perfil={Perfil} /> : ''].map(
(item) => { (item) => {
return <React.Fragment>{item}</React.Fragment> return <React.Fragment>{item}</React.Fragment>
} }
)} )}
{[['Direccion', 'Sistemas', 'Contabilidad'].includes(Depto) ? <DashboardContabilidad Depto={Depto} /> : ''].map((item) => { {[['Direccion', 'Sistemas', 'Contabilidad'].includes(Depto) ? <DashboardContabilidad Depto={Depto} Perfil={Perfil}/> : ''].map((item) => {
return <React.Fragment>{item}</React.Fragment> return <React.Fragment>{item}</React.Fragment>
})} })}
{[['Direccion', 'Sistemas', 'Facturacion'].includes(Depto) ? <DashboardFacturacion Depto={Depto} Perfil={Perfil}/> : ''].map((item) => { {[['Direccion', 'Sistemas', 'Facturacion'].includes(Depto) ? <DashboardFacturacion Depto={Depto} Perfil={Perfil}/> : ''].map((item) => {

@ -8,6 +8,7 @@ import DashboardDataService from '../../Services/Dashboard/Dashboard.Contabilida
import DashboardCorresponsales from './DashboardCorresponsales' import DashboardCorresponsales from './DashboardCorresponsales'
interface IProps { interface IProps {
Depto: string; Depto: string;
Perfil:string;
} }
export const DashboardContabilidad: FC<IProps> = (props) => { export const DashboardContabilidad: FC<IProps> = (props) => {
@ -55,7 +56,7 @@ export const DashboardContabilidad: FC<IProps> = (props) => {
return ( return (
<> <>
{ {
props.Depto === 'Contabilidad' ? <DashboardCorresponsales/> : "" props.Depto === 'Contabilidad' ? <DashboardCorresponsales Perfil={props.Perfil}/> : ""
} }
<Col> <Col>
<Card style={{ width: '18rem' }} className='dashboardComponentFont'> <Card style={{ width: '18rem' }} className='dashboardComponentFont'>

@ -5,14 +5,20 @@ import DashboardDataService from '../../Services/Dashboard/Dashboard.Corresponsa
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import ReactApexChart from 'react-apexcharts'; import ReactApexChart from 'react-apexcharts';
import { ApexOptions } from 'apexcharts'; import { ApexOptions } from 'apexcharts';
import { IconContext } from 'react-icons';
import { FcSurvey } from 'react-icons/fc';
import { MdTimer } from 'react-icons/md';
interface IProps {} interface IProps {
Perfil:string
}
export default function DashboardCorresponsales(props: IProps) { export default function DashboardCorresponsales(props: IProps) {
let navigate = useNavigate(); let navigate = useNavigate();
const [TotalCorresponsales, setTotalCorresponsales] = useState(0); const [TotalCorresponsales, setTotalCorresponsales] = useState(0);
const [labels, setlabels] = useState<string[]>([]); const [labels, setlabels] = useState<string[]>([]);
const [series, setseries] = useState<number[]>([]); const [series, setseries] = useState<number[]>([]);
const [Solicitudes, setSolicitudes] = useState(0);
//const [TipoCambio, setTipoCambio] = useState(0) //const [TipoCambio, setTipoCambio] = useState(0)
const [CircleOptions, setCirleOpcions] = useState<ApexOptions>({ const [CircleOptions, setCirleOpcions] = useState<ApexOptions>({
labels: [ labels: [
@ -32,6 +38,9 @@ export default function DashboardCorresponsales(props: IProps) {
}); });
useEffect(() => { useEffect(() => {
DashboardDataService.getSolicitudesEliminarCuenta().then((response) => {
setSolicitudes(response.data.total)
}).catch((e: Error) => {return;})
DashboardDataService.getCorresponsales() DashboardDataService.getCorresponsales()
.then((response) => { .then((response) => {
console.log(response.data); console.log(response.data);
@ -144,6 +153,31 @@ export default function DashboardCorresponsales(props: IProps) {
</Card.Footer> </Card.Footer>
</Card> </Card>
</Col> </Col>
{props.Perfil === 'Sup. Corresponsalias' ?
<Col>
<Card style={{ width: '18rem' }} className='dashboardComponentFont'>
<Card.Header>Facturación </Card.Header>
<Card.Body style={{ paddingBottom: '50px' }}>
<Card.Title>Solicitudes para eliminar cuenta<br/><br/></Card.Title>
<div style={{ fontSize: '6em' }} className='text-center'>
<IconContext.Provider value={{ color: '#ff671b' }}>
<FcSurvey style={{fontSize:'larger'}}/>
<MdTimer style={{fontSize:'70px', margin:'0 0 0 -4rem', position:"absolute", bottom: '6rem'}}/>
</IconContext.Provider>
{Solicitudes}
</div>
</Card.Body>
<Card.Footer style={{ paddingRight: '5px' }}>
<Link
to='../RptCorresponsalesTraficos/proc=1/modo=2'
style={{ textDecoration: 'none', float: 'right', paddingRight: '10px' }}
>
Ver mas...
</Link>
</Card.Footer>
</Card>
</Col> : ""
}
</> </>
); );
}; };

@ -111,7 +111,7 @@ export const DashboardFacturacion: FC<IProps> = (props) => {
return ( return (
<> <>
{ {
props.Depto === 'Facturacion' ? <DashboardCorresponsales/> : "" props.Depto === 'Facturacion' ? <DashboardCorresponsales Perfil={props.Perfil}/> : ""
} }
<Col> <Col>
<Card style={{ width: '18rem' }} className='dashboardComponentFont'> <Card style={{ width: '18rem' }} className='dashboardComponentFont'>

@ -41,8 +41,9 @@ import { InitCorresponsalesContenedores, addCorresponsalesContenedores } from '.
import ICorresponsalContenedores from '../../Interfaces/Corresponsales/ICorresponsalContenedores' import ICorresponsalContenedores from '../../Interfaces/Corresponsales/ICorresponsalContenedores'
import ICorresponsalFacturas from '../../Interfaces/Corresponsales/ICorresponsalFacturas' import ICorresponsalFacturas from '../../Interfaces/Corresponsales/ICorresponsalFacturas'
import ICatProveedores from '../../Interfaces/Catalogos/ICatProveedores' import ICatProveedores from '../../Interfaces/Catalogos/ICatProveedores'
import { FaCrow } from 'react-icons/fa' import { FaCrow, FaTrash } from 'react-icons/fa'
/* import '../../css/generic01.css' */ import { CrearSolicitud } from '../Corresponsales/SolicitudReapertura/CrearSolicitud'
import '../../css/generic01.css'
interface IProps {} interface IProps {}
@ -71,6 +72,7 @@ export default function RptCorresponsalesTraficos(props: IProps) {
const [filteredData, setFilteredData] = useState<ICorresponsalTrafico[]>([]) const [filteredData, setFilteredData] = useState<ICorresponsalTrafico[]>([])
const [show, setShowMsg] = useState(false) const [show, setShowMsg] = useState(false)
const [ShowModal, setShowModal] = useState(false) const [ShowModal, setShowModal] = useState(false)
const [ShowModalSolicitud, setShowModalSolicitud] = useState(false)
const [header, setHeader] = useState('') const [header, setHeader] = useState('')
const [msg, setMsg] = useState('') const [msg, setMsg] = useState('')
const [Inicio, setInicio] = useState(currentDate(-365)) const [Inicio, setInicio] = useState(currentDate(-365))
@ -93,7 +95,22 @@ export default function RptCorresponsalesTraficos(props: IProps) {
ICatCorresponsales[] ICatCorresponsales[]
>([]) >([])
const hiddenFileInputRef = useRef<HTMLInputElement>(null); const hiddenFileInputRef = useRef<HTMLInputElement>(null);
const [Deleting, setDeleting] = useState(false);
const [columnDefs] = useState([ const [columnDefs] = useState([
{
field: 'acciones',
headerName: '',
width: 50,
hide: !Perfil.includes('Corresponsalias'),
cellRenderer: (params: any) => {
return (
<span style={{visibility: params.data.tieneSolicitud ? 'hidden' : 'visible'}}>
<FaTrash color='red' cursor='pointer' onClick={(e) => {setDeleting(true)}}/>
</span>
)
},
},
{ field: 'id', headerName: 'id', width: 70, sortable: true, filter: true }, { field: 'id', headerName: 'id', width: 70, sortable: true, filter: true },
{ {
field: 'proceso', field: 'proceso',
@ -275,8 +292,20 @@ export default function RptCorresponsalesTraficos(props: IProps) {
}, []) }, [])
function getParams(e: RowClickedEvent) { function getParams(e: RowClickedEvent) {
if(Deleting){
if(e.data.pedimento > 0){
setHeader('Error')
setMsg('Favor de borrar el pedimento para poder eliminar la referencia.')
setShowMsg(true)
setDeleting(false)
return;
}
setIDTrafico(e.data.id)
setShowModalSolicitud(true)
}else{
AbreTrafico(e.data.id) AbreTrafico(e.data.id)
} }
}
function AbreTrafico(id: number) { function AbreTrafico(id: number) {
dispatch(InitCorresponsalesFacturas(IDTrafico)) dispatch(InitCorresponsalesFacturas(IDTrafico))
@ -535,6 +564,10 @@ export default function RptCorresponsalesTraficos(props: IProps) {
}) })
} }
const handleClose = () => {
setShowModalSolicitud(false)
setDeleting(false)
}
return ( return (
<div> <div>
<Card> <Card>
@ -768,11 +801,46 @@ export default function RptCorresponsalesTraficos(props: IProps) {
IDTrafico={IDTrafico} IDTrafico={IDTrafico}
onClose={function (val: boolean): void { onClose={function (val: boolean): void {
setShowModal(false) setShowModal(false)
generaReporte()
}} }}
/> />
</div> </div>
</Modal.Body> </Modal.Body>
</Modal> </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 Referencia'
close={()=>{
setShowModalSolicitud(false)
setDeleting(false)
generaReporte()
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> </div>
) )
} }

@ -1,4 +1,4 @@
export interface DTOTraficoSolicitudReapertura{ export interface DTOTraficoSolicitud{
id: number, id: number,
idTrafico: number, idTrafico: number,
idUsuarioSolicita: number, idUsuarioSolicita: number,

@ -45,4 +45,5 @@ export default interface ICorresponsalTrafico {
causaRectificacion: string, causaRectificacion: string,
totalHonorariosAA: number; totalHonorariosAA: number;
totalGastosTerceros: number; totalGastosTerceros: number;
tieneSolicitud: number;
} }

@ -1,4 +1,4 @@
export interface ICorresponsalTraficoSolicitudReapertura{ export interface ICorresponsalTraficoSolicitud{
id:number, id:number,
idTrafico: number, idTrafico: number,
idUsuarioSolicita: number, idUsuarioSolicita: number,

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

@ -0,0 +1,19 @@
import { DTOTraficoSolicitud } from "../../DTO/Corresponsales/DTOTraficoSolicitud"
import { ICorresponsalTraficoSolicitud } from "../../Interfaces/Corresponsales/ICorresponsalTraficoSolicitud"
import http from "../common/http-common";
class TraficoSolicitudServices {
AppendSolicitudReapertura(solicitud: ICorresponsalTraficoSolicitud){
return http.post<ICorresponsalTraficoSolicitud>(`/Corresponsalias/Solicitudes/Reapertura/Append`, solicitud)
}
AppendSolicitudEliminarReferencia(solicitud: ICorresponsalTraficoSolicitud){
return http.post<ICorresponsalTraficoSolicitud>(`/Corresponsalias/Solicitudes/EliminarCuenta/Append`, solicitud)
}
GetSolicitudReapertura(idTrafico: number){
return http.get<DTOTraficoSolicitud>(`/Corresponsalias/Solicitudes/Reapertura/Get?idTrafico=${idTrafico}`)
}
GetSolicitudEliminarReferencia(idTrafico: number){
return http.get<DTOTraficoSolicitud>(`/Corresponsalias/Solicitudes/EliminarCuenta/Get?idTrafico=${idTrafico}`)
}
}
export default new TraficoSolicitudServices()

@ -8,5 +8,8 @@ class Dashboard_Corresponsales_DataService {
getTipoCambio(Fecha: string) { getTipoCambio(Fecha: string) {
return http.get<number>(`/Dashboard/Corresponsales/GetTipoCambio?Fecha=${Fecha}`); return http.get<number>(`/Dashboard/Corresponsales/GetTipoCambio?Fecha=${Fecha}`);
} }
getSolicitudesEliminarCuenta(){
return http.get<DashboardCorresponsales>(`/Dashboard/Corresponsales/SolicitudesEliminarCuenta`);
}
} }
export default new Dashboard_Corresponsales_DataService(); export default new Dashboard_Corresponsales_DataService();

@ -66,10 +66,10 @@ root.render(
/> />
} }
/> />
<Route {/* <Route
path="/DashboardCorresponsales" path="/DashboardCorresponsales"
element={<DashboardCorresponsales />} element={<DashboardCorresponsales />}
/> /> */}
<Route path="/Dashboard" element={<Dashboard />} /> <Route path="/Dashboard" element={<Dashboard />} />
<Route <Route
path="/RptCorresponsalesTraficos/:proc/:modo" path="/RptCorresponsalesTraficos/:proc/:modo"

@ -46,7 +46,8 @@ const CorresponsalesTrafico: ICorresponsalTrafico[] = [{
cargoA: 0, cargoA: 0,
causaRectificacion: '', causaRectificacion: '',
totalHonorariosAA: 0, totalHonorariosAA: 0,
totalGastosTerceros: 0 totalGastosTerceros: 0,
tieneSolicitud: 0
}] }]
const initialState = { CorresponsalesTrafico } const initialState = { CorresponsalesTrafico }

Loading…
Cancel
Save