feature agregar filtros para rastrear traficos, cambio de dashboard de facturacion, se agrega version de la app en login

feature/ConsolidarPedimentos_20231229
Felix Morales 1 year ago
parent d3063024e2
commit 83fd3b457a
  1. 50
      src/Components/Corresponsales/TraficoCorresponsales.tsx
  2. 2
      src/Components/Dashboard/Dashboard.tsx
  3. 4
      src/Components/Dashboard/DashboardContabilidad.tsx
  4. 47
      src/Components/Dashboard/DashboardFacturacion.tsx
  5. 2
      src/Components/Login/login.tsx
  6. 38
      src/Components/Reportes/RptCorresponsalesTraficos.tsx
  7. 9
      src/Components/Reportes/RptCorresponsalesTraficosHst.tsx
  8. 25
      src/Components/Reportes/customCells/progressBar.tsx
  9. 3
      src/DTO/Corresponsales/DTORptCorresponsalesTraficos.ts
  10. 2
      src/Services/Reportes/reportes.services.ts
  11. 2
      src/index.tsx

@ -293,7 +293,7 @@ export default function TraficoCorresponsales (props:IProps) {
const [TieneArchivoZIPGEMCO, setTieneArchivoZIPGEMCO] = useState(0) const [TieneArchivoZIPGEMCO, setTieneArchivoZIPGEMCO] = useState(0)
const [TieneArchivoZIPCorresponsal, setTieneArchivoZIPCorresponsal] = const [TieneArchivoZIPCorresponsal, setTieneArchivoZIPCorresponsal] =
useState(0) useState(0)
const [IDEstatusContabilidad, setIDEstatusContabilidad] = useState(0) const [IDRazonRechazo, setIDRazonRechazo] = useState(0)
const [AduanaH, setAduanaH] = useState('') const [AduanaH, setAduanaH] = useState('')
const [PatenteH, setPatenteH] = useState('') const [PatenteH, setPatenteH] = useState('')
const [PedimentoH, setPedimentoH] = useState('') const [PedimentoH, setPedimentoH] = useState('')
@ -826,9 +826,10 @@ export default function TraficoCorresponsales (props:IProps) {
} }
}, [Proceso, IDTrafico, Depto, []]) }, [Proceso, IDTrafico, Depto, []])
useEffect(() => { /*useEffect(() => {
console.log('cargado todo 1')
LoadEverything() LoadEverything()
}, []) }, [])*/
useEffect(() => { useEffect(() => {
LoadEverything() LoadEverything()
@ -1056,7 +1057,7 @@ export default function TraficoCorresponsales (props:IProps) {
const saveCurrentStep = () => { const saveCurrentStep = () => {
if(Depto === 'Corresponsalias') saveCorresponsaliasStep() if(Depto === 'Corresponsalias') saveCorresponsaliasStep()
else if(Depto === 'Contabilidad') saveContabilidadStep() else if(Depto === 'Contabilidad') saveContabilidadAndFacturacionSteps()
} }
const saveFinalStep = async (data: DTOTraficoCompleto) => { const saveFinalStep = async (data: DTOTraficoCompleto) => {
CTrafDataService.ValidateComplete(data) CTrafDataService.ValidateComplete(data)
@ -1099,19 +1100,19 @@ export default function TraficoCorresponsales (props:IProps) {
} }
} }
const saveContabilidadStep = async () => { const saveContabilidadAndFacturacionSteps = async () => {
if(IDEstatusContabilidad === 0){ if(IDRazonRechazo === 0){
setHeader('Informativo') setHeader('Informativo')
setMsg('Debe aceptar el tráfico o seleccionar un motivo de rechazo.') setMsg('Debe aceptar el tráfico o seleccionar un motivo de rechazo.')
setShowMsg(true) setShowMsg(true)
return return
} }
let arrStatus = mCCCEstatus.filter((a) => { let arrStatus = mCCCEstatus.filter((a) => {
if (a.id === IDEstatusContabilidad) { if (a.id === IDRazonRechazo) {
return a return a
} }
}); });
if(IDEstatusContabilidad === 7){ if(IDRazonRechazo === 7){
let data: DTOTraficoCompleto = { let data: DTOTraficoCompleto = {
id: IDTrafico, id: IDTrafico,
idUsuario: UserId, idUsuario: UserId,
@ -1135,16 +1136,6 @@ export default function TraficoCorresponsales (props:IProps) {
} }
} }
const saveFacturacionStep = () => {
let data: DTOTraficoCompleto = {
id: IDTrafico,
idUsuario: UserId,
estatus: 5,
comentarios: "Tráfico facturado."
}
saveFinalStep(data)
}
const rejectCurrentStep = (data:ICorresponsalesTraficoContabilidad) => { const rejectCurrentStep = (data:ICorresponsalesTraficoContabilidad) => {
CContaDataService.Append(data) CContaDataService.Append(data)
.then( () => { .then( () => {
@ -2640,11 +2631,11 @@ export default function TraficoCorresponsales (props:IProps) {
<Form.Control <Form.Control
as="select" as="select"
onChange={(e) => { onChange={(e) => {
setIDEstatusContabilidad(parseInt(e.target.value)) setIDRazonRechazo(parseInt(e.target.value))
}} }}
className="form-select form-select-sm" className="form-select form-select-sm"
style={{ width: '550px' }} style={{ width: '550px' }}
value={IDEstatusContabilidad} value={IDRazonRechazo}
> >
<option value="0">-Seleccione-</option> <option value="0">-Seleccione-</option>
{mCCCEstatus {mCCCEstatus
@ -2668,7 +2659,7 @@ export default function TraficoCorresponsales (props:IProps) {
paddingRight: '25px' paddingRight: '25px'
}} }}
onClick={() => { onClick={() => {
saveContabilidadStep() saveContabilidadAndFacturacionSteps()
}} }}
> >
Guardar Guardar
@ -2678,23 +2669,6 @@ export default function TraficoCorresponsales (props:IProps) {
)} )}
</Col> </Col>
</Row> </Row>
<Row style={{display: Depto === 'Facturacion' && Proceso === 4 ? 'flex': 'none'}}>
<Col xs={12} style={{textAlign:'end'}}>
<Button
variant="primary"
size="sm"
style={{
paddingLeft: '25px',
paddingRight: '25px'
}}
onClick={() => {
saveFacturacionStep();
}}
>
Terminar
</Button>
</Col>
</Row>
<Row style={{padding: "5px 0"}}> <Row style={{padding: "5px 0"}}>
<Col xs={6} style={{ textAlign: 'center' }}> <Col xs={6} style={{ textAlign: 'center' }}>
Trafico Corresponsales: Rechazo(s) Trafico Corresponsales: Rechazo(s)

@ -29,7 +29,7 @@ export default function Dashboard(props: IProps) {
{[['Direcccion', 'Sistemas', 'Contabilidad'].includes(Depto) ? <DashboardContabilidad /> : ''].map((item) => { {[['Direcccion', 'Sistemas', 'Contabilidad'].includes(Depto) ? <DashboardContabilidad /> : ''].map((item) => {
return <React.Fragment>{item}</React.Fragment> return <React.Fragment>{item}</React.Fragment>
})} })}
{[['Direcccion', 'Sistemas', 'Facturacion'].includes(Depto) ? <DashboardFacturacion /> : ''].map((item) => { {[['Direcccion', 'Sistemas', 'Facturacion'].includes(Depto) ? <DashboardFacturacion Depto={Depto}/> : ''].map((item) => {
return <React.Fragment>{item}</React.Fragment> return <React.Fragment>{item}</React.Fragment>
})} })}
</Row> </Row>

@ -126,8 +126,8 @@ export const DashboardContabilidad: FC<IProps> = (props) => {
<Card.Img variant='top' src='' onClick={() => {}} /> <Card.Img variant='top' src='' onClick={() => {}} />
<div style={{ fontSize: '6em' }} className='text-center'> <div style={{ fontSize: '6em' }} className='text-center'>
<IconContext.Provider value={{ color: '#ff0018' }}> <IconContext.Provider value={{ color: '#ff0018' }}>
<FcSurvey /> <FcSurvey style={{fontSize:'larger'}}/>
<FaReply style={{fontSize:'50px', margin:'0 0 0 -3.8rem', position:"absolute", bottom: '7rem'}}/> <FaReply style={{fontSize:'50px', margin:'0 0 0 -4rem', position:"absolute", bottom: '6.5rem'}}/>
</IconContext.Provider> </IconContext.Provider>
{RechazosContabilidad} {RechazosContabilidad}
</div> </div>

@ -3,15 +3,21 @@ import { Card, Col, Container, Row } from 'react-bootstrap'
import { IconContext } from 'react-icons' import { IconContext } from 'react-icons'
import { BsCashCoin } from 'react-icons/bs' import { BsCashCoin } from 'react-icons/bs'
import { Link, useNavigate } from 'react-router-dom' import { Link, useNavigate } from 'react-router-dom'
import DashboardDataService from '../../Services/Dashboard/Dashboard.Facturacion.Service' import DashboardFacturacionDataService from '../../Services/Dashboard/Dashboard.Facturacion.Service'
import DashboardContaDataService from '../../Services/Dashboard/Dashboard.Contabilidad.Service'
import { ApexOptions } from 'apexcharts' import { ApexOptions } from 'apexcharts'
import ReactApexChart from 'react-apexcharts' import ReactApexChart from 'react-apexcharts'
import { FaReply } from 'react-icons/fa'
import { FcSurvey } from 'react-icons/fc'
interface IProps {} interface IProps {
Depto: string;
}
export const DashboardFacturacion: FC<IProps> = (props) => { export const DashboardFacturacion: FC<IProps> = (props) => {
const [labels, setlabels] = useState<string[]>([]); const [labels, setlabels] = useState<string[]>([]);
const [series, setseries] = useState<number[]>([]); const [series, setseries] = useState<number[]>([]);
const [RechazosContabilidad, setRechazosContabilidad] = useState(0);
const navigate = useNavigate(); const navigate = useNavigate();
const [ChartOptions, setChartOptions] = useState<ApexOptions>({ const [ChartOptions, setChartOptions] = useState<ApexOptions>({
labels: [ labels: [
@ -31,7 +37,12 @@ export const DashboardFacturacion: FC<IProps> = (props) => {
}); });
useEffect(() => { useEffect(() => {
DashboardDataService.getFacturacion() DashboardContaDataService.getTotalRechazosContabilidad().then((response) => {
setRechazosContabilidad(response.data.total)
}).catch((e: Error) => {
return;
})
DashboardFacturacionDataService.getFacturacion()
.then((response) => { .then((response) => {
console.log(response.data); console.log(response.data);
let labels: string[] = []; let labels: string[] = [];
@ -47,7 +58,7 @@ export const DashboardFacturacion: FC<IProps> = (props) => {
setChartOptions({ setChartOptions({
labels: labels, labels: labels,
colors: ['#EB984E', '#2288D3', '#E52626', ], colors: ['#2288D3', '#E52626', ],
legend: { position: 'bottom' }, legend: { position: 'bottom' },
plotOptions: { plotOptions: {
pie: { pie: {
@ -77,9 +88,6 @@ export const DashboardFacturacion: FC<IProps> = (props) => {
navigate('../RptCorresponsalesTraficos/proc=3/modo=1'); navigate('../RptCorresponsalesTraficos/proc=3/modo=1');
break; break;
case 1: case 1:
navigate('../RptCorresponsalesTraficos/proc=4/modo=1');
break;
case 2:
navigate('../RptCorresponsalesTraficos/proc=3/modo=2'); navigate('../RptCorresponsalesTraficos/proc=3/modo=2');
break; break;
} }
@ -121,6 +129,31 @@ export const DashboardFacturacion: FC<IProps> = (props) => {
</Card.Footer> </Card.Footer>
</Card> </Card>
</Col> </Col>
{props.Depto === 'Facturacion' ?
<Col>
<Card style={{ width: '18rem' }} className='dashboardComponentFont'>
<Card.Header>Contabilidad </Card.Header>
<Card.Body style={{ paddingBottom: '50px' }}>
<Card.Title>&nbsp;Rechazos para corresponsalias<br/><br/></Card.Title>
<div style={{ fontSize: '6em' }} className='text-center'>
<IconContext.Provider value={{ color: '#ff0018' }}>
<FcSurvey style={{fontSize:'larger'}}/>
<FaReply style={{fontSize:'50px', margin:'0 0 0 -4rem', position:"absolute", bottom: '6.5rem'}}/>
</IconContext.Provider>
{RechazosContabilidad}
</div>
</Card.Body>
<Card.Footer style={{ paddingRight: '5px' }}>
<Link
to='../RptCorresponsalesTraficos/proc=2/modo=4'
style={{ textDecoration: 'none', float: 'right', paddingRight: '10px' }}
>
Ver mas...
</Link>
</Card.Footer>
</Card>
</Col> : ""
}
</> </>
) )
} }

@ -16,6 +16,7 @@ import { Button, Card, Col, Form, Nav, Row } from 'react-bootstrap'
import AuthDS from '../../Services/Auth/Auth.Service' import AuthDS from '../../Services/Auth/Auth.Service'
import UserDS from '../../Services/Catalogos/Usuarios.Services' import UserDS from '../../Services/Catalogos/Usuarios.Services'
import { useEffect } from 'react' import { useEffect } from 'react'
import Info from '../../../package.json'
export const Login: React.FC<{}> = () => { export const Login: React.FC<{}> = () => {
const dispatch = useDispatch() const dispatch = useDispatch()
@ -176,6 +177,7 @@ export const Login: React.FC<{}> = () => {
login login
</Button> </Button>
</div> </div>
<div style={{textAlign:'right'}}>v{Info.version}</div>
</Card.Body> </Card.Body>
</Card> </Card>
</div> </div>

@ -74,6 +74,9 @@ export default function RptCorresponsalesTraficos(props: IProps) {
const [TipoOperacion, setTipoOperacion] = useState(0) const [TipoOperacion, setTipoOperacion] = useState(0)
const [Cliente, setCliente] = useState(0) const [Cliente, setCliente] = useState(0)
const [Corresponsal, setCorresponsal] = useState(0) const [Corresponsal, setCorresponsal] = useState(0)
const [Pedimento, setPedimento] = useState(0)
const [Patente, setPatente] = useState(0);
const [Aduana, setAduana] = useState(0);
const [Clientes, setClientes] = useState<Array<IClientes>>() const [Clientes, setClientes] = useState<Array<IClientes>>()
const [filtro, setFiltro] = useState('') const [filtro, setFiltro] = useState('')
const gridRef = React.useRef<any>(null) const gridRef = React.useRef<any>(null)
@ -272,6 +275,9 @@ export default function RptCorresponsalesTraficos(props: IProps) {
TipoOperacion: TipoOperacion, TipoOperacion: TipoOperacion,
NoCliente: Cliente, NoCliente: Cliente,
IdCorresponsal: Corresponsal, IdCorresponsal: Corresponsal,
Pedimento: Pedimento,
Aduana: Aduana,
Patente: Patente,
Proceso: proc ? parseInt(proc.replace('proc=', '')) : 0, Proceso: proc ? parseInt(proc.replace('proc=', '')) : 0,
Modo: modo ? parseInt(modo.replace('modo=', '')) : 0, Modo: modo ? parseInt(modo.replace('modo=', '')) : 0,
} }
@ -511,7 +517,7 @@ export default function RptCorresponsalesTraficos(props: IProps) {
<Row> <Row>
<Col xs={8}> <Col xs={8}>
<Row> <Row>
<Col xs={6}> <Col xs={5}>
<Form.Control <Form.Control
type='text' type='text'
size='sm' size='sm'
@ -522,6 +528,34 @@ export default function RptCorresponsalesTraficos(props: IProps) {
/> />
</Col> </Col>
<Col xs={3}> <Col xs={3}>
<Form.Control
type='text'
size='sm'
placeholder='Pedimento'
onChange={(e) => setPedimento(+e.target.value)}
/>
</Col>
<Col xs={2}>
<Form.Control
type='text'
size='sm'
placeholder='Aduana'
onChange={(e) => setAduana(+e.target.value)}
/>
</Col>
<Col xs={2}>
<Form.Control
type='text'
size='sm'
placeholder='Patente'
onChange={(e) => setPatente(+e.target.value)}
/>
</Col>
</Row>
</Col>
<Col xs={4}>
<Row>
<Col xs={6}>
<Form.Control <Form.Control
defaultValue={Inicio} defaultValue={Inicio}
type='date' type='date'
@ -534,7 +568,7 @@ export default function RptCorresponsalesTraficos(props: IProps) {
size='sm' size='sm'
/> />
</Col> </Col>
<Col xs={3}> <Col xs={6}>
<Form.Control <Form.Control
defaultValue={Fin} defaultValue={Fin}
type='date' type='date'

@ -56,6 +56,9 @@ export default function RptCorresponsalesTraficosHst (props: IProps) {
const [filtro, setFiltro] = useState('') const [filtro, setFiltro] = useState('')
const gridRef = React.useRef<any>(null) const gridRef = React.useRef<any>(null)
const [DataCorresponsales, setDataCorresponsales] = useState<ICatCorresponsales[]>([]) const [DataCorresponsales, setDataCorresponsales] = useState<ICatCorresponsales[]>([])
const [Pedimento, setPedimento] = useState(0)
const [Patente, setPatente] = useState(0);
const [Aduana, setAduana] = useState(0);
const [columnDefs] = useState([ const [columnDefs] = useState([
{ field: 'id', headerName: 'id', width: 70, sortable: true, filter: true }, { field: 'id', headerName: 'id', width: 70, sortable: true, filter: true },
{ {
@ -193,6 +196,9 @@ export default function RptCorresponsalesTraficosHst (props: IProps) {
TipoOperacion: 0, TipoOperacion: 0,
NoCliente: 0, NoCliente: 0,
IdCorresponsal: Corresponsal, IdCorresponsal: Corresponsal,
Pedimento: Pedimento,
Aduana: Aduana,
Patente: Patente,
Proceso: proc ? parseInt(proc) : 0, Proceso: proc ? parseInt(proc) : 0,
Modo: Modo ? parseInt(Modo) : 0, Modo: Modo ? parseInt(Modo) : 0,
} }
@ -253,6 +259,9 @@ export default function RptCorresponsalesTraficosHst (props: IProps) {
TipoOperacion: TipoOperacion, TipoOperacion: TipoOperacion,
NoCliente: Cliente, NoCliente: Cliente,
IdCorresponsal: Corresponsal, IdCorresponsal: Corresponsal,
Pedimento: Pedimento,
Aduana: Aduana,
Patente: Patente,
Proceso: proc ? parseInt(proc) : 0, Proceso: proc ? parseInt(proc) : 0,
Modo: Modo ? parseInt(Modo) : 0, Modo: Modo ? parseInt(Modo) : 0,
} }

@ -17,16 +17,33 @@ export const ProgressBar: FC<ICellRendererParams> = (props: ICellRendererParams)
if (props.data.rechazado > 0) setColor('progress-bar bg-RECHAZOS_POR_CONTABILIDAD') if (props.data.rechazado > 0) setColor('progress-bar bg-RECHAZOS_POR_CONTABILIDAD')
else setColor('progress-bar bg-CORRESPONSAL_NORMAL') else setColor('progress-bar bg-CORRESPONSAL_NORMAL')
} }
if (props.data.proceso === 3) setColor('progress-bar bg-RECHAZOS_PARA_CORRESPONSAL') if (props.data.proceso === 3) setColor('progress-bar bg-FACTURACION_LISTOS_PARA_FACTURAR')
if (props.data.proceso === 4) setColor('progress-bar bg-FACTURACION_LISTOS_PARA_FACTURAR') if (props.data.proceso === 4) setColor('progress-bar bg-CORRESPONSAL_NORMAL')
if (props.data.proceso === 5) setColor('progress-bar bg-CORRESPONSAL_NORMAL')
}, [props]) }, [props])
const getTooltipTitle = () => {
let proceso = props.data.proceso;
switch(proceso){
case 1:
return "Corresponsalias"
break;
case 2:
return "Contabilidad"
break;
case 3:
return "Facturacion"
break;
case 4:
return "Facturado"
break;
}
}
return ( return (
<div> <div>
<div style={{ paddingTop: '20%' }}> <div style={{ paddingTop: '20%' }}>
<div className='progress' style={{ maxWidth: '80%' }}> <div className='progress' style={{ maxWidth: '80%' }}>
<div className={Color} style={{ width: '100%' }}></div> <div className={Color} style={{ width: '100%' }} data-toggle="tooltip" data-placement="bottom" title={getTooltipTitle()}></div>
</div> </div>
</div> </div>
</div> </div>

@ -4,6 +4,9 @@ export default interface DTORptCorresponsalesTraficos {
TipoOperacion: number; TipoOperacion: number;
NoCliente: number; NoCliente: number;
IdCorresponsal: number; IdCorresponsal: number;
Pedimento: number;
Aduana: number;
Patente: number;
Proceso: number; Proceso: number;
Modo: number; Modo: number;
} }

@ -38,7 +38,7 @@ class reportsDataService {
return http.get<Array<IRpArchivoElectronicoOficial>>(`/ArchivoElectronico/RptArchivoElectronicoOficial?Anio=${data.Anio}&Mes=${data.Mes}&TipoOperacion=${data.TipoOperacion}&NoCliente=${data.NoCliente}`); return http.get<Array<IRpArchivoElectronicoOficial>>(`/ArchivoElectronico/RptArchivoElectronicoOficial?Anio=${data.Anio}&Mes=${data.Mes}&TipoOperacion=${data.TipoOperacion}&NoCliente=${data.NoCliente}`);
} }
getRptCorresponsalesTraficos(data: DTORptCorresponsalesTraficos) { getRptCorresponsalesTraficos(data: DTORptCorresponsalesTraficos) {
return http.get<ICorresponsalTrafico[]>(`/reportes/RptCorresponsalesTraficos?Inicio=${data.Inicio}&Fin=${data.Fin}&TipoOperacion=${data.TipoOperacion}&NoCliente=${data.NoCliente}&IdCorresponsal=${data.IdCorresponsal}&Proceso=${data.Proceso}&Modo=${data.Modo}`); return http.get<ICorresponsalTrafico[]>(`/reportes/RptCorresponsalesTraficos?Inicio=${data.Inicio}&Fin=${data.Fin}&TipoOperacion=${data.TipoOperacion}&NoCliente=${data.NoCliente}&IdCorresponsal=${data.IdCorresponsal}&Pedimento=${data.Pedimento}&Aduana=${data.Aduana}&Patente=${data.Patente}&Proceso=${data.Proceso}&Modo=${data.Modo}`);
} }
getRptOperaciones(data: DTOReporte) { getRptOperaciones(data: DTOReporte) {
return http.get<IRptOperaciones[]>(`/reportes/RptOperaciones?Inicio=${data.Inicio}&Fin=${data.Fin}&TipoOperacion=${data.TipoOperacion}&NoCliente=${data.NoCliente}`); return http.get<IRptOperaciones[]>(`/reportes/RptOperaciones?Inicio=${data.Inicio}&Fin=${data.Fin}&TipoOperacion=${data.TipoOperacion}&NoCliente=${data.NoCliente}`);

@ -33,7 +33,6 @@ function PageNotFound() {
const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement);
root.render( root.render(
<Provider store={store}> <Provider store={store}>
<React.StrictMode>
<HashRouter> <HashRouter>
<Routes> <Routes>
<Route path="/" element={<App />}> <Route path="/" element={<App />}>
@ -75,7 +74,6 @@ root.render(
</Route> </Route>
</Routes> </Routes>
</HashRouter> </HashRouter>
</React.StrictMode>
</Provider> </Provider>
) )

Loading…
Cancel
Save