Ocultar el boton para crear solicitudes cuando la referencia ya tiene una creada, creacion del indicador de solicitudes para el supervisor de corresponsalias

feature/solicitar_eliminacion_de_referencia_20240219
Felix Morales 7 months ago
parent 9b3b75bd0a
commit 2871512547
  1. 8
      src/Classes/Corresponsales/CCorresponsalesTrafico.ts
  2. 30
      src/Components/Corresponsales/SolicitudReapertura/AutorizarSolicitud.tsx
  3. 30
      src/Components/Corresponsales/SolicitudReapertura/CrearSolicitud.tsx
  4. 44
      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. 8
      src/Components/Reportes/RptCorresponsalesTraficos.tsx
  10. 1
      src/Interfaces/Corresponsales/ICorresponsalTrafico.ts
  11. 17
      src/Services/Corresponsalias/Corresponsales.Trafico.Solicitud.Service.ts
  12. 3
      src/Services/Dashboard/Dashboard.Corresponsales.Services.ts
  13. 4
      src/index.tsx
  14. 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
} }
} }
} }

@ -21,6 +21,10 @@ export const AutorizarSolicitud:React.FC<IProps> = (props) => {
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 [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) : ''
@ -50,7 +54,31 @@ export const AutorizarSolicitud:React.FC<IProps> = (props) => {
motivoRechazo: Motivo, motivoRechazo: Motivo,
estado: SelectedOption estado: SelectedOption
} }
CorresponsalesTraficoSolicitudService.AppendSolicitud(solicitud, Perfil)! 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)

@ -16,8 +16,12 @@ export const CrearSolicitud:React.FC<IProps> = (props) => {
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) : ''
}) })
@ -45,7 +49,29 @@ export const CrearSolicitud:React.FC<IProps> = (props) => {
motivoRechazo: "", motivoRechazo: "",
estado: Perfil.includes('Sup') ? 2 : 1 //Si es un supervisor se asigna el estado de la solicitud como autorizada desde que se crea estado: Perfil.includes('Sup') ? 2 : 1 //Si es un supervisor se asigna el estado de la solicitud como autorizada desde que se crea
} }
CorresponsalesTraficoSolicitudService.AppendSolicitud(solicitud, Perfil)! if(Depto === 'Facturacion'){
AppendSolicitudReapertura(solicitud)
}
if(Depto === 'Corresponsalias'){
AppendSolicitudEliminarReferencia(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()
}) })

@ -583,28 +583,45 @@ export default function TraficoCorresponsales (props:IProps) {
} }
const GetSolicitudes = async () => { const GetSolicitudes = async () => {
await CorresponsalesTraficoSolicitudService.GetSolicitud(props.IDTrafico, Perfil)! if(Perfil === 'Sup. Corresponsalias'){
await CorresponsalesTraficoSolicitudService.GetSolicitudEliminarReferencia(props.IDTrafico)
.then(resp => { .then(resp => {
if(resp.data.id > 0){ if(resp.data.id > 0){
setSolicitud(solicitud => ({ setSolicitud(solicitud => ({
...solicitud, ...solicitud,
...resp.data ...resp.data
})) }))
if(Perfil === 'Sup. Corresponsalias'){//Si el usuario es supervisor de corresponsalias showModalBox(17, 'modal-30w', true)
showModalBox(17, 'modal-30w', true)//Se muestra el modal para autorizar la petición }
} }).catch((e) => {
if(Perfil.includes('Facturacion')){//Valida si es un usuario de facturacion setHeader('Error')
//Se cambian las propiedades del botón con el que se hace la solicitud setMsg('Ocurrio un error: ' + e)
btnCuenta.current!.innerText = 'Pediente de Autorizar'; setShowMsg(true)
btnCuenta.current!.disabled = true; return
if(Perfil === 'Sup. Facturacion'){//Si el usuario es supervisor })
showModalBox(16, 'modal-30w', true)//Se muestra el modal para autorizar la petición }
} 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!.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
}) })
}
} }
const LoadEverything = async () => { const LoadEverything = async () => {
@ -2073,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 !== ""){

@ -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'>

@ -105,7 +105,7 @@ export default function RptCorresponsalesTraficos(props: IProps) {
hide: !Perfil.includes('Corresponsalias'), hide: !Perfil.includes('Corresponsalias'),
cellRenderer: (params: any) => { cellRenderer: (params: any) => {
return ( return (
<span> <span style={{visibility: params.data.tieneSolicitud ? 'hidden' : 'visible'}}>
<FaTrash color='red' cursor='pointer' onClick={(e) => {setDeleting(true)}}/> <FaTrash color='red' cursor='pointer' onClick={(e) => {setDeleting(true)}}/>
</span> </span>
) )
@ -300,6 +300,7 @@ export default function RptCorresponsalesTraficos(props: IProps) {
setDeleting(false) setDeleting(false)
return; return;
} }
setIDTrafico(e.data.id)
setShowModalSolicitud(true) setShowModalSolicitud(true)
}else{ }else{
AbreTrafico(e.data.id) AbreTrafico(e.data.id)
@ -800,6 +801,7 @@ 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>
@ -817,9 +819,11 @@ export default function RptCorresponsalesTraficos(props: IProps) {
<CrearSolicitud <CrearSolicitud
idTrafico={IDTrafico} idTrafico={IDTrafico}
idUsuario={UserId} idUsuario={UserId}
title='Solicitud Para Eliminar Trafico' title='Solicitud Para Eliminar Referencia'
close={()=>{ close={()=>{
setShowModalSolicitud(false) setShowModalSolicitud(false)
setDeleting(false)
generaReporte()
if(Perfil === 'Sup. Corresponsalias'){ if(Perfil === 'Sup. Corresponsalias'){
setHeader('Informativo'); setHeader('Informativo');
setMsg('Referencia eliminada correctamente.') setMsg('Referencia eliminada correctamente.')

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

@ -2,14 +2,17 @@ import { DTOTraficoSolicitud } from "../../DTO/Corresponsales/DTOTraficoSolicitu
import { ICorresponsalTraficoSolicitud } from "../../Interfaces/Corresponsales/ICorresponsalTraficoSolicitud" import { ICorresponsalTraficoSolicitud } from "../../Interfaces/Corresponsales/ICorresponsalTraficoSolicitud"
import http from "../common/http-common"; import http from "../common/http-common";
class TraficoSolicitudServices { class TraficoSolicitudServices {
AppendSolicitud(solicitud: ICorresponsalTraficoSolicitud, Perfil: string){ AppendSolicitudReapertura(solicitud: ICorresponsalTraficoSolicitud){
if(Perfil.includes('Corresponsalias')){return http.post<ICorresponsalTraficoSolicitud>(`/Corresponsalias/Solicitudes/EliminarCuenta/Append`, solicitud)} return http.post<ICorresponsalTraficoSolicitud>(`/Corresponsalias/Solicitudes/Reapertura/Append`, solicitud)
if(Perfil.includes('Facturacion')){return http.post<ICorresponsalTraficoSolicitud>(`/Corresponsalias/Solicitudes/Reapertura/Append`, solicitud)}
} }
AppendSolicitudEliminarReferencia(solicitud: ICorresponsalTraficoSolicitud){
GetSolicitud(idTrafico: number, Perfil: string){ return http.post<ICorresponsalTraficoSolicitud>(`/Corresponsalias/Solicitudes/EliminarCuenta/Append`, solicitud)
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}`)} 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}`)
} }
} }

@ -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();

@ -65,10 +65,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