Se agregan campos: Cita, Validacion que se genere un AOL con minimo 1 servicio, se empieza control de AOL con estatus

develop
Al Garcia 2 years ago
parent 73ec7ccaf0
commit 4dab58af3f
  1. 1
      package.json
  2. 22
      src/Components/Catalogos/CatClientes.tsx
  3. 20
      src/Components/Catalogos/CatProveedores.tsx
  4. 22
      src/Components/Catalogos/CatServicios.tsx
  5. 27
      src/Components/Catalogos/CatUbicaciones.tsx
  6. 8
      src/Components/Home/Home.tsx
  7. 29
      src/Components/Operaciones/OpMonitor.tsx
  8. 10
      src/Components/Operaciones/Viaje/Servicios/Servicios.tsx
  9. 47
      src/Components/Operaciones/Viaje/Viaje.tsx
  10. 40
      src/Components/Operaciones/Viaje/ViajeEstatus.tsx
  11. 9
      src/DTOs/Operaciones/DTOViajeEstatusSecuencia.ts
  12. 1
      src/DTOs/Operaciones/DTOViajesServicios.ts
  13. 4
      src/Services/Operaciones/OpViajes.Services.ts
  14. 34
      src/store/features/Operaciones/OpViajes.Estatus.SecuenciaSlice.ts
  15. 4
      src/store/store.ts
  16. 46
      yarn.lock

@ -19,6 +19,7 @@
"react-bootstrap": "^2.5.0",
"react-currency-format": "^1.1.0",
"react-data-table-component": "^7.5.3",
"react-datepicker": "^4.8.0",
"react-dom": "^18.2.0",
"react-icons": "^4.4.0",
"react-redux": "^8.0.2",

@ -5,7 +5,7 @@ import { IconContext } from 'react-icons'
import { useDispatch, useSelector } from 'react-redux'
import ICatClientes from '../../Interfaces/Catalogos/ICatClientes'
import { RootState } from '../../store/store'
import { BsFillPencilFill, BsFillTrashFill, BsSave } from 'react-icons/bs'
import { BsEraserFill, BsFillPencilFill, BsFillTrashFill, BsSave } from 'react-icons/bs'
import DSCatClientes from '../../Services/Catalogos/CatClientes.Services'
import { updateCatClientes, deleteCatClientes } from '../../store/features/Catalogos/CatClientesSlice'
@ -89,6 +89,11 @@ export const CatClientes: FC<IProps> = (props) => {
setDeleteCatClientesDialog(false)
}
const clearForm = () => {
setIDCliente(0)
setCliente('')
}
const saveInfo = () => {
const data: ICatClientes = {
id: IDCliente,
@ -159,9 +164,22 @@ export const CatClientes: FC<IProps> = (props) => {
<Modal.Body>
<Row>
<Col xs={3}>No cliente</Col>
<Col xs={2}>
<Col xs={2} style={{ textAlign: 'right' }}>
<Form.Control type='text' id='IDCliente' value={IDCliente} disabled size='sm' />
</Col>
<Col xs={1} style={{ textAlign: 'left' }}>
<Button
size='sm'
variant='white'
onClick={() => {
clearForm()
}}
>
<IconContext.Provider value={{ color: 'orange', size: '25px' }}>
<BsEraserFill />
</IconContext.Provider>
</Button>
</Col>
</Row>
<br />
<Row>

@ -5,7 +5,7 @@ import { IconContext } from 'react-icons'
import { useDispatch, useSelector } from 'react-redux'
import ICatProveedores from '../../Interfaces/Catalogos/ICatProveedores'
import { RootState } from '../../store/store'
import { BsFillPencilFill, BsFillTrashFill, BsSave } from 'react-icons/bs'
import { BsEraserFill, BsFillPencilFill, BsFillTrashFill, BsSave } from 'react-icons/bs'
import DSCatProveedores from '../../Services/Catalogos/CatProveedores.Services'
import { updateCatProveedores, deleteCatProveedores } from '../../store/features/Catalogos/CatProveedoresSlice'
@ -89,6 +89,11 @@ export const CatProveedores: FC<IProps> = (props) => {
setDeleteCatProveedoresDialog(false)
}
const clearForm = () => {
setIDProveedor(0)
setProveedor('')
}
const saveInfo = () => {
const data: ICatProveedores = {
id: IDProveedor,
@ -165,6 +170,19 @@ export const CatProveedores: FC<IProps> = (props) => {
<Col xs={2}>
<Form.Control type='text' id='IDCliente' value={IDProveedor} disabled size='sm' />
</Col>
<Col xs={1} style={{ textAlign: 'left' }}>
<Button
size='sm'
variant='white'
onClick={() => {
clearForm()
}}
>
<IconContext.Provider value={{ color: 'orange', size: '25px' }}>
<BsEraserFill />
</IconContext.Provider>
</Button>
</Col>
</Row>
<br />
<Row>

@ -5,7 +5,7 @@ import { IconContext } from 'react-icons'
import { useDispatch, useSelector } from 'react-redux'
import ICatServicios from '../../Interfaces/Catalogos/ICatServicios'
import { RootState } from '../../store/store'
import { BsFillPencilFill, BsFillTrashFill, BsSave } from 'react-icons/bs'
import { BsEraserFill, BsFillPencilFill, BsFillTrashFill, BsSave } from 'react-icons/bs'
import DSCatServicios from '../../Services/Catalogos/CatServicios.Service'
import { updateCatServicios, deleteCatServicios } from '../../store/features/Catalogos/CatServiciosSlice'
@ -89,6 +89,11 @@ export const CatServicios: FC<IProps> = (props) => {
setDeleteCatClientesDialog(false)
}
const clearForm = () => {
setIDServicio(0)
setServicio('')
}
const saveInfo = () => {
const data: ICatServicios = {
id: IDServicio,
@ -154,7 +159,7 @@ export const CatServicios: FC<IProps> = (props) => {
}}
>
<Modal.Header closeButton>
<Modal.Title>Catalogo: Clientes</Modal.Title>
<Modal.Title>Catalogo: Servicios</Modal.Title>
</Modal.Header>
<Modal.Body>
<Row>
@ -162,6 +167,19 @@ export const CatServicios: FC<IProps> = (props) => {
<Col xs={2}>
<Form.Control type='text' id='IDServicio' value={IDServicio} disabled size='sm' />
</Col>
<Col xs={1} style={{ textAlign: 'left' }}>
<Button
size='sm'
variant='white'
onClick={() => {
clearForm()
}}
>
<IconContext.Provider value={{ color: 'orange', size: '25px' }}>
<BsEraserFill />
</IconContext.Provider>
</Button>
</Col>
</Row>
<br />
<Row>

@ -4,7 +4,7 @@ import DataTable from 'react-data-table-component'
import { IconContext } from 'react-icons'
import { useDispatch, useSelector } from 'react-redux'
import { RootState } from '../../store/store'
import { BsFillPencilFill, BsFillTrashFill, BsSave } from 'react-icons/bs'
import { BsEraserFill, BsFillPencilFill, BsFillTrashFill, BsSave } from 'react-icons/bs'
import DSCatUbicaciones from '../../Services/Catalogos/CatUbicaciones.Services'
import { updateCatUbicaciones, deleteCatUbicaciones } from '../../store/features/Catalogos/CatUbicacionesSlice'
import ICatUbicaciones from '../../Interfaces/Catalogos/ICatUbicaciones'
@ -98,6 +98,12 @@ export const CatUbicaciones: FC<IProps> = (props) => {
setDeleteCatUbicacionesDialog(false)
}
const clearForm = () => {
setIDUbicacion(0)
setUbicacion('')
setClasificacion(1)
}
const saveInfo = () => {
const data: ICatUbicaciones = {
id: IDUbicacion,
@ -176,8 +182,23 @@ export const CatUbicaciones: FC<IProps> = (props) => {
<Col xs={2}>
<Form.Control type='text' id='IDUbicacion' value={IDUbicacion} disabled size='sm' />
</Col>
<Col xs={3}>Clasificacion</Col>
<Col>
<Col xs={1} style={{ textAlign: 'left' }}>
<Button
size='sm'
variant='white'
onClick={() => {
clearForm()
}}
>
<IconContext.Provider value={{ color: 'orange', size: '25px' }}>
<BsEraserFill />
</IconContext.Provider>
</Button>
</Col>
<Col xs={3} style={{ textAlign: 'right' }}>
Clasificacion
</Col>
<Col xs={3}>
<Form.Control
as='select'
onChange={(e) => {

@ -8,6 +8,7 @@ import DSCatProveedores from '../../Services/Catalogos/CatProveedores.Services'
import DSCatTipoUnidades from '../../Services/Catalogos/CatTipoUnidades.Services'
import DSCatUbicaciones from '../../Services/Catalogos/CatUbicaciones.Services'
import DSCatServicios from '../../Services/Catalogos/CatServicios.Service'
import DSOpStatusSecuence from '../../Services/Operaciones/OpViajes.Services'
import { populateCatClientes } from '../../store/features/Catalogos/CatClientesSlice'
import { populateCatProveedores } from '../../store/features/Catalogos/CatProveedoresSlice'
import { populateCatTipoUnidades } from '../../store/features/Catalogos/CatTipoUnidadesSlice'
@ -15,6 +16,7 @@ import { populateCatUbicaciones } from '../../store/features/Catalogos/CatUbicac
import { populateCatServicios } from '../../store/features/Catalogos/CatServiciosSlice'
import { populateUserProfile } from '../../store/features/Auth/UserProfileSlice'
import { populateMenuItems } from '../../store/features/Auth/MenuItemsSlice'
import { populateOpViajesEstatusSecuencia } from '../../store/features/Operaciones/OpViajes.Estatus.SecuenciaSlice'
import Leyend from '../../images/leyend.png'
interface IProps {}
@ -56,6 +58,12 @@ export const Home: FC<IProps> = (props) => {
dispatch(populateCatServicios(response.data))
})
.catch((e: Error) => {})
DSOpStatusSecuence.GetStatusSecuence()
.then((response) => {
dispatch(populateOpViajesEstatusSecuencia(response.data))
})
.catch((e: Error) => {})
}
const validateToken = () => {

@ -1,7 +1,8 @@
import React, { FC, useEffect, useState } from 'react'
import { Alert, Button, Card, Col, Form, Modal, Row, Table } from 'react-bootstrap'
import { Alert, Button, Card, Col, Form, Modal, OverlayTrigger, Row, Table, Tooltip } from 'react-bootstrap'
import { IconContext } from 'react-icons'
import { BsChevronDown, BsChevronRight, BsChevronUp, BsFillPencilFill, BsPlusSquareFill } from 'react-icons/bs'
import { BsChevronDown, BsChevronRight, BsChevronUp, BsFillPencilFill, BsPlusSquareFill, BsTruck } from 'react-icons/bs'
import { FcShipped, FcInTransit } from 'react-icons/fc'
import { useDispatch, useSelector } from 'react-redux'
import { RootState } from '../../store/store'
import DTOOpViajes from '../../DTOs/Operaciones/DTOViajes'
@ -15,6 +16,7 @@ import {
populateOpViajesServicios,
updateOpViajesServicios,
} from '../../store/features/Operaciones/OpViajesServiciosSlice'
import { ViajeEstatus } from './Viaje/ViajeEstatus'
interface IProps {}
@ -118,21 +120,27 @@ export const OpMonitor: FC<IProps> = (props) => {
<Card style={{ textAlign: 'left' }}>
<Alert variant='primary'>
<Row>
<Col xs={3} style={{ textAlign: 'right', fontSize: '25px' }}>
<Col xs={2} style={{ textAlign: 'right', fontSize: '25px' }}>
Monitor de Viajes
</Col>
<Col xs={1} style={{ textAlign: 'left', cursor: 'pointer' }}></Col>
<Col xs={7}></Col>
<Col xs={8}></Col>
<Col xs={1}>
<div
onClick={() => {
newTrip()
}}
title='De un click aqui para crear un nuevo viaje'
style={{ cursor: 'pointer' }}
>
<OverlayTrigger
overlay={<Tooltip id='tooltip-disabled'>De un click aqui para iniciar un viaje</Tooltip>}
>
<IconContext.Provider value={{ color: 'green', size: '28px' }}>
<BsPlusSquareFill />
<span className='d-inline-block'>
<IconContext.Provider value={{ color: 'blue', size: '35px' }}>
<FcInTransit />
</IconContext.Provider>
</span>
</OverlayTrigger>
</div>
</Col>
</Row>
@ -166,6 +174,7 @@ export const OpMonitor: FC<IProps> = (props) => {
<th>Destino</th>
<th>Tipo Unidad</th>
<th>No caja</th>
<th style={{ width: '185px' }}>Estatus</th>
<th>Hazmat</th>
<th>Ref AA</th>
<th>PickUp No</th>
@ -235,6 +244,12 @@ export const OpMonitor: FC<IProps> = (props) => {
>
{MasterData.noCaja}
</td>
<td
style={{ textAlign: 'left' }}
className={MasterData.max === true ? 'masterSelected' : 'normalSelected'}
>
<ViajeEstatus IDViaje={MasterData.id} TipoOperacion={MasterData.tipoOperacion} />
</td>
<td
style={{ textAlign: 'center' }}
className={MasterData.max === true ? 'masterSelected' : 'normalSelected'}

@ -1,5 +1,5 @@
import React, { FC, useState } from 'react'
import { Button } from 'react-bootstrap'
import { Button, Form } from 'react-bootstrap'
import { IconContext } from 'react-icons'
import { BsFillPencilFill, BsXSquareFill } from 'react-icons/bs'
import { useDispatch, useSelector } from 'react-redux'
@ -59,11 +59,12 @@ export const Servicios: FC<IProps> = (props) => {
) : (
''
)}
<th style={{ width: '25%', textAlign: 'left' }}>Servicio</th>
<th style={{ width: '20%', textAlign: 'left' }}>Servicio</th>
<th style={{ width: '10%', textAlign: 'left' }}>Caja</th>
<th style={{ width: '10%', textAlign: 'left' }}>Aduana</th>
<th style={{ width: '25%', textAlign: 'left' }}>Proveedor</th>
<th style={{ width: '25%', textAlign: 'left' }}>Comentarios</th>
<th style={{ width: '10%', textAlign: 'left' }}>Cita</th>
<th style={{ width: '20%', textAlign: 'left' }}>Proveedor</th>
<th style={{ width: '20%', textAlign: 'left' }}>Comentarios</th>
{props.actionButtons ? (
<>
<th style={{ width: '30px', textAlign: 'center' }}></th>
@ -107,6 +108,7 @@ export const Servicios: FC<IProps> = (props) => {
<td style={{ textAlign: 'left' }}>{service.sServicio}</td>
<td style={{ textAlign: 'left' }}>{service.noCaja}</td>
<td style={{ textAlign: 'left' }}>{getAduana(service.aduana)}</td>
<td style={{ textAlign: 'left' }}>{service.cita}</td>
<td style={{ textAlign: 'left' }}>{service.sProveedor}</td>
<td style={{ textAlign: 'left' }}>{service.comentarios}</td>
{props.actionButtons ? (

@ -11,6 +11,8 @@ import {
} from '../../../store/features/Operaciones/OpViajesServiciosSlice'
import DTOViajesServicios from '../../../DTOs/Operaciones/DTOViajesServicios'
import { Servicios } from '../Viaje/Servicios/Servicios'
import DatePicker from 'react-datepicker'
import 'react-datepicker/dist/react-datepicker.css'
interface IProps {
IDViaje: number
@ -50,8 +52,11 @@ export const Viaje: FC<IProps> = (props) => {
const [Comentarios, setComentarios] = useState('')
const [Aduana, setAduana] = useState(0)
const [DisableAduana, setDisableAduana] = useState(true)
const [TotalServicios, setTotalServicios] = useState(0)
const [Cita, setCita] = useState<Date | null>()
useEffect(() => {
if (IDServicio > 0 && TotalServicios === 0) saveDetail()
let selectedRow = mAllTrips.filter((row) => {
if (row.id === props.IDViaje) {
setIDViaje(row.id)
@ -70,7 +75,13 @@ export const Viaje: FC<IProps> = (props) => {
})
//setRefAA(selectedRow[0].refAgenciaAduanal)
// console.log(JSON.stringify(selectedRow) + ' ' + props.IDViaje)
}, [props.IDViaje])
let totalServicios = mAllTripServices.filter((a) => {
if (a.idViaje === IDViaje) {
return a
}
})
setTotalServicios(totalServicios.length)
}, [IDViaje])
useEffect(() => {
if (IDServicio === 1 || IDServicio === 2 || IDServicio === 22) setDisableAduana(false)
@ -110,6 +121,7 @@ export const Viaje: FC<IProps> = (props) => {
idViaje: IDViaje,
idServicio: IDServicio,
sServicio: '',
cita: Cita ? adjustTimeZone(Cita.toISOString()) : '',
aduana: Aduana,
comentarios: Comentarios,
idProveedor: IDProveedor,
@ -130,6 +142,14 @@ export const Viaje: FC<IProps> = (props) => {
.catch((e: Error) => {})
}
const adjustTimeZone = (str: string): string => {
if (str) {
const original: any = new Date(str)
const real = new Date(original - original.getTimezoneOffset() * 60 * 1000)
return real.toISOString()
} else return ''
}
const loadService = (id: number) => {
let found = mAllTripServices.filter((a) => {
if (a.id === id) {
@ -146,12 +166,7 @@ export const Viaje: FC<IProps> = (props) => {
}
const saveMaster = () => {
let totalServicios = mAllTripServices.filter((a) => {
if (a.idViaje === IDViaje) {
return a
}
})
if (totalServicios.length === 0) {
if (TotalServicios === 0) {
if (IDServicio === 0) {
alert('Para continuar, primero seleccione un servicio ')
return false
@ -188,7 +203,6 @@ export const Viaje: FC<IProps> = (props) => {
data['max'] = false
dispatch(updateOpViajes(data))
setIDViaje(data.id)
saveDetail()
})
.catch((e: Error) => {})
}
@ -199,6 +213,7 @@ export const Viaje: FC<IProps> = (props) => {
setIDServicio(0)
setComentarios('')
setIDProveedor(0)
setUltimaCaja('')
setDisableAduana(true)
}
@ -438,7 +453,7 @@ export const Viaje: FC<IProps> = (props) => {
<Card.Body>
<Row style={{ paddingTop: '5px' }}>
<Col xs={2}>Servicio</Col>
<Col xs={5}>
<Col xs={4}>
<Form.Control
as='select'
onChange={(e) => {
@ -459,9 +474,19 @@ export const Viaje: FC<IProps> = (props) => {
: null}
</Form.Control>
</Col>
<Col xs={2} style={{ textAlign: 'right' }}>
Aduana
<Col style={{ visibility: DisableAduana ? 'hidden' : 'visible' }}>
<DatePicker
selected={Cita}
onChange={(date: any) => setCita(date)}
showTimeSelect
dateFormat='MM/dd/yyyy HH:mm:ss'
placeholderText='Cita no definida'
isClearable
/>
</Col>
{/* <Col xs={2} style={{ textAlign: 'right' }}>
Aduana
</Col> */}
<Col xs={3}>
<Form.Control
as='select'

@ -0,0 +1,40 @@
import React, { FC, useState } from 'react'
import { Form } from 'react-bootstrap'
import { useSelector } from 'react-redux'
import { RootState } from '../../../store/store'
interface IProps {
IDViaje: number
TipoOperacion: number
}
export const ViajeEstatus: FC<IProps> = (props) => {
const mTripStatus = useSelector((state: RootState) => state.OpViajesEstatusSecuencia.OpViajesEstatusSecuencia)
const [IDStatus, setIDStatus] = useState(0)
return (
<div>
<Form.Control
as='select'
onChange={(e) => {
setIDStatus(parseInt(e.target.value))
}}
value={IDStatus}
className='form-select form-select-sm dialogLabel'
>
<option value='0'>Pendiente</option>
{mTripStatus
? mTripStatus
.filter((row) => row.tipoOperacion === props.TipoOperacion)
.sort((a, b) => a.secuencia - b.secuencia)
.map((row) => {
return (
<option key={row.id} value={row.id}>
{row.sEstatus}
</option>
)
})
: null}
</Form.Control>
</div>
)
}

@ -0,0 +1,9 @@
export default interface DTOViajeEstatusSecuencia {
id: number,
tipoOperacion: number,
sTipoOperacion: string,
estatus: number,
sEstatus: string,
secuencia: number,
activo: number
}

@ -3,6 +3,7 @@ export default interface DTOViajesServicios {
idViaje: number,
idServicio: number,
sServicio: string,
cita?: string,
aduana: number,
comentarios: string,
idProveedor: number,

@ -3,6 +3,7 @@ import DTOViajes from "../../DTOs/Operaciones/DTOViajes";
import IRespuesta from "../../Interfaces/Respuestas/IRespuesta";
import DTOViajesServicios from "../../DTOs/Operaciones/DTOViajesServicios";
import DTOUltimaCaja from "../../DTOs/Operaciones/DTOUltimaCaja";
import DTOViajeEstatusSecuencia from "../../DTOs/Operaciones/DTOViajeEstatusSecuencia";
class OpViajesDataService {
Get() {
@ -14,6 +15,9 @@ class OpViajesDataService {
GetLastTrailerBox(idViaje: number) {
return http.get<DTOUltimaCaja>(`Operaciones/OpViajes/GetLastTrailerBox?idViaje=${idViaje}`);
}
GetStatusSecuence() {
return http.get<DTOViajeEstatusSecuencia[]>(`Operaciones/OpViajes/GetStatusSecuence`);
}
Append(data: DTOViajes) {
return http.post<DTOViajes>(`Operaciones/OpViajes/Append`,data);
}

@ -0,0 +1,34 @@
import { createSlice, PayloadAction } from '@reduxjs/toolkit'
import DTOViajeEstatusSecuencia from '../../../DTOs/Operaciones/DTOViajeEstatusSecuencia'
const OpViajesEstatusSecuencia: DTOViajeEstatusSecuencia[] = []
const initialState = { OpViajesEstatusSecuencia }
export const OpViajesEstatusSecuenciaSlice = createSlice({
name: 'OpViajesEstatusSecuencia',
initialState: initialState,
reducers: {
resetOpViajesEstatusSecuencia : (state, action: PayloadAction<string>) => {
state.OpViajesEstatusSecuencia = []
},
populateOpViajesEstatusSecuencia : (state, action: PayloadAction<DTOViajeEstatusSecuencia[]>) => {
action.payload.forEach(element => {
const index = state.OpViajesEstatusSecuencia.findIndex(object => object.id === element.id)
if (index<0) state.OpViajesEstatusSecuencia.push(element)
})
},
updateOpViajesEstatusSecuencia : (state, action: PayloadAction<DTOViajeEstatusSecuencia[]>) => {
action.payload.forEach(row => {
const i = state.OpViajesEstatusSecuencia.findIndex(_element => _element.id === row.id);
if (i > -1) state.OpViajesEstatusSecuencia[i] = row;
else state.OpViajesEstatusSecuencia.push(row);
})
},
deleteOpViajesEstatusSecuencia : (state, action: PayloadAction<number>) => {
const newArr = state.OpViajesEstatusSecuencia.filter(data => data.id != action.payload);
state.OpViajesEstatusSecuencia=newArr
},
},
})
export const { resetOpViajesEstatusSecuencia, populateOpViajesEstatusSecuencia, updateOpViajesEstatusSecuencia, deleteOpViajesEstatusSecuencia } = OpViajesEstatusSecuenciaSlice.actions;
export default OpViajesEstatusSecuenciaSlice.reducer;

@ -10,6 +10,7 @@ import { CatUbicacionesSlice } from './features/Catalogos/CatUbicacionesSlice'
import { CatAduanasSlice } from './features/Catalogos/CatAduanasSlice'
import { OpViajesSlice } from './features/Operaciones/OpViajesSlice'
import { OpViajesServiciosSlice } from './features/Operaciones/OpViajesServiciosSlice'
import { OpViajesEstatusSecuenciaSlice } from './features/Operaciones/OpViajes.Estatus.SecuenciaSlice'
export const store = configureStore({
reducer: {
@ -22,7 +23,8 @@ export const store = configureStore({
CatServicios: CatServiciosSlice.reducer,
CatAduanas : CatAduanasSlice.reducer,
OpViajes: OpViajesSlice.reducer,
OpViajesServicios: OpViajesServiciosSlice.reducer
OpViajesServicios: OpViajesServiciosSlice.reducer,
OpViajesEstatusSecuencia: OpViajesEstatusSecuenciaSlice.reducer
}
})

@ -1570,7 +1570,7 @@
schema-utils "^3.0.0"
source-map "^0.7.3"
"@popperjs/core@^2.11.5":
"@popperjs/core@^2.11.5", "@popperjs/core@^2.9.2":
version "2.11.6"
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45"
integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==
@ -3153,6 +3153,11 @@ cjs-module-lexer@^1.0.0:
resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40"
integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==
classnames@^2.2.6:
version "2.3.2"
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924"
integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==
classnames@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e"
@ -3610,6 +3615,11 @@ data-urls@^2.0.0:
whatwg-mimetype "^2.3.0"
whatwg-url "^8.0.0"
date-fns@^2.24.0:
version "2.29.3"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8"
integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==
debug@2.6.9, debug@^2.6.0, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@ -7313,7 +7323,7 @@ prop-types-extra@^1.1.0:
react-is "^16.3.2"
warning "^4.0.0"
prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.8.1:
prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
@ -7440,6 +7450,18 @@ react-data-table-component@^7.5.3:
dependencies:
deepmerge "^4.2.2"
react-datepicker@^4.8.0:
version "4.8.0"
resolved "https://registry.yarnpkg.com/react-datepicker/-/react-datepicker-4.8.0.tgz#11b8918d085a1ce4781eee4c8e4641b3cd592010"
integrity sha512-u69zXGHMpxAa4LeYR83vucQoUCJQ6m/WBsSxmUMu/M8ahTSVMMyiyQzauHgZA2NUr9y0FUgOAix71hGYUb6tvg==
dependencies:
"@popperjs/core" "^2.9.2"
classnames "^2.2.6"
date-fns "^2.24.0"
prop-types "^15.7.2"
react-onclickoutside "^6.12.0"
react-popper "^2.2.5"
react-dev-utils@^12.0.1:
version "12.0.1"
resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73"
@ -7483,6 +7505,11 @@ react-error-overlay@^6.0.11:
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb"
integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==
react-fast-compare@^3.0.1:
version "3.2.0"
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==
react-icons@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.4.0.tgz#a13a8a20c254854e1ec9aecef28a95cdf24ef703"
@ -7508,6 +7535,19 @@ react-lifecycles-compat@^3.0.4:
resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
react-onclickoutside@^6.12.0:
version "6.12.2"
resolved "https://registry.yarnpkg.com/react-onclickoutside/-/react-onclickoutside-6.12.2.tgz#8e6cf80c7d17a79f2c908399918158a7b02dda01"
integrity sha512-NMXGa223OnsrGVp5dJHkuKxQ4czdLmXSp5jSV9OqiCky9LOpPATn3vLldc+q5fK3gKbEHvr7J1u0yhBh/xYkpA==
react-popper@^2.2.5:
version "2.3.0"
resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-2.3.0.tgz#17891c620e1320dce318bad9fede46a5f71c70ba"
integrity sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==
dependencies:
react-fast-compare "^3.0.1"
warning "^4.0.2"
react-redux@^8.0.2:
version "8.0.2"
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.0.2.tgz#bc2a304bb21e79c6808e3e47c50fe1caf62f7aad"
@ -8860,7 +8900,7 @@ walker@^1.0.7:
dependencies:
makeerror "1.0.12"
warning@^4.0.0, warning@^4.0.3:
warning@^4.0.0, warning@^4.0.2, warning@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==

Loading…
Cancel
Save