diff --git a/.env.development b/.env.development
new file mode 100644
index 0000000..8dc4075
--- /dev/null
+++ b/.env.development
@@ -0,0 +1,2 @@
+REACT_APP_ENVIRONMENT=development
+REACT_APP_API=https://localhost:5041/api
\ No newline at end of file
diff --git a/.env.production b/.env.production
new file mode 100644
index 0000000..624dd3e
--- /dev/null
+++ b/.env.production
@@ -0,0 +1,2 @@
+REACT_APP_ENVIRONMENT=production
+REACT_APP_API=https://www.gemcousa.mx/CORRESPONSALBackend/api
diff --git a/.env.qa b/.env.qa
new file mode 100644
index 0000000..3f60a2c
--- /dev/null
+++ b/.env.qa
@@ -0,0 +1,2 @@
+REACT_APP_ENVIRONMENT=qa
+REACT_APP_API=https://www.gemcousa.solutions/CORRESPONSALBackend/api
\ No newline at end of file
diff --git a/package.json b/package.json
index 276aab9..1d039d4 100644
--- a/package.json
+++ b/package.json
@@ -3,22 +3,53 @@
"version": "0.1.0",
"private": true,
"dependencies": {
+ "@reduxjs/toolkit": "^1.9.5",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
+ "@types/bootstrap": "^5.2.6",
"@types/jest": "^27.5.2",
"@types/node": "^16.18.30",
"@types/react": "^18.2.6",
"@types/react-dom": "^18.2.4",
+ "@types/styled-components": "^5.1.26",
+ "ag-grid-community": "^29.3.5",
+ "ag-grid-react": "^29.3.5",
+ "apexcharts": "^3.40.0",
+ "axios": "^1.4.0",
+ "boostrap": "^2.0.0",
+ "bootstrap": "^5.2.3",
+ "dotenv": "^16.0.3",
+ "env-cmd": "^10.1.0",
+ "formik": "^2.2.9",
+ "jwt-decode": "^3.1.2",
+ "moment": "^2.29.4",
"react": "^18.2.0",
+ "react-apexcharts": "^1.4.0",
+ "react-bootstrap": "^2.7.4",
+ "react-currency-format": "^1.1.0",
+ "react-data-table-component": "^7.5.3",
+ "react-data-table-component-extensions": "^1.6.0",
+ "react-datepicker": "^4.11.0",
"react-dom": "^18.2.0",
+ "react-dropzone": "^14.2.3",
+ "react-flexy-table": "^1.8.11",
+ "react-icons": "^4.8.0",
+ "react-redux": "^8.0.5",
+ "react-router-dom": "^6.11.1",
"react-scripts": "5.0.1",
+ "styled-components": "^6.0.0-rc.1",
"typescript": "^4.9.5",
- "web-vitals": "^2.1.4"
+ "web-vitals": "^2.1.4",
+ "xlsx": "^0.18.5",
+ "yup": "^1.1.1"
},
"scripts": {
- "start": "react-scripts start",
- "build": "react-scripts build",
+ "start-dev": "env-cmd -f .env.development react-scripts start",
+ "start-qa": "env-cmd -f .env.qa react-scripts start",
+ "start-prod": "env-cmd -f .env.production react-scripts start",
+ "build-qa": "env-cmd -f .env.qa react-scripts build",
+ "build-prod": "env-cmd -f .env.production react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
diff --git a/public/index.html b/public/index.html
index aa069f2..fe7e3b6 100644
--- a/public/index.html
+++ b/public/index.html
@@ -24,7 +24,13 @@
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
-
React App
+
+
+
+ CORRESPONSALIAS
diff --git a/src/App.test.tsx b/src/App.test.tsx
deleted file mode 100644
index 2a68616..0000000
--- a/src/App.test.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from 'react';
-import { render, screen } from '@testing-library/react';
-import App from './App';
-
-test('renders learn react link', () => {
- render();
- const linkElement = screen.getByText(/learn react/i);
- expect(linkElement).toBeInTheDocument();
-});
diff --git a/src/App.tsx b/src/App.tsx
index a53698a..8c7ad4f 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,26 +1,121 @@
-import React from 'react';
-import logo from './logo.svg';
-import './App.css';
+import React, { useEffect, useState } from 'react'
+import { Outlet, useNavigate } from 'react-router-dom'
+import { Container, Form, Nav, Navbar, NavDropdown } from 'react-bootstrap'
+import ItemMenu from './Interfaces/Catalogos/IItemMenu'
+import 'ag-grid-community/styles/ag-grid.css'
+import 'ag-grid-community/styles/ag-theme-alpine.css'
+import usuariosServices from './Services/Catalogos/Usuarios.Services'
+import { logued } from './store/features/userStatusSlice/userStatusSlice'
+import { useSelector, useDispatch } from 'react-redux'
+import { RootState } from './store/store'
+import { MsgInformativo } from './Components/Utils/Toast/msgInformativo'
+import { IconContext } from 'react-icons'
+import { BsPersonCircle } from 'react-icons/bs'
+import Submenu from './Components/Submenu/Submenu'
function App() {
+ const navigate = useNavigate()
+ const dispatch = useDispatch()
+ let _menu: ItemMenu[] = []
+ const [mainMenu, setMainMenu] = useState(_menu)
+ const userLogued = useSelector((state: RootState) => state.userStatus.value)
+ const [show, setShow] = useState(false)
+ const [msg, setMsg] = useState('')
+ const [header, setHeader] = useState('')
+ const msgColor = 'primary'
+ const menu = localStorage.getItem('menu') ? localStorage.getItem('menu') : ''
+ const User = () => {
+ const stickyValue = window.localStorage.getItem('User')
+ return stickyValue !== null ? JSON.parse(stickyValue) : ''
+ }
+ const [Depto, setDepto] = useState(() => {
+ const stickyValue = window.localStorage.getItem('Departamento')
+ return stickyValue !== null
+ ? JSON.parse(stickyValue).substring(0, 4) + '.'
+ : ''
+ })
+
+ useEffect(() => {
+ if (menu && userLogued) {
+ setMainMenu(JSON.parse(menu))
+ } else {
+ setMainMenu([])
+ }
+ }, [menu, userLogued])
+
+ useEffect(() => {
+ usuariosServices
+ .validate()
+ .then((response) => {
+ if (response.status === 200) {
+ dispatch(logued(true))
+ }
+ })
+ .catch((e: Error) => {
+ if (!window.location.href.indexOf('login')) {
+ localStorage.setItem('menu', '')
+ localStorage.setItem('token', '')
+ setHeader('Informativo')
+ setMsg('Su session ha expirado, necesita volver a loguerse')
+ setShow(true)
+ navigate('/')
+ }
+ })
+ }, [dispatch, navigate])
+
return (
-
+
+
+
+ GEMCO
+
+
+
+
+
+
+
+
+
- );
+ )
}
-export default App;
+export default App
+
diff --git a/src/Classes/Corresponsales/CCorresponsalesTrafico.ts b/src/Classes/Corresponsales/CCorresponsalesTrafico.ts
new file mode 100644
index 0000000..0f94005
--- /dev/null
+++ b/src/Classes/Corresponsales/CCorresponsalesTrafico.ts
@@ -0,0 +1,181 @@
+import ICorresponsalTrafico from "../../Interfaces/Corresponsales/ICorresponsalTrafico";
+
+export default class CCorresponsalesTrafico implements ICorresponsalTrafico {
+ id: number=0
+ folioGemco: string
+ fechaRegistro?: string
+ idUsuario: number=0
+ idCliente: number=0
+ tipoOperacion: number=0
+ opEntrada: number=0
+ opSalida: number=0
+ idCorresponsal: number=0
+ bultos?: number
+ kilos?: number
+ estatus?: number
+ trafico?: string
+ aduana?: number
+ patente?: number
+ pedimento?: number
+ clave?: string
+ fechaPago?: string
+ tipoCambio?: number
+ valorAduanaMN?: number
+ totalPagado?: number
+ valorFacturaMN?: number
+ cantidadFracciones?: number
+ buque?: string
+ valorFacturaDls?: number
+ descripcionMercancia?: string
+ observaciones?: string
+ fechaDesaduanamiento: string
+ semaforoFiscal?: number
+ noCuenta?: string
+ fechaCuenta?: string
+ tipoMercancia?: number
+ ultimaActualizacion?: string
+ zipgemco?: string;
+ zipCorresponsales?: string;
+ proceso: number;
+ rechazado: number;
+ idTabulador: number;
+ noRecti: number;
+ estatusCode: number;
+ activo?: number
+
+ constructor() {
+ this.id=0
+ this.folioGemco=''
+ this.fechaRegistro=''
+ this.idUsuario=0
+ this.idCliente=0
+ this.tipoOperacion=0
+ this.opEntrada=0
+ this.opSalida=0
+ this.idCorresponsal=0
+ this.bultos=0
+ this.kilos=0
+ this.estatus=0
+ this.trafico=''
+ this.aduana=0
+ this.patente=0
+ this.pedimento=0
+ this.clave=''
+ this.fechaPago=''
+ this.tipoCambio=0
+ this.valorAduanaMN=0
+ this.totalPagado=0
+ this.valorFacturaMN=0
+ this.cantidadFracciones=0
+ this.buque=''
+ this.valorFacturaDls=0
+ this.descripcionMercancia=''
+ this.observaciones=''
+ this.fechaDesaduanamiento=''
+ this.semaforoFiscal=0
+ this.noCuenta=''
+ this.fechaCuenta=''
+ this.tipoMercancia=0
+ this.ultimaActualizacion=''
+ this.zipgemco=''
+ this.zipCorresponsales=''
+ this.proceso=1
+ this.rechazado=1
+ this.idTabulador=0
+ this.noRecti=0;
+ this.estatusCode=0;
+ this.activo=1
+ }
+
+ public getEmptyObject(): ICorresponsalTrafico {
+ return {
+ id: 0,
+ folioGemco:'',
+ fechaRegistro: '',
+ idUsuario :0,
+ idCliente :0,
+ tipoOperacion :0,
+ opEntrada :0,
+ opSalida:0,
+ idCorresponsal :0,
+ bultos :0,
+ kilos :0,
+ estatus :0,
+ trafico :'',
+ aduana :0,
+ patente :0,
+ pedimento :0,
+ clave :'',
+ fechaPago :'',
+ tipoCambio :0,
+ valorAduanaMN :0,
+ totalPagado :0,
+ valorFacturaMN :0,
+ cantidadFracciones :0,
+ buque :'',
+ valorFacturaDls :0,
+ descripcionMercancia :'',
+ observaciones :'',
+ fechaDesaduanamiento :'',
+ semaforoFiscal :0,
+ noCuenta :'',
+ fechaCuenta :'',
+ tipoMercancia :0,
+ ultimaActualizacion :'',
+ zipgemco:'',
+ zipCorresponsales:'',
+ proceso:1,
+ rechazado:1,
+ idTabulador:0,
+ noRecti:0,
+ estatusCode:0,
+ activo :1
+ }
+ }
+
+ public setObject(data: ICorresponsalTrafico): ICorresponsalTrafico {
+ return {
+ id: data.id,
+ folioGemco: data.folioGemco,
+ fechaRegistro: data.fechaRegistro,
+ idUsuario : data.idUsuario,
+ idCliente :data.idCliente,
+ tipoOperacion :data.tipoOperacion,
+ opEntrada : data.opEntrada,
+ opSalida: data.opSalida,
+ idCorresponsal : data.idCorresponsal,
+ bultos :data.bultos,
+ kilos : data.kilos,
+ estatus : data.estatus,
+ trafico : data.trafico,
+ aduana : data.aduana,
+ patente : data.patente,
+ pedimento : data.pedimento,
+ clave : data.clave,
+ fechaPago : data.fechaPago,
+ tipoCambio : data.tipoCambio,
+ valorAduanaMN : data.valorAduanaMN,
+ totalPagado : data.totalPagado,
+ valorFacturaMN : data.valorFacturaMN,
+ cantidadFracciones : data.cantidadFracciones,
+ buque : data.buque,
+ valorFacturaDls : data.valorFacturaDls,
+ descripcionMercancia : data.descripcionMercancia,
+ observaciones : data.observaciones,
+ fechaDesaduanamiento : data.fechaDesaduanamiento,
+ semaforoFiscal : data.semaforoFiscal,
+ noCuenta : data.noCuenta,
+ fechaCuenta : data.fechaCuenta,
+ tipoMercancia : data.tipoMercancia,
+ ultimaActualizacion : data.ultimaActualizacion,
+ zipgemco: data.zipgemco,
+ zipCorresponsales: data.zipCorresponsales,
+ proceso: data.proceso,
+ rechazado: data.rechazado,
+ idTabulador: data.idTabulador,
+ noRecti: data.noRecti,
+ estatusCode: data.estatusCode,
+ activo : data.activo
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Components/Catalogos/CatCorresponsales/CatCorresponsales.tsx b/src/Components/Catalogos/CatCorresponsales/CatCorresponsales.tsx
new file mode 100644
index 0000000..82b0ce6
--- /dev/null
+++ b/src/Components/Catalogos/CatCorresponsales/CatCorresponsales.tsx
@@ -0,0 +1,375 @@
+import React, { FC, useEffect, useState } from 'react'
+import { Alert, Button, Card, Col, Form, Modal, Row } from 'react-bootstrap'
+import { IconContext } from 'react-icons'
+import ICatCorresponsales from '../../../Interfaces/Catalogos/ICatCorresponsales'
+import CorresponsalesDataService from '../../../Services/Catalogos/Corresponsales.Services'
+import { MsgInformativo } from '../../Utils/Toast/msgInformativo'
+import { useDispatch, useSelector } from 'react-redux'
+import {
+ addCatCorresponsales,
+ deleteCatCorresponsales,
+} from '../../../store/features/CatCorresponsales/CatCorresponsalesSlice'
+import { RootState } from '../../../store/store'
+import DataTable from 'react-data-table-component'
+import { ControlledInput } from './ControlledInput/ControlledInput'
+import { FaEraser, FaTimesCircle } from 'react-icons/fa'
+import * as CurrencyFormat from 'react-currency-format'
+
+interface IProps {
+ canDelete: boolean
+}
+
+export const CatCorresponsales: FC = (props) => {
+ const dispatch = useDispatch()
+ const [Depto, setDepto] = useState(() => {
+ const stickyValue = window.localStorage.getItem('Departamento')
+ return stickyValue !== null ? JSON.parse(stickyValue) : ''
+ })
+ const [filteredData, setFilteredData] = useState([])
+ const mCorresponsales = useSelector((state: RootState) => state.CatCorresponsales.CatCorresponsales)
+ // const gridRef = React.useRef(null)
+ const [header, setHeader] = useState('')
+ const [msgColor, setMsgColor] = React.useState('primary')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+ const [id, setId] = useState(0)
+ const [msgDialog, setMsgDialog] = useState(false)
+ // const [IDCorresponsal, setIDCorresponsal] = useState(0)
+ const [Nombre, setNombre] = useState('')
+ const [Patente, setPatente] = useState(0)
+ const [Aduana, setAduana] = useState(0)
+ const [Correos, setCorreos] = useState('')
+
+ useEffect(() => {
+ CorresponsalesDataService.getAll()
+ .then((response) => {
+ setFilteredData(response.data)
+ console.log(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }, [])
+
+ const columnsCorresponsales = [
+ {
+ name: 'id',
+ width: '5%',
+ selector: (row: ICatCorresponsales) => row.id,
+ sortable: true,
+ },
+ {
+ name: 'Corresponsal ...................................................................................................................................... Patente ...... Aduana ...... Correos',
+ width: '90%',
+ cell: (row: ICatCorresponsales) => ,
+ },
+ {
+ name: 'Elimina',
+ width: '5%',
+ cell: (row: ICatCorresponsales) => (
+ {
+ setId(row.id)
+ setNombre(row.nombre)
+ setPatente(row.patente)
+ setAduana(row.aduana)
+ setCorreos(row.correos)
+ setMsgDialog(true)
+ }}
+ >
+
+
+
+
+ ),
+ },
+ ]
+
+ function deleteRow(row: ICatCorresponsales) {
+ setId(row.id)
+ setNombre(row.nombre)
+ setPatente(row.patente)
+ setAduana(row.aduana)
+ setMsgDialog(true)
+ }
+
+ const loadRow = (data: ICatCorresponsales) => {
+ setId(data.id)
+ setNombre(data.nombre)
+ setPatente(data.patente)
+ setAduana(data.aduana)
+ setCorreos(data.correos)
+ }
+
+ function Guardar() {
+ if (Patente < 999) {
+ setHeader('Error!')
+ setMsgColor('danger')
+ setMsg('La patente debe tener 4 digitos')
+ setShowMsg(true)
+ return false
+ }
+ if (Aduana < 99) {
+ setHeader('Error!')
+ setMsgColor('danger')
+ setMsg('La aduana debe tener 3 digitos')
+ setShowMsg(true)
+ return false
+ }
+ const data: ICatCorresponsales = {
+ id: id,
+ nombre: Nombre,
+ aduana: Aduana,
+ patente: Patente,
+ correos: Correos,
+ }
+ CorresponsalesDataService.Append(data)
+ .then((response) => {
+ if (response.status == 200) {
+ dispatch(addCatCorresponsales(response.data))
+ setMsgColor('primary')
+ setHeader('Confirmacion')
+ setMsg('La informacion se guardo exitosamente')
+ setShowMsg(true)
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ function cleanForm() {
+ setId(0)
+ setNombre('')
+ setPatente(0)
+ setAduana(0)
+ }
+
+ const deleteItem = () => {
+ setMsgDialog(false)
+ CorresponsalesDataService.Delete(id)
+ .then((response) => {
+ if (response.status == 200) {
+ dispatch(deleteCatCorresponsales(id))
+ cleanForm()
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+
+ setNombre('')
+ setId(0)
+ }
+
+ return (
+
+
+
+
+
+ Corresponsal
+
+
+ {/* setNombre((v) => (e.target.validity.valid ? e.target.value : v))}
+ /> */}
+ {
+ setNombre(e.target.value)
+ }}
+ /* onKeyDown={(e) => handleKeyDown(e)} */
+ />
+
+
+ Correos
+
+
+ setCorreos((v) => e.target.value)}
+ />
+
+
+
+ {
+ cleanForm()
+ }}
+ >
+
+
+
+
+
+
+ Patente
+
+
+ {
+ const { formattedValue, value } = values
+ setPatente(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '18px',
+ backgroundColor: '#F5FFED',
+ border: '2px solid #25D05B',
+ width: '80px',
+ textAlign: 'right',
+ borderRadius: '10px',
+ }
+ : {
+ fontSize: '18px',
+ backgroundColor: '#F5FFED',
+ border: '2px solid #25D05B',
+ width: '80px',
+ textAlign: 'right',
+ borderRadius: '10px',
+ paddingRight: '5px',
+ paddingLeft: '5px',
+ }
+ }
+ />
+
+
+
+ Aduana
+
+
+ {
+ const { formattedValue, value } = values
+ setAduana(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '18px',
+ backgroundColor: '#F5FFED',
+ border: '2px solid #25D05B',
+ width: '60px',
+ textAlign: 'right',
+ borderRadius: '10px',
+ }
+ : {
+ fontSize: '18px',
+ backgroundColor: '#F5FFED',
+ border: '2px solid #25D05B',
+ width: '60px',
+ textAlign: 'right',
+ borderRadius: '10px',
+ paddingRight: '5px',
+ paddingLeft: '5px',
+ }
+ }
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
setMsgDialog(false)} size='sm'>
+
+
+ ¿Esta seguro de eliminar?
+
+
+ {Nombre} | Patente: {Patente} | Aduana {Aduana}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{
+ setShowMsg(false)
+ }}
+ />
+
+ )
+}
diff --git a/src/Components/Catalogos/CatCorresponsales/ControlledInput/ControlledInput.tsx b/src/Components/Catalogos/CatCorresponsales/ControlledInput/ControlledInput.tsx
new file mode 100644
index 0000000..5f8264e
--- /dev/null
+++ b/src/Components/Catalogos/CatCorresponsales/ControlledInput/ControlledInput.tsx
@@ -0,0 +1,114 @@
+import React, { FC, useState } from 'react'
+import { useDispatch } from 'react-redux'
+import ICatCorresponsales from '../../../../Interfaces/Catalogos/ICatCorresponsales'
+import CorDataService from '../../../../Services/Catalogos/Corresponsales.Services'
+import { updateCatCorresponsales } from '../../../../store/features/CatCorresponsales/CatCorresponsalesSlice'
+import { MsgInformativo } from '../../../Utils/Toast/msgInformativo'
+
+interface IProps {
+ record: ICatCorresponsales
+}
+
+export const ControlledInput: FC = (props) => {
+ const dispatch = useDispatch()
+ const [IDCorresponsal, setIDCorresponsal] = useState(props.record.id)
+ const [Corresponsal, setCorresponsal] = useState(props.record.nombre)
+ const [Patente, setPatente] = useState(props.record.patente)
+ const [Aduana, setAduana] = useState(props.record.aduana)
+ const [Correos, setCorreos] = useState(props.record.correos)
+ const [header, setHeader] = useState('')
+ const [msgColor, setMsgColor] = React.useState('primary')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+
+ const onChangeCor = (event: any) => {
+ setCorresponsal(event.target.value)
+ }
+
+ const onChangeAd = (event: any) => {
+ setAduana(event.target.value)
+ }
+ const onChangePat = (event: any) => {
+ setPatente(event.target.value)
+ }
+ const onChangeEmail = (event: any) => {
+ setCorreos(event.target.value)
+ }
+
+ const handleKeyDown = (event: any, mode: number) => {
+ if (event.key === 'Enter') {
+ if (isNaN(event.target.value) && mode === 1) {
+ alert('Valor no valido!')
+ return
+ }
+ const data: ICatCorresponsales = {
+ id: props.record.id,
+ nombre: Corresponsal,
+ patente: Patente,
+ aduana: Aduana,
+ correos: Correos,
+ }
+ CorDataService.Append(data)
+ .then((response) => {
+ if (response.status == 200) {
+ dispatch(updateCatCorresponsales(response.data))
+ setHeader('Informativo')
+ setMsg('La informacion se guardo exitosamente')
+ setShowMsg(true)
+ return
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+ }
+
+ return (
+
+ handleKeyDown(e, 2)}
+ style={{ width: '450px', textAlign: 'left' }}
+ />
+
+ handleKeyDown(e, 1)}
+ style={{ width: '50px', textAlign: 'right' }}
+ />
+
+ handleKeyDown(e, 1)}
+ style={{ width: '30px', textAlign: 'right' }}
+ />
+
+ handleKeyDown(e, 2)}
+ style={{ width: '650px', textAlign: 'left' }}
+ />
+ {
+ setShowMsg(false)
+ }}
+ />
+
+ )
+}
diff --git a/src/Components/Catalogos/CatTabulador/CatTabulador.tsx b/src/Components/Catalogos/CatTabulador/CatTabulador.tsx
new file mode 100644
index 0000000..003fb5d
--- /dev/null
+++ b/src/Components/Catalogos/CatTabulador/CatTabulador.tsx
@@ -0,0 +1,501 @@
+import React, { FC, useEffect, useState } from 'react'
+
+import ITabulador from '../../../Interfaces/Catalogos/ITabulador'
+import ITabuladorConceptos from '../../../Interfaces/Catalogos/ITabuladorConceptos'
+import DTOConceptos from '../../../DTO/Utils/DTOConceptos'
+
+import CTabDataService from '../../../Services/Corresponsalias/Corresponsales.Tabuladores.Services'
+import CTabDetDataService from '../../../Services/Corresponsalias/Corresponsales.Tabuladores.Detalle.Sevices'
+import ClientesDataService from '../../../Services/Catalogos/Clientes.Services'
+
+import { MsgInformativo } from '../../Utils/Toast/msgInformativo'
+import { ControlledInput } from '../../Utils/ControlledInput/ControlledInput'
+import DataTable from 'react-data-table-component'
+import { Alert, Button, Card, Col, Container, Form, Modal, Row } from 'react-bootstrap'
+import { IconContext } from 'react-icons'
+import 'react-data-table-component-extensions/dist/index.css'
+import { BsPlusSquareFill } from 'react-icons/bs'
+import IClientes from '../../../Interfaces/Catalogos/IClientes'
+import { FcTimeline } from 'react-icons/fc'
+import { FaEraser, FaTimesCircle } from 'react-icons/fa'
+
+interface IProps {}
+
+interface IselectedRows {
+ allSelected: boolean
+ selectedCount: number
+ selectedRows: any
+}
+
+export default function CatTabuladores (props: IProps) {
+ const [UserId, setUserId] = useState(() => {
+ const stickyValue = window.localStorage.getItem('UserId')
+ return stickyValue !== null ? JSON.parse(stickyValue) : 0
+ })
+ const [Tabulador, setTabulador] = useState(0)
+ const [Concepto, setConcepto] = useState(0)
+ const [Cliente, setCliente] = useState(0)
+ const [Clientes, setClientes] = useState>()
+ const [NombreTabulador, setNombreTabulador] = useState('')
+ const [DetalleConceptos, setDetalleConceptos] = useState([])
+ const [CatConceptos, setCatConceptos] = useState([])
+ const [Tabuladores, setTabuladores] = useState([])
+ const [AllTabuladores, setAllTabuladores] = useState([])
+ const [Costo, setCosto] = useState('')
+ const [header, setHeader] = useState('')
+ const [msgColor, setMsgColor] = React.useState('primary')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+ const [DialogTabs, setDialogTabs] = useState(false)
+
+ const columnsConcepts = [
+ {
+ name: 'id',
+ selector: (row: ITabuladorConceptos) => row.id,
+ sortable: true,
+ },
+ {
+ name: 'Concepto',
+ width: '70%',
+ selector: (row: ITabuladorConceptos) => row.concepto,
+ sortable: true,
+ },
+ {
+ name: 'Costo',
+ cell: (row: ITabuladorConceptos) => (
+ {
+ postCost(id, value)
+ }}
+ />
+ ),
+ },
+ ]
+
+ const columnsTabs = [
+ {
+ name: 'id',
+ selector: (row: ITabulador) => row.id,
+ sortable: true,
+ },
+ {
+ name: 'Nombre',
+ width: '70%',
+ cell: (row: ITabulador) => (
+ {
+ setTabulador(row.id)
+ setNombreTabulador(row.nombre)
+ }}
+ >
+ {row.nombre}
+
+ ),
+ sortable: true,
+ },
+ {
+ name: 'Elimina',
+ cell: (row: ITabulador) => (
+ {
+ setTabulador(row.id)
+ setNombreTabulador(row.nombre)
+ setDialogTabs(true)
+ }}
+ >
+
+
+
+
+ ),
+ },
+ ]
+
+ const postCost = (id: number, Cost: number) => {
+ const data: ITabuladorConceptos = {
+ id: id,
+ idTabulador: Tabulador,
+ idConcepto: Concepto,
+ concepto: '',
+ costo: Cost,
+ activo: 1,
+ }
+ CTabDetDataService.Append(data)
+ .then((response) => {
+ setDetalleConceptos(response.data)
+ setHeader('Confirmacion')
+ setMsg('La informacion se guardo corrctamente')
+ setShowMsg(true)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ const deleteTabulador = () => {
+ CTabDataService.Delete(Tabulador)
+ .then((response) => {
+ if (response.status === 200) {
+ setHeader('Informativo')
+ setMsg(response.data.respuesta)
+ setShowMsg(true)
+ setDialogTabs(false)
+ setTabuladores(Tabuladores.filter((data) => data.id != Tabulador))
+ setAllTabuladores(Tabuladores)
+ return
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ useEffect(() => {
+ CTabDetDataService.getAllConcepts()
+ .then((response) => {
+ setCatConceptos(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ ClientesDataService.getAllClientes(UserId)
+ .then((response) => {
+ setClientes(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }, [])
+
+ useEffect(() => {
+ CTabDetDataService.GetDetailByIdTab(Tabulador)
+ .then((response) => {
+ setDetalleConceptos(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ console.log(Tabulador)
+ }, [Tabulador])
+
+ useEffect(() => {
+ if (Cliente > 0) {
+ setNombreTabulador('')
+ setTabuladores([])
+ setDetalleConceptos([])
+ CTabDataService.GetByCustomer(Cliente)
+ .then((response) => {
+ setTabuladores(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+ }, [Cliente])
+
+ const filtraTabulador = (e: any) => {
+ if (e.target.value !== '') {
+ setTabuladores(
+ AllTabuladores.filter(function (el) {
+ return el.nombre.toLocaleLowerCase().includes(e.target.value.toLocaleLowerCase())
+ })
+ )
+ } else {
+ setTabuladores(AllTabuladores)
+ }
+ }
+
+ const saveForm = () => {
+ const data: ITabulador = {
+ id: Tabulador,
+ idCliente: Cliente,
+ nombre: NombreTabulador,
+ }
+ CTabDataService.Append(data)
+ .then((response) => {
+ if (response.status === 200) {
+ setHeader('Informativo')
+ setMsg('La informacion se guardo correctamente')
+ setShowMsg(true)
+ if (Tabulador > 0) {
+ let tmp = Tabuladores
+ let idx = tmp.findIndex((obj) => obj.id == Tabulador)
+ tmp[idx].nombre = NombreTabulador
+ setTabuladores(tmp)
+ setAllTabuladores(tmp)
+ } else {
+ setTabulador(response.data.id)
+ const tmp = [...Tabuladores, response.data]
+ setTabuladores(tmp)
+ setAllTabuladores(tmp)
+ }
+ return
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ const addConcept = () => {
+ if (Tabulador === 0) {
+ setHeader('Error')
+ setMsg('Por favor, primero seleccione el tabulador')
+ setShowMsg(true)
+ return
+ }
+ if (Concepto === 0) {
+ setHeader('Error')
+ setMsg('Por favor, primero seleccione el concepto')
+ setShowMsg(true)
+ return
+ }
+ postCost(0, 0)
+ }
+
+ return (
+
+
+
+
+ Tabuladores
+
+
+
+
+
+ Cliente:
+
+
+
+
{
+ setCliente(parseInt(e.target.value))
+ }}
+ className='form-select form-select-sm'
+ style={{ fontSize: '18px' }}
+ >
+
+ {Clientes
+ ? Clientes.map((c) => {
+ return (
+
+ )
+ })
+ : null}
+
+
+
+ {
+ setTabulador(0)
+ setNombreTabulador('')
+ }}
+ >
+
+
+
+
+
+
+
Tabulador
+
+
+
+
+
{
+ setNombreTabulador(e.target.value)
+ }}
+ placeholder='Nombre del tabulador'
+ style={{ fontSize: '18px' }}
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tabulador
+
+
+ {
+ filtraTabulador(e)
+ }}
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Conceptos
+
+
+ setConcepto(parseInt(e.target.value))}
+ className='form-select form-select-sm'
+ style={{ fontSize: '17px' }}
+ >
+
+ {CatConceptos
+ ? CatConceptos.map((c) => {
+ return (
+
+ )
+ })
+ : null}
+
+
+
+ {
+ addConcept()
+ }}
+ style={{ cursor: 'pointer' }}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{
+ setDialogTabs(false)
+ }}
+ size='sm'
+ >
+
+ ¿Esta seguro de eliminar:
+
{NombreTabulador}?
+
+
+
+
+
+
+
+
+
+
+
+
+
{
+ setShowMsg(false)
+ }}
+ />
+
+ )
+}
diff --git a/src/Components/Corresponsales/Anticipos/Anticipos.tsx b/src/Components/Corresponsales/Anticipos/Anticipos.tsx
new file mode 100644
index 0000000..0626431
--- /dev/null
+++ b/src/Components/Corresponsales/Anticipos/Anticipos.tsx
@@ -0,0 +1,614 @@
+import React, { FC, useEffect, useState } from 'react'
+import { Alert, Button, Col, Container, Form, Modal, Row } from 'react-bootstrap'
+import { IconContext } from 'react-icons'
+import {
+ BsCash,
+ BsCheckCircle,
+ BsCheckCircleFill,
+ BsEraserFill,
+ BsFileEarmarkPdf,
+ BsFillXCircleFill,
+ BsPencilFill,
+ BsQuestionOctagonFill,
+} from 'react-icons/bs'
+import { MsgInformativo } from '../../Utils/Toast/msgInformativo'
+import 'react-flexy-table/dist/index.css'
+import DTOItems from '../../../DTO/Corresponsales/DTOItems'
+import CAnticiposDataService from '../../../Services/Corresponsalias/Corresponsales.Anticipos.Services'
+
+import {
+ populateCorresponsalesAnticipos,
+ addCorresponsalesAnticipos,
+ deleteCorresponsalesAnticipos,
+ updateCorresponsalesAnticipos,
+} from '../../../store/features/Corresponsales/CorresponsalesAnticiposSlice'
+import ICorresponsalAnticipos from '../../../Interfaces/Corresponsales/ICorresponsalAnticipos'
+import { useDispatch, useSelector } from 'react-redux'
+import { RootState } from '../../../store/store'
+import { AgGridReact } from 'ag-grid-react'
+import { RowClickedEvent } from 'ag-grid-community'
+import { BiCoinStack } from 'react-icons/bi'
+import * as CurrencyFormat from 'react-currency-format'
+import FileManager from '../../Utils/FileManager/FileManager'
+import DTOAnticiposAutoriza from '../../../DTO/Corresponsales/DTOAnticiposAutoriza'
+
+interface ItemList {
+ id: number
+ item: string
+}
+
+interface IProps {
+ IDTrafico: number
+ closeCRUDItems: (arg: boolean) => void
+ canDelete: boolean
+}
+
+export const Anticipos: FC = (props) => {
+ const [UserId, setUserId] = useState(() => {
+ const stickyValue = window.localStorage.getItem('UserId')
+ return stickyValue !== null ? JSON.parse(stickyValue) : 0
+ })
+ const [Depto, setDept] = useState(() => {
+ const Depto = window.localStorage.getItem('Departamento')
+ return Depto !== null ? JSON.parse(Depto) : ''
+ })
+ const mCAnticipos = useSelector((state: RootState) => state.CAnticipos.CorresponsalesAnticipos)
+ const [allItems, setAllItems] = useState([])
+ const [filteredData, setFilteredData] = useState([])
+ const [IdAnticipo, setIdAnticipo] = useState(0)
+ const [Anticipo, setAnticipo] = useState(0)
+ const [Moneda, setMoneda] = useState(2)
+ const [Financiado, setFinanciado] = useState(0)
+ const [Concepto, setConcepto] = useState('')
+ const [header, setHeader] = useState('')
+ const [msgColor, setMsgColor] = React.useState('primary')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+ const [msgDialog, setMsgDialog] = useState(false)
+ const [MsgDialogFileManager, setMsgDialogFileManager] = useState(false)
+ const [msgDialogFileManagerConta, setMsgDialogFileManagerConta] = useState(false)
+ const gridRef = React.useRef(null)
+ const [deleteFile, setDeleteFile] = useState(false)
+ const [columnDefs] = useState([
+ Depto === 'Corresponsalias'
+ ? {
+ field: 'id',
+ headerName: 'Acciones',
+ width: 110,
+ sortable: true,
+ filter: true,
+ cellRenderer: (params: any) => {
+ return (
+
+
+ {
+ loadRow(params.data.id)
+ }}
+ style={{ cursor: 'pointer' }}
+ />
+
+
+
+ {
+ viewDoc(params.value)
+ //getFileContent(params.value)
+ }}
+ style={{ cursor: 'pointer' }}
+ />
+
+
+ )
+ },
+ }
+ : {
+ field: 'id',
+ headerName: 'id',
+ width: 60,
+ sortable: false,
+ filter: false,
+ visible: false,
+ },
+ {
+ field: 'anticipo',
+ headerName: 'Anticipo',
+ width: 120,
+ sortable: true,
+ filter: true,
+ cellRenderer: (params: any) => {
+ return (
+
+ )
+ },
+ },
+ {
+ field: 'moneda',
+ headerName: 'Moneda',
+ width: 105,
+ sortable: true,
+ filter: true,
+ cellRenderer: (params: any) => {
+ if (params.value === 1) {
+ return (
+
+ Pesos
+
+ )
+ } else if (params.value === 2) {
+ return (
+
+ Dollar
+
+ )
+ } else return '?'
+ },
+ },
+ {
+ field: 'financiado',
+ headerName: '¿Financiado?',
+ width: 135,
+ sortable: true,
+ filter: true,
+ cellRenderer: (params: any) => {
+ if (params.value === 1)
+ return (
+
+
+
+
+
+ )
+ else
+ return (
+
+
+
+
+
+ )
+ },
+ },
+ {
+ field: 'id',
+ headerName: 'Autorizado',
+ width: 130,
+ sortable: true,
+ filter: true,
+ cellRenderer: (params: any) => {
+ if (params.data.autoriza === 0)
+ return (
+
+
+ {
+ return Depto === 'Contabilidad' ? viewDocConta(params.value) : '#'
+ }}
+ style={{ cursor: 'pointer' }}
+ />
+
+
+ )
+ else
+ return (
+
+
+ {
+ viewDocConta(params.value)
+ }}
+ style={{ cursor: 'pointer' }}
+ />
+
+
+ )
+ },
+ },
+ { field: 'concepto', headerName: 'Concepto', width: 350, sortable: true, filter: true },
+ { field: 'sSolicita', headerName: 'Solicita', width: 150, sortable: true, filter: true },
+ {
+ field: 'fhSolicita',
+ headerName: 'Fecha solicitud',
+ width: 200,
+ sortable: true,
+ filter: true,
+ cellRenderer: (params: any) => {
+ if (params.value !== null) {
+ return params.value.substring(0, 16)
+ }
+ },
+ },
+ { field: 'sAutoriza', headerName: 'Authoriza', width: 150, sortable: true, filter: true },
+ { field: 'fhAutoriza', headerName: 'Fecha autorizacion', width: 200, sortable: true, filter: true },
+ ])
+ const dispatch = useDispatch()
+
+ const cleanForm = () => {
+ setIdAnticipo(0)
+ setAnticipo(0)
+ setMoneda(2)
+ setConcepto('')
+ }
+
+ const saveForm = () => {
+ if (Concepto.length < 5) {
+ setHeader('Error')
+ setMsg('Para poder guardar la informacion, proporcione el concepto')
+ setShowMsg(true)
+ return
+ }
+ if (Anticipo === 0) {
+ setHeader('Error')
+ setMsg('Para poder guardar la informacion, proporcione el monto del anticipo')
+ setShowMsg(true)
+ return
+ }
+ const data: ICorresponsalAnticipos = {
+ id: IdAnticipo,
+ idTrafico: props.IDTrafico,
+ anticipo: Anticipo,
+ moneda: Moneda,
+ concepto: Concepto,
+ solicita: UserId,
+ fhSolicita: '',
+ financiado: Financiado,
+ }
+ CAnticiposDataService.Append(data)
+ .then((response) => {
+ if (response.status === 200) {
+ setHeader('Informativo')
+ setMsg('La informcion se guardo correctamente')
+ setShowMsg(true)
+ if (IdAnticipo === 0) dispatch(addCorresponsalesAnticipos(response.data))
+ else dispatch(updateCorresponsalesAnticipos(response.data))
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ const loadRow = (idRow: number) => {
+ var tmpArray = mCAnticipos.filter(function (item) {
+ return item.id === idRow
+ })
+ setIdAnticipo(tmpArray[0].id)
+ setAnticipo(tmpArray[0].anticipo)
+ setConcepto(tmpArray[0].concepto)
+ setMoneda(tmpArray[0].moneda)
+ }
+
+ const viewDoc = (idRow: number) => {
+ loadRow(idRow)
+ setMsgDialogFileManager(true)
+ }
+
+ const viewDocConta = (idRow: number) => {
+ loadRow(idRow)
+ setMsgDialogFileManagerConta(true)
+ }
+
+ const authorizeItem = (id: number) => {
+ loadRow(id)
+ setMsgDialog(true)
+ }
+
+ const authorizeAmount = () => {
+ const data: DTOAnticiposAutoriza = {
+ id: IdAnticipo,
+ idUsuario: UserId,
+ }
+ CAnticiposDataService.Autoriza(data)
+ .then((response) => {
+ if (response.status == 200) {
+ dispatch(updateCorresponsalesAnticipos(response.data))
+ setMsgDialog(false)
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ const deleteItem = () => {
+ CAnticiposDataService.Delete(IdAnticipo)
+ .then((response) => {
+ if (response.status == 200) {
+ dispatch(deleteCorresponsalesAnticipos(IdAnticipo))
+ setMsgDialog(false)
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ useEffect(() => {
+ CAnticiposDataService.getAll(props.IDTrafico)
+ .then((response) => {
+ dispatch(populateCorresponsalesAnticipos(response.data))
+ setFilteredData(mCAnticipos)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }, [props.IDTrafico])
+
+ useEffect(() => {
+ const result = mCAnticipos.filter((row) => row.id > 0 && row.idTrafico === props.IDTrafico)
+ }, [mCAnticipos])
+
+ return (
+
+
+
+
+ {
+ setConcepto(e.target.value)
+ }}
+ />
+
+
+
+
+
+
+
+
+
+
+ {
+ const { formattedValue, value } = values
+ setAnticipo(value)
+ }}
+ style={{
+ fontSize: '18px',
+ backgroundColor: '#F5FFED',
+ border: '2px solid #25D05B',
+ width: '150px',
+ textAlign: 'right',
+ borderRadius: '10px',
+ }}
+ />
+
+
+ {
+ setMoneda(parseInt(e.target.value))
+ }}
+ >
+
+
+
+
+
+ {
+ setFinanciado(parseInt(e.target.value))
+ }}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
p.id !== 0)}
+ columnDefs={columnDefs}
+ pagination={true}
+ paginationAutoPageSize={true}
+ ref={gridRef}
+ rowSelection={'single'}
+ rowMultiSelectWithClick={true}
+ /* onRowClicked={(e) => getParams(e)} */
+ >
+
+
+
+
+
{
+ setShowMsg(false)
+ }}
+ >
+
setMsgDialog(false)} size='lg'>
+
+
+ ¿Esta seguro de eliminar ?: '
+
{Concepto}
+ Por el monto de:
+
+ {' '}
+ {Moneda === 1 ? 'Pesos' : 'Dolares'}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
setMsgDialog(false)} size='lg'>
+
+
+ ¿Esta seguro de autorizar?
+
{Concepto}
+ Por el monto de:
+
+ {' '}
+ {Moneda === 1 ? 'Pesos' : 'Dolares'}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
setMsgDialogFileManager(false)} size='lg'>
+
+
+
+
+
+
+
+
+
+
+
+
+
setMsgDialogFileManagerConta(false)} size='lg'>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/Components/Corresponsales/CatProveedores/CatProveedores.tsx b/src/Components/Corresponsales/CatProveedores/CatProveedores.tsx
new file mode 100644
index 0000000..41d7542
--- /dev/null
+++ b/src/Components/Corresponsales/CatProveedores/CatProveedores.tsx
@@ -0,0 +1,269 @@
+import { RowClickedEvent } from 'ag-grid-community'
+import { AgGridReact } from 'ag-grid-react'
+import React, { FC, useEffect, useState } from 'react'
+import { Alert, Button, Card, Col, Form, Modal, Row } from 'react-bootstrap'
+import DataTable from 'react-data-table-component'
+import { IconContext } from 'react-icons'
+import { FaEraser, FaTimesCircle } from 'react-icons/fa'
+import { useDispatch, useSelector } from 'react-redux'
+import ICatProveedores from '../../../Interfaces/Catalogos/ICatProveedores'
+import ProveedoresDataService from '../../../Services/Catalogos/Proveedores.Services'
+import {
+ addCatProveedores,
+ deleteCatProveedores,
+ populateCatProveedores,
+} from '../../../store/features/CatProveedores/CatProveedoresSlice'
+import { RootState } from '../../../store/store'
+import { MsgInformativo } from '../../Utils/Toast/msgInformativo'
+import { ControlledInput } from './ControlledInput/ControlledInput'
+
+interface IProps {
+ canDelete: boolean
+ clasificacion: number
+}
+
+export const CatProveedores: FC = (props) => {
+ const dispatch = useDispatch()
+ const mProveedores = useSelector((state: RootState) => state.CatProveedores.CatalogoProveedores)
+ const [DTData, setDTData] = useState([])
+ const [Proveedor, setProveedor] = useState('')
+ const [IDProveedor, setIDProveedor] = useState(0)
+ const [header, setHeader] = useState('')
+ const [msgColor, setMsgColor] = React.useState('primary')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+ const [MsgTime, setMsgTime] = useState(3000)
+ const [DialogTabs, setDialogTabs] = useState(false)
+
+ const columnsProveedores = [
+ {
+ name: 'id',
+ width: '10%',
+ selector: (row: ICatProveedores) => row.id,
+ sortable: true,
+ },
+ {
+ name: 'Proveedor',
+ width: '75%',
+ cell: (row: ICatProveedores) => {
+ return (
+
+ )
+ },
+ },
+ {
+ name: 'Elimina',
+ cell: (row: ICatProveedores) => (
+ {
+ setIDProveedor(row.id)
+ setProveedor(row.nombre)
+ setDialogTabs(true)
+ }}
+ >
+
+
+
+
+ ),
+ },
+ ]
+
+ useEffect(() => {
+ ProveedoresDataService.getAll(props.clasificacion)
+ .then((response) => {
+ //setDTData(response.data)
+ dispatch(populateCatProveedores(response.data))
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }, [])
+
+ const cleanForm = () => {
+ setIDProveedor(0)
+ setProveedor('')
+ }
+
+ const saveForm = () => {
+ const data: ICatProveedores = {
+ id: IDProveedor,
+ nombre: Proveedor,
+ clasificacion: props.clasificacion,
+ }
+ ProveedoresDataService.Append(data)
+ .then((response) => {
+ if (response.status == 200) {
+ setHeader('Informativo')
+ setMsg('El proveedor se agrego exitosamente')
+ setShowMsg(true)
+ setDialogTabs(false)
+ if (data.id === 0) dispatch(addCatProveedores(response.data))
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ const deleteItem = () => {
+ ProveedoresDataService.Delete(IDProveedor)
+ .then((response) => {
+ if (response.status === 200) {
+ setHeader('Informativo')
+ setMsg('El provedor se ha eliminado')
+ setShowMsg(true)
+ setDialogTabs(false)
+ dispatch(deleteCatProveedores(IDProveedor))
+ return
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ return (
+
+ )
+}
diff --git a/src/Components/Corresponsales/CatProveedores/ControlledInput/ControlledInput.tsx b/src/Components/Corresponsales/CatProveedores/ControlledInput/ControlledInput.tsx
new file mode 100644
index 0000000..435ef5d
--- /dev/null
+++ b/src/Components/Corresponsales/CatProveedores/ControlledInput/ControlledInput.tsx
@@ -0,0 +1,77 @@
+import React, { FC, useState } from 'react'
+import { MsgInformativo } from '../../../Utils/Toast/msgInformativo'
+import ProvDataService from '../../../../Services/Catalogos/Proveedores.Services'
+import { useDispatch } from 'react-redux'
+import ICatProveedores from '../../../../Interfaces/Catalogos/ICatProveedores'
+import { updateCatProveedores } from '../../../../store/features/CatProveedores/CatProveedoresSlice'
+
+interface IProps {
+ id: number
+ value: any
+ disabled?: boolean
+ mode: number // 1: Number, 2: String
+ clasificacion: number
+}
+
+export const ControlledInput: FC = (props) => {
+ const dispatch = useDispatch()
+ const [id, setid] = useState(props.id)
+ const [value, setValue] = useState(props.value)
+ const [header, setHeader] = useState('')
+ const [msgColor, setMsgColor] = React.useState('primary')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+
+ const onChange = (event: any) => {
+ setValue(event.target.value)
+ }
+ const handleKeyDown = (event: any) => {
+ if (event.key === 'Enter') {
+ if (isNaN(event.target.value) && props.mode === 1) {
+ alert('Valor no valido!')
+ return
+ }
+ const data: ICatProveedores = {
+ id: id,
+ nombre: value,
+ clasificacion: props.clasificacion,
+ }
+ ProvDataService.Append(data)
+ .then((response) => {
+ if (response.status == 200) {
+ dispatch(updateCatProveedores(response.data))
+ setHeader('Informativo')
+ setMsg('La informacion se guardo exitosamente')
+ setShowMsg(true)
+ return
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+ }
+ return (
+ <>
+ handleKeyDown(e)}
+ style={{ width: '75%' }}
+ />
+ {
+ setShowMsg(false)
+ }}
+ />
+ >
+ )
+}
diff --git a/src/Components/Corresponsales/Contenedores/Contenedores.tsx b/src/Components/Corresponsales/Contenedores/Contenedores.tsx
new file mode 100644
index 0000000..152a318
--- /dev/null
+++ b/src/Components/Corresponsales/Contenedores/Contenedores.tsx
@@ -0,0 +1,252 @@
+import React, { FC, useEffect, useState } from 'react'
+import { Button, Card, Col, Form, Row } from 'react-bootstrap'
+import DataTable from 'react-data-table-component'
+import { IconContext } from 'react-icons'
+import { FaEraser, FaTimesCircle } from 'react-icons/fa'
+import { useDispatch, useSelector } from 'react-redux'
+import ICorresponsalContenedores from '../../../Interfaces/Corresponsales/ICorresponsalContenedores'
+import CConDataService from '../../../Services/Corresponsalias/Corresponsales.Contenedores.Services'
+import { RootState } from '../../../store/store'
+import { MsgInformativo } from '../../Utils/Toast/msgInformativo'
+import CContDataService from '../../../Services/Corresponsalias/Corresponsales.Contenedores.Services'
+import {
+ addCorresponsalesContenedores,
+ deleteCorresponsalesContenedores,
+} from '../../../store/features/Corresponsales/CorresponsalesContenedoresSlice'
+import { ControlledInput } from './ControlledInput/ControlledInput'
+
+interface IProps {
+ IDTrafico: number
+ canDelete: boolean
+}
+
+export const Contenedores: FC = (props) => {
+ const dispatch = useDispatch()
+ const mCContenedores = useSelector((state: RootState) => state.CCData.CorresponsalesContenedores)
+ const [DTData, setDTData] = useState([])
+ const [Contenedor, setContenedor] = useState('')
+ const [IDContenedor, setIDContenedor] = useState(0)
+ const [header, setHeader] = useState('')
+ const [msgColor, setMsgColor] = React.useState('primary')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+ const [DialogTabs, setDialogTabs] = useState(false)
+
+ const columnsConcepts = [
+ {
+ name: 'id',
+ width: '10%',
+ selector: (row: ICorresponsalContenedores) => row.id,
+ sortable: true,
+ },
+ {
+ name: 'Contenedor',
+ width: '75%',
+ cell: (row: ICorresponsalContenedores) => {
+ return (
+
+ )
+ },
+ },
+ {
+ name: 'Elimina',
+ cell: (row: ICorresponsalContenedores) => (
+ {
+ setIDContenedor(row.id)
+ setContenedor(row.contenedor)
+ setDialogTabs(true)
+ }}
+ >
+
+
+
+
+ ),
+ },
+ ]
+
+ useEffect(() => {
+ CConDataService.getAll(props.IDTrafico)
+ .then((response) => {
+ setDTData(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }, [])
+
+ const saveForm = () => {
+ const data: ICorresponsalContenedores = {
+ id: IDContenedor,
+ contenedor: Contenedor,
+ idTrafico: props.IDTrafico,
+ fSemaforo: '',
+ semaforo: 0,
+ }
+ CContDataService.Append(data)
+ .then((response) => {
+ if (response.status == 200) {
+ if (data.id === 0) dispatch(addCorresponsalesContenedores(response.data))
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ const deleteItem = () => {
+ CConDataService.Delete(IDContenedor)
+ .then((response) => {
+ if (response.status === 200) {
+ setHeader('Informativo')
+ setMsg(response.data.respuesta)
+ setShowMsg(true)
+ setDialogTabs(false)
+ dispatch(deleteCorresponsalesContenedores(IDContenedor))
+ return
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ const cleanForm = () => {
+ setContenedor('')
+ setIDContenedor(0)
+ }
+
+ return (
+
+
+
+
+
+ {
+ cleanForm()
+ }}
+ >
+
+
+
+
+
+
+
+
+
+ setContenedor((v) => (e.target.validity.valid ? e.target.value : v))}
+ />
+
+
+
+
+
+
+
+
+ 0
+ })}
+ />
+
+
+
{
+ setShowMsg(false)
+ }}
+ />
+ {/* {
+ setDialogTabs(false)
+ }}
+ size='sm'
+ >
+
+
+ ¿Esta seguro de eliminar?
+
+ {Contenedor}
+
+
+
+
+
+
+
+
+
+
+
+
+ */}
+
+ )
+}
diff --git a/src/Components/Corresponsales/Contenedores/ControlledInput/ControlledInput.tsx b/src/Components/Corresponsales/Contenedores/ControlledInput/ControlledInput.tsx
new file mode 100644
index 0000000..ce96048
--- /dev/null
+++ b/src/Components/Corresponsales/Contenedores/ControlledInput/ControlledInput.tsx
@@ -0,0 +1,79 @@
+import React, { FC, useState } from 'react'
+import ICorresponsalContenedores from '../../../../Interfaces/Corresponsales/ICorresponsalContenedores'
+import { MsgInformativo } from '../../../Utils/Toast/msgInformativo'
+import CContDataService from '../../../../Services/Corresponsalias/Corresponsales.Contenedores.Services'
+import { updateCorresponsalesContenedores } from '../../../../store/features/Corresponsales/CorresponsalesContenedoresSlice'
+import { useDispatch } from 'react-redux'
+
+interface IProps {
+ id: number
+ value: any
+ disabled?: boolean
+ mode: number // 1: Number, 2: String
+ IDTrafico: number
+}
+
+export const ControlledInput: FC = (props) => {
+ const dispatch = useDispatch()
+ const [id, setid] = useState(props.id)
+ const [value, setValue] = useState(props.value)
+ const [header, setHeader] = useState('')
+ const [msgColor, setMsgColor] = React.useState('primary')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+
+ const onChange = (event: any) => {
+ setValue(event.target.value)
+ }
+ const handleKeyDown = (event: any) => {
+ if (event.key === 'Enter') {
+ if (isNaN(event.target.value) && props.mode === 1) {
+ alert('Valor no valido!')
+ return
+ }
+ const data: ICorresponsalContenedores = {
+ id: id,
+ contenedor: value,
+ idTrafico: props.IDTrafico,
+ fSemaforo: '',
+ semaforo: 0,
+ }
+ CContDataService.Append(data)
+ .then((response) => {
+ if (response.status == 200) {
+ dispatch(updateCorresponsalesContenedores(response.data))
+ setHeader('Informativo')
+ setMsg('La informacion se guardo exitosamente')
+ setShowMsg(true)
+ return
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+ }
+ return (
+ <>
+ handleKeyDown(e)}
+ style={{ width: '75%' }}
+ />
+ {
+ setShowMsg(false)
+ }}
+ />
+ >
+ )
+}
diff --git a/src/Components/Corresponsales/Contenedores/SelectContainer.tsx b/src/Components/Corresponsales/Contenedores/SelectContainer.tsx
new file mode 100644
index 0000000..9a07f54
--- /dev/null
+++ b/src/Components/Corresponsales/Contenedores/SelectContainer.tsx
@@ -0,0 +1,326 @@
+import { FC, useEffect, useState } from 'react'
+import { useDispatch, useSelector } from 'react-redux'
+import { RootState } from '../../../store/store'
+import CContDataService from '../../../Services/Corresponsalias/Corresponsales.Contenedores.Services'
+import ICorresponsalContenedores from '../../../Interfaces/Corresponsales/ICorresponsalContenedores'
+import { IconContext } from 'react-icons'
+import { BsFillCalendarCheckFill, BsFillCalendarDayFill, BsFillRecordFill, BsFillXCircleFill } from 'react-icons/bs'
+import {
+ deleteCorresponsalesContenedores,
+ updateCorresponsalesContenedores,
+} from '../../../store/features/Corresponsales/CorresponsalesContenedoresSlice'
+import { Alert, Button, Col, Form, Modal, Row } from 'react-bootstrap'
+import DatePicker from 'react-datepicker'
+import 'react-datepicker/dist/react-datepicker.css'
+import { isTypeNode } from 'typescript'
+
+interface IProps {
+ IDTrafico: number
+ Editable: boolean
+}
+
+export const SelectContainer: FC = (props) => {
+ const dispatch = useDispatch()
+ const [toggleSelect, setToggleSelect] = useState(false)
+ const mCContenedores = useSelector((state: RootState) => state.CCData.CorresponsalesContenedores)
+ const [Contenedor, setContenedor] = useState('')
+ const [IDContenedor, setIDContenedor] = useState(0)
+ const [Placeholder, setPlaceholder] = useState('')
+ const [DialogTabs, setDialogTabs] = useState(false)
+ const [DialogAddDate, setDialogAddDate] = useState(false)
+ const [FSemaforo, setFSemaforo] = useState()
+ const [Semaforo, setSemaforo] = useState(0)
+
+ useEffect(() => {
+ setPlaceholder('(' + mCContenedores.filter((item) => item.id > 0).length + ') Contenedores')
+ }, [mCContenedores])
+
+ const loadInfo = (data: ICorresponsalContenedores) => {
+ setIDContenedor(data.id)
+ setContenedor(data.contenedor)
+ }
+
+ const handleKeyDown = (event: any) => {
+ if (event.key === 'Enter') {
+ const data: ICorresponsalContenedores = {
+ id: IDContenedor,
+ contenedor: Contenedor,
+ idTrafico: props.IDTrafico,
+ fSemaforo: FSemaforo ? adjustTimeZone(FSemaforo.toISOString()) : '',
+ semaforo: Semaforo,
+ }
+ CContDataService.Append(data)
+ .then((response) => {
+ if (response.status === 200) {
+ dispatch(updateCorresponsalesContenedores(response.data))
+ setContenedor('')
+ setToggleSelect(true)
+ }
+ })
+ .catch((e: Error) => {
+ return
+ })
+ }
+ }
+
+ 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 updateItem = () => {
+ const data: ICorresponsalContenedores = {
+ id: IDContenedor,
+ contenedor: Contenedor,
+ idTrafico: props.IDTrafico,
+ fSemaforo: FSemaforo ? adjustTimeZone(FSemaforo.toISOString()) : '',
+ semaforo: Semaforo,
+ }
+ // console.log(JSON.stringify(data))
+ CContDataService.Append(data)
+ .then((response) => {
+ if (response.status === 200) {
+ setIDContenedor(0)
+ setContenedor('')
+ setDialogTabs(false)
+ dispatch(updateCorresponsalesContenedores(response.data))
+ return
+ }
+ })
+ .catch((e: Error) => {
+ return
+ })
+ }
+
+ const StrtoDate = (str: string): Date | null => {
+ if (str) {
+ const original: any = new Date(str)
+ return original
+ } else return null
+ }
+
+ return (
+
+
+
+
+
+
+ {
+ setIDContenedor(0)
+ setContenedor('')
+ }}
+ />
+
+
{
+ setContenedor(e.target.value)
+ }}
+ onKeyDown={(e) => handleKeyDown(e)}
+ />
+
+ {
+ setToggleSelect(!toggleSelect)
+ }}
+ />
+
+
+
+ {mCContenedores
+ ? mCContenedores
+ .map((item, index) => {
+ return item.id > 0 ? (
+ - loadInfo(item)}>
+ {
+ setDialogTabs(true)
+ }}
+ >
+
+
+
+
+ {item.contenedor}
+ {
+ setFSemaforo(StrtoDate(item.fSemaforo))
+ setSemaforo(item.semaforo)
+ setDialogAddDate(true)
+ }}
+ >
+ | {item.fSemaforo} |{' '}
+ {item.fSemaforo ? (
+ item.semaforo === 1 ? (
+
+
+
+ ) : (
+
+
+
+ )
+ ) : (
+ ''
+ )}
+
+
+
+
+
+
+
+ ) : (
+ ''
+ )
+ })
+ .reverse()
+ : ''}
+
+
+
+
+
+
{
+ setDialogTabs(false)
+ }}
+ size='sm'
+ >
+
+
+ ¿Esta seguro de eliminar?
+
+ {Contenedor}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{
+ setDialogTabs(false)
+ }}
+ /* size='sm' */
+ >
+
+
+
+
+ ¿Esta seguro de agregar fecha al contenedor: {Contenedor}?
+
+
+
+
+ Fecha
+
+ setFSemaforo(date)}
+ showTimeSelect
+ dateFormat='MM/dd/yyyy HH:mm:ss'
+ placeholderText='No definido'
+ isClearable
+ />
+
+
+
+
+ Semaforo
+
+ {
+ setSemaforo(parseInt(e.target.value))
+ }}
+ value={Semaforo}
+ className='form-select form-select-sm'
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/Components/Corresponsales/CuentasComplementarias/CuentasComplementarias.tsx b/src/Components/Corresponsales/CuentasComplementarias/CuentasComplementarias.tsx
new file mode 100644
index 0000000..78f00f5
--- /dev/null
+++ b/src/Components/Corresponsales/CuentasComplementarias/CuentasComplementarias.tsx
@@ -0,0 +1,569 @@
+import React, { FC, useEffect, useState } from 'react'
+import { Alert, Card, Col, FloatingLabel, Form, Modal, Row } from 'react-bootstrap'
+import { IconContext } from 'react-icons'
+import { BsCloudArrowUpFill, BsFillPlusCircleFill } from 'react-icons/bs'
+import FileManager from '../../Utils/FileManager/FileManager'
+import CuentasComplementariasDS from '../../../Services/Corresponsalias/Corresponsales.CuentasComplementarias.Services'
+import MFileManagerDataService from '../../../Services/Utils/MFileManager.Service'
+import ICorresponsalCuentasComplementarias from '../../../Interfaces/Corresponsales/ICorresponsalCuentasComplementarias'
+import { MsgInformativo } from '../../Utils/Toast/msgInformativo'
+import DataTable from 'react-data-table-component'
+import DTOCorresponsalCuentaComplementaria from '../../../DTO/Corresponsales/DTOCuentaComplementaria'
+import { SelectEstatus } from './SelectEstatus/SelectEstatus'
+import { FcAbout } from 'react-icons/fc'
+import DTOLogCorresponsalComplementariaEstatus from '../../../DTO/Corresponsales/DTOLogCorresponsalComplementariaEstatus'
+import FileManagerDS from '../../../Services/Utils/FileManager.Services'
+import { AiOutlineClose } from 'react-icons/ai'
+import { MdCloudUpload, MdOutlineInventory, MdOutlineSave } from 'react-icons/md'
+import { useDispatch, useSelector } from 'react-redux'
+import { RootState } from '../../../store/store'
+import { FiSave } from 'react-icons/fi'
+import ICorresponsalCuentaComplementariaStatus from '../../../Interfaces/Corresponsales/ICorresponsalCuentaComplementariaEstatus'
+import { updateCorresponsalesCuentasComplementariasEstatus } from '../../../store/features/Corresponsales/CorresponsalesCuentasComplementariasEstatusSlice'
+
+interface IProps {
+ IDTrafico: number
+ UserId: number
+}
+
+export const CuentasComplementarias: FC = (props) => {
+ const dispatch = useDispatch()
+ const [Depto, setDepto] = useState(() => {
+ const stickyValue = window.localStorage.getItem('Departamento')
+ return stickyValue !== null ? JSON.parse(stickyValue) : ''
+ })
+ const mCCCEstatus = useSelector(
+ (state: RootState) => state.CCueCompEstatus.CorresponsalesCuentasComplementariasEstatus
+ )
+ const [showModal, setShowModal] = useState(false)
+ const [showModalLog, setShowModalLog] = useState(false)
+ const [showModalCatalogo, setShowModalCatalogo] = useState(false)
+ const [DTData, setDTData] = useState([])
+ const [CuentaComplementaria, setCuentaComplementaria] = useState([])
+ const [HistorialEstatus, setHistoriaEstatus] = useState([])
+ const [IDCuentaComplementaria, setIdCuentaComplementarias] = useState(0)
+ const [IDPDF, setIDPDF] = useState(0)
+ const [IDXML, setIDXML] = useState(0)
+ const [IDEstatus, setIDEstatus] = useState(0)
+ const [Estatus, setEstatus] = useState('')
+ const [header, setHeader] = useState('')
+ const [msgColor, setMsgColor] = React.useState('primary')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+ const [MsgTime, setMsgTime] = useState(3000)
+
+ const colCuentasComplementarias = [
+ {
+ name: 'id',
+ width: '60px',
+ selector: (row: ICorresponsalCuentasComplementarias) => row.id,
+ sortable: true,
+ },
+ {
+ name: '',
+ width: '20px',
+ cell: (row: ICorresponsalCuentasComplementarias) => {
+ return row.archivoXML ? (
+ {
+ clearFile(row.id, 1, row.idXML)
+ }}
+ >
+
+
+
+
+ ) : (
+ {
+ setPreloader(row.id)
+ }}
+ >
+
+
+
+
+ )
+ },
+ },
+ {
+ name: 'XML',
+ width: '300px',
+ cell: (row: ICorresponsalCuentasComplementarias) => {
+ return (
+ {
+ getFileContent(row.idXML, 22, row.archivoXML)
+ }}
+ >
+ {row.archivoXML}
+
+ )
+ },
+ },
+ {
+ name: '',
+ width: '20px',
+ cell: (row: ICorresponsalCuentasComplementarias) => {
+ return row.archivoPDF ? (
+ {
+ clearFile(row.id, 2, row.idPDF)
+ }}
+ >
+
+
+
+
+ ) : (
+ {
+ setPreloader(row.id)
+ }}
+ >
+
+
+
+
+ )
+ },
+ },
+ {
+ name: 'PDF',
+ width: '300px',
+ cell: (row: ICorresponsalCuentasComplementarias) => {
+ return (
+ {
+ getFileContent(row.idPDF, 21, row.archivoPDF)
+ }}
+ >
+ {row.archivoPDF}
+
+ )
+ },
+ },
+ {
+ name: 'Estatus',
+ width: '400px',
+ cell: (row: ICorresponsalCuentasComplementarias) => {
+ return
+ },
+ },
+ {
+ name: 'Historico',
+ width: '110px',
+ cell: (row: ICorresponsalCuentasComplementarias) => (
+ {
+ showHistoricoEstatus(row.id)
+ }}
+ >
+
+
+
+
+ ),
+ },
+ ]
+
+ const setPreloader = (id: number) => {
+ setIdCuentaComplementarias(id)
+ setIDPDF(0)
+ setIDXML(0)
+ setShowModal(true)
+ }
+
+ const clearFile = (IDCuenta: number, witchFile: number, idFile: number) => {
+ CuentasComplementariasDS.ClearFile(IDCuenta, witchFile)
+ .then((response) => {
+ FileManagerDS.DeleteFile(idFile)
+ .then((response) => {
+ loadCuentaComplementaria()
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ const createCuentaComplementaria = () => {
+ const data: DTOCorresponsalCuentaComplementaria = {
+ id: 0,
+ idTrafico: props.IDTrafico,
+ idFile: 0,
+ }
+ CuentasComplementariasDS.Append(data)
+ .then((response) => {
+ // setCuentaComplementaria(response.data)
+ setIdCuentaComplementarias(response.data.id)
+ setIDPDF(response.data.idPDF)
+ setIDXML(response.data.idXML)
+ setShowModal(true)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ const loadCuentaComplementaria = () => {
+ CuentasComplementariasDS.Get(props.IDTrafico)
+ .then((response) => {
+ setDTData(response.data)
+ setIDPDF(0)
+ setIDXML(0)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ useEffect(() => {
+ setIDPDF(0)
+ setIDXML(0)
+ }, [IDCuentaComplementaria])
+
+ useEffect(() => {
+ loadCuentaComplementaria()
+ }, [])
+
+ const showHistoricoEstatus = (id: number) => {
+ CuentasComplementariasDS.GetLogEstatus(id)
+ .then((response) => {
+ setHistoriaEstatus(response.data)
+ setShowModalLog(true)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ const updateFile = (idFile: number) => {
+ if (IDCuentaComplementaria === 0) {
+ setHeader('Error')
+ setMsg('Para proceder, es necesario que cree una cuenta complementaria o seleccione una existente')
+ setShowMsg(true)
+ return
+ }
+ const data: DTOCorresponsalCuentaComplementaria = {
+ id: IDCuentaComplementaria,
+ idFile: idFile,
+ idTrafico: props.IDTrafico,
+ }
+ CuentasComplementariasDS.Append(data)
+ .then((response) => {
+ loadCuentaComplementaria()
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ const getFileContent = (id: number, proceso: number, archivo: string) => {
+ if (id > 0) {
+ MFileManagerDataService.getFileContentById(id, proceso)
+ .then((response: any) => {
+ if (response.status === 200) {
+ if (archivo.toLowerCase().endsWith('.pdf')) {
+ console.log(response.data)
+ const blob = new Blob([response.data], { type: 'application/pdf' })
+ const url = window.URL.createObjectURL(blob)
+ window.open(url)
+ } else if (archivo.toLowerCase().endsWith('.xml')) {
+ console.log(response.data)
+ const blob = new Blob([response.data], { type: 'application/xml' })
+ const url = window.URL.createObjectURL(blob)
+ window.open(url)
+ }
+ } else {
+ setHeader('Error')
+ setMsg('No existe ningun archivo asignado')
+ setShowMsg(true)
+ return
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('A este concepto no se le ha anexado archivo')
+ setShowMsg(true)
+ return
+ })
+ }
+ }
+
+ const saveEstatus = () => {
+ const data: ICorresponsalCuentaComplementariaStatus = {
+ id: IDEstatus,
+ estatus: Estatus,
+ }
+ CuentasComplementariasDS.AppendEstatus(data)
+ .then((response) => {
+ dispatch(updateCorresponsalesCuentasComplementariasEstatus(response.data))
+ setIDEstatus(0)
+ setEstatus('')
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ return (
+
+
+
+ {
+ setShowModalCatalogo(true)
+ }}
+ title='De un click aqui para agregar abrir el catalogo de conceptos de rechazo'
+ >
+
+
+
+
+
+
+
+ {
+ createCuentaComplementaria()
+ }}
+ title='De un click aqui para agregar una nueva cuenta complementaria'
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{
+ setShowModal(false)
+ }}
+ size={'sm'}
+ dialogClassName={'modal-50w'}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
{
+ setShowModalLog(false)
+ }}
+ size={'sm'}
+ dialogClassName={'modal-50w'}
+ >
+
+ {HistorialEstatus.length > 0 ? (
+
+
+
+ Registrado |
+ Estatus |
+
+ {HistorialEstatus
+ ? HistorialEstatus.map((item, index) => {
+ return (
+
+ {item.fCreacion} |
+ {item.sEstatus} |
+
+ )
+ })
+ : ''}
+
+
+ ) : (
+
+ No hay informacion al respecto
+
+ )}
+
+
+
+
{
+ setShowModalCatalogo(false)
+ }}
+ size={'sm'}
+ dialogClassName={'modal-50w'}
+ >
+
+ {mCCCEstatus.length > 0 ? (
+ <>
+
+
+
+
+
+
+
+
+
+ {
+ setEstatus(e.target.value)
+ }}
+ />
+
+
+
+ {
+ saveEstatus()
+ }}
+ >
+
+
+
+
+
+
+
+
+
+ id
+ Estatus
+
+
+ {mCCCEstatus
+ ? mCCCEstatus
+ .filter((item) => {
+ return item.id > 1
+ })
+ .map((item, index) => {
+ return (
+ {
+ setIDEstatus(item.id)
+ setEstatus(item.estatus)
+ }}
+ >
+ {item.id}
+ {item.estatus}
+
+
+ )
+ })
+ : ''}
+
+ >
+ ) : (
+
+ No hay informacion al respecto
+
+ )}
+
+
+
+
{
+ setShowMsg(false)
+ }}
+ />
+
+ )
+}
diff --git a/src/Components/Corresponsales/CuentasComplementarias/SelectEstatus/SelectEstatus.tsx b/src/Components/Corresponsales/CuentasComplementarias/SelectEstatus/SelectEstatus.tsx
new file mode 100644
index 0000000..8df19fe
--- /dev/null
+++ b/src/Components/Corresponsales/CuentasComplementarias/SelectEstatus/SelectEstatus.tsx
@@ -0,0 +1,85 @@
+import React, { FC, useState } from 'react'
+import { Form } from 'react-bootstrap'
+import { useSelector } from 'react-redux'
+import { RootState } from '../../../../store/store'
+import CuentasComplementariasDS from '../../../../Services/Corresponsalias/Corresponsales.CuentasComplementarias.Services'
+import DTOCuentaComplementariaEstatus from '../../../../DTO/Corresponsales/DTOCuentaComplementariaEstatus'
+import { MsgInformativo } from '../../../Utils/Toast/msgInformativo'
+
+interface IProps {
+ IDEstatus: number
+ IDCuenta: number
+ Enabled: boolean
+}
+
+export const SelectEstatus: FC = (props) => {
+ const [Depto, setDepto] = useState(() => {
+ const stickyValue = window.localStorage.getItem('Departamento')
+ return stickyValue !== null ? JSON.parse(stickyValue) : ''
+ })
+ const [header, setHeader] = useState('')
+ const [msgColor, setMsgColor] = React.useState('primary')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+ const [MsgTime, setMsgTime] = useState(3000)
+ const mCCCEstatus = useSelector(
+ (state: RootState) => state.CCueCompEstatus.CorresponsalesCuentasComplementariasEstatus
+ )
+ const [IDEstatus, setIDEstatus] = useState(props.IDEstatus)
+
+ const changeStatus = (nuevoEstatus: number) => {
+ setIDEstatus(nuevoEstatus)
+ const data: DTOCuentaComplementariaEstatus = {
+ id: props.IDCuenta,
+ estatus: nuevoEstatus,
+ }
+ CuentasComplementariasDS.ChangeStatus(data)
+ .then((response) => {
+ setHeader('Confirmacion')
+ setMsg('Se ha cambiado el estatus de la cuenta')
+ setShowMsg(true)
+ return
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ return (
+
+
{
+ changeStatus(parseInt(e.target.value))
+ }}
+ className='form-select form-select-sm'
+ style={{ width: '350px' }}
+ disabled={Depto !== 'Contabilidad' || props.Enabled}
+ value={IDEstatus}
+ >
+ {mCCCEstatus
+ ? mCCCEstatus.map((item, index) => {
+ return (
+
+ )
+ })
+ : ''}
+
+ {
+ setShowMsg(false)
+ }}
+ />
+
+ )
+}
diff --git a/src/Components/Corresponsales/Guias/SelectGuias.tsx b/src/Components/Corresponsales/Guias/SelectGuias.tsx
new file mode 100644
index 0000000..0064a55
--- /dev/null
+++ b/src/Components/Corresponsales/Guias/SelectGuias.tsx
@@ -0,0 +1,190 @@
+import { FC, useEffect, useState } from 'react'
+import { useDispatch, useSelector } from 'react-redux'
+import { RootState } from '../../../store/store'
+import CGuiasDataService from '../../../Services/Corresponsalias/Corresponsales.Guias.Services'
+import ICorresponsalesGuias from '../../../Interfaces/Corresponsales/ICorresponsalesGuias'
+import { IconContext } from 'react-icons'
+import { BsFillXCircleFill } from 'react-icons/bs'
+import { Alert, Button, Col, Modal, Row } from 'react-bootstrap'
+import {
+ deleteCorresponsalesGuias,
+ updateCorresponsalesGuias,
+} from '../../../store/features/Corresponsales/CorresponsalesGuiasSlice'
+
+interface IProps {
+ IDTrafico: number
+ Editable: boolean
+}
+
+export const SelectGuias: FC = (props) => {
+ const dispatch = useDispatch()
+ const [toggleSelect, setToggleSelect] = useState(false)
+ const mCGuias = useSelector((state: RootState) => state.CGuias.CorresponsalesGuias)
+ const [Guia, setGuia] = useState('')
+ const [IDGuia, setIDGuia] = useState(0)
+ const [Placeholder, setPlaceholder] = useState('')
+ const [DialogTabs, setDialogTabs] = useState(false)
+
+ useEffect(() => {
+ setPlaceholder('(' + mCGuias.filter((item) => item.id > 0).length + ') Guias')
+ }, [mCGuias])
+
+ const loadInfo = (data: ICorresponsalesGuias) => {
+ setIDGuia(data.id)
+ setGuia(data.guia)
+ }
+
+ const handleKeyDown = (event: any) => {
+ if (event.key === 'Enter') {
+ const data: ICorresponsalesGuias = {
+ id: IDGuia,
+ guia: Guia,
+ idTrafico: props.IDTrafico,
+ }
+ CGuiasDataService.Append(data)
+ .then((response) => {
+ if (response.status === 200) {
+ dispatch(updateCorresponsalesGuias(response.data))
+ setGuia('')
+ setToggleSelect(true)
+ }
+ })
+ .catch((e: Error) => {
+ return
+ })
+ }
+ }
+
+ const deleteItem = () => {
+ CGuiasDataService.Delete(IDGuia)
+ .then((response) => {
+ if (response.status === 200) {
+ setIDGuia(0)
+ setGuia('')
+ setDialogTabs(false)
+ dispatch(deleteCorresponsalesGuias(IDGuia))
+ return
+ }
+ })
+ .catch((e: Error) => {
+ return
+ })
+ }
+ return (
+
+ {' '}
+
+
+
+
+
+ {
+ setIDGuia(0)
+ setGuia('')
+ }}
+ />
+
+
{
+ setGuia(e.target.value)
+ }}
+ onKeyDown={(e) => handleKeyDown(e)}
+ />
+
+ {
+ setToggleSelect(!toggleSelect)
+ }}
+ />
+
+
+
+ {mCGuias
+ ? mCGuias
+ .map((item, index) => {
+ return item.id > 0 ? (
+ - loadInfo(item)}>
+ {
+ setDialogTabs(true)
+ }}
+ >
+
+
+
+
+ {item.guia}
+
+ ) : (
+ ''
+ )
+ })
+ .reverse()
+ : ''}
+
+
+
+
+
+
{
+ setDialogTabs(false)
+ }}
+ size='sm'
+ >
+
+
+ ¿Esta seguro de eliminar?
+
+ {Guia}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/Components/Corresponsales/PagosTerceros/ControlledInput/ControlledInput.tsx b/src/Components/Corresponsales/PagosTerceros/ControlledInput/ControlledInput.tsx
new file mode 100644
index 0000000..d9dc7a6
--- /dev/null
+++ b/src/Components/Corresponsales/PagosTerceros/ControlledInput/ControlledInput.tsx
@@ -0,0 +1,110 @@
+import React, { FC, useEffect, useState } from 'react'
+import { MsgInformativo } from '../../../Utils/Toast/msgInformativo'
+import CFac3DataService from '../../../../Services/Corresponsalias/Corresponsales.FacturasTerceros.services'
+import { useDispatch, useSelector } from 'react-redux'
+import ICorresponsalTerceros from '../../../../Interfaces/Corresponsales/ICorresponsalFacturasTerceros'
+import { updateCorresponsalesFacturasTerceros } from '../../../../store/features/Corresponsales/CorresponsalesFacturasTercerosSlice'
+import { Form } from 'react-bootstrap'
+import { RootState } from '../../../../store/store'
+
+interface IProps {
+ row: ICorresponsalTerceros
+ disabled?: boolean
+ mode: number // 1: Number, 2: String
+}
+
+export const ControlledInput: FC = (props) => {
+ const dispatch = useDispatch()
+ const mProveedores = useSelector((state: RootState) => state.CatProveedores.CatalogoProveedores)
+ const [id, setid] = useState(props.row.id)
+ const [value, setValue] = useState(props.row.factura)
+ const [IDProveedor, setIDProveedor] = useState(props.row.idProveedor)
+ const [ClasificacionProveedor, setClasificacionProveedor] = useState(1)
+ const [header, setHeader] = useState('')
+ const [msgColor, setMsgColor] = React.useState('primary')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+
+ const onChange = (event: any) => {
+ setValue(event.target.value)
+ }
+
+ const handleKeyDown = (event: any) => {
+ if (event.key === 'Enter') {
+ if (isNaN(event.target.value) && props.mode === 1) {
+ alert('Valor no valido!')
+ return
+ }
+ const data: ICorresponsalTerceros = {
+ id: id,
+ factura: value,
+ idTrafico: props.row.idTrafico,
+ idProveedor: IDProveedor,
+ }
+ CFac3DataService.Append(data)
+ .then((response) => {
+ if (response.status === 200) {
+ dispatch(updateCorresponsalesFacturasTerceros(response.data.registro))
+ setHeader('Informativo')
+ setMsg('La informacion se guardo exitosamente')
+ setShowMsg(true)
+ return
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+ }
+
+ useEffect(() => {
+ console.log('El proveedor es:............................' + JSON.stringify(props.row))
+ }, [])
+
+ return (
+ <>
+ handleKeyDown(e)}
+ style={{ width: '120px' }}
+ />
+
+ {
+ setIDProveedor(parseInt(f.target.value))
+ }}
+ value={IDProveedor}
+ className='form-select form-select-sm'
+ >
+ {mProveedores
+ ? mProveedores
+ .filter(function (row) {
+ return row.clasificacion === ClasificacionProveedor
+ })
+ .map((p) => {
+ return (
+
+ )
+ })
+ : null}
+
+ {
+ setShowMsg(false)
+ }}
+ />
+ >
+ )
+}
diff --git a/src/Components/Corresponsales/PagosTerceros/PagosTerceros.tsx b/src/Components/Corresponsales/PagosTerceros/PagosTerceros.tsx
new file mode 100644
index 0000000..1a4b8ca
--- /dev/null
+++ b/src/Components/Corresponsales/PagosTerceros/PagosTerceros.tsx
@@ -0,0 +1,365 @@
+import React, { FC, useEffect, useState } from 'react';
+import { Alert, Button, Card, Col, Form, Modal, Row } from 'react-bootstrap';
+import DataTable from 'react-data-table-component';
+import { IconContext } from 'react-icons';
+import { FaEraser, FaTimesCircle } from 'react-icons/fa';
+import { useDispatch, useSelector } from 'react-redux';
+import ICorresponsalTerceros from '../../../Interfaces/Corresponsales/ICorresponsalFacturasTerceros';
+import { RootState } from '../../../store/store';
+import { MsgInformativo } from '../../Utils/Toast/msgInformativo';
+import CFac3DataService from '../../../Services/Corresponsalias/Corresponsales.FacturasTerceros.services';
+import { ControlledInput } from './ControlledInput/ControlledInput';
+import {
+ addCorresponsalesFacturasTerceros,
+ deleteCorresponsalesFacturasTerceros,
+} from '../../../store/features/Corresponsales/CorresponsalesFacturasTercerosSlice';
+import { CatProveedores } from '../CatProveedores/CatProveedores';
+import { FcManager } from 'react-icons/fc';
+import { resourceUsage } from 'process';
+
+interface IProps {
+ IDTrafico: number;
+ IDCorresponsal: number;
+ canDelete: boolean;
+}
+
+export const PagosTerceros: FC = (props) => {
+ const dispatch = useDispatch();
+ const mCFacturas3 = useSelector(
+ (state: RootState) => state.CF3rosData.CorresponsalesFacturasTerceros
+ );
+ const mProveedores = useSelector(
+ (state: RootState) => state.CatProveedores.CatalogoProveedores
+ );
+ const [IDProveedor, setIDProveedor] = useState(-1);
+ const [DTData, setDTData] = useState([]);
+ const [ShowModal, setShowModal] = useState(false);
+ const [Factura, setFactura] = useState('');
+ const [IDFactura, setIDFactura] = useState(0);
+ const [header, setHeader] = useState('');
+ const [msgColor, setMsgColor] = React.useState('primary');
+ const [show, setShowMsg] = useState(false);
+ const [msg, setMsg] = useState('');
+ const [MsgTime, setMsgTime] = useState(4000);
+ const [DialogTabs, setDialogTabs] = useState(false);
+ const [msgDialog, setMsgDialog] = useState(false);
+ const [ClasificacionProveedor, setClasificacionProveedor] = useState(1);
+
+ const columnsFacturas3 = [
+ {
+ name: 'id',
+ width: '10%',
+ selector: (row: ICorresponsalTerceros) => row.id,
+ sortable: true,
+ },
+ {
+ name: 'Factura',
+ width: '75%',
+ cell: (row: ICorresponsalTerceros) => {
+ return ;
+ },
+ },
+ {
+ name: 'Elimina',
+ cell: (row: ICorresponsalTerceros) => (
+ {
+ setIDFactura(row.id);
+ setFactura(row.factura);
+ setDialogTabs(true);
+ }}
+ >
+
+
+
+
+ ),
+ },
+ ];
+
+ useEffect(() => {
+ CFac3DataService.getAll(props.IDTrafico)
+ .then((response) => {
+ setDTData(response.data);
+ })
+ .catch((e: Error) => {
+ setHeader('Error');
+ setMsg('Ocurrio un error: ' + e);
+ setShowMsg(true);
+ return;
+ });
+ mProveedores.length > 0
+ ? setIDProveedor(mProveedores[0].id)
+ : setIDProveedor(0);
+ }, []);
+
+ const saveForm = () => {
+ if (IDProveedor === 0) {
+ setHeader('Error');
+ setMsg('Para poder continuar, por favor, seleccione el proveedor');
+ setShowMsg(true);
+ return false;
+ }
+ if (Factura.length === 0) {
+ setHeader('Error');
+ setMsg('Para poder continuar, por favor, proporcione la factura');
+ setShowMsg(true);
+ return false;
+ }
+ const data: ICorresponsalTerceros = {
+ id: IDFactura,
+ factura: Factura,
+ idTrafico: props.IDTrafico,
+ idProveedor: IDProveedor,
+ };
+ CFac3DataService.Append(data)
+ .then((response) => {
+ if (response.status === 200) {
+ setHeader('Informativo');
+ setMsg(response.data.respuesta);
+ setShowMsg(true);
+ setDialogTabs(false);
+ if (data.id === 0)
+ dispatch(addCorresponsalesFacturasTerceros(response.data.registro));
+ }
+ })
+ .catch((error: any) => {
+ if (error.response) {
+ setHeader('Error: No se permite duplicidad');
+ setMsgColor('warning');
+ setMsgTime(10000);
+ setMsg(
+ error.response.data.respuesta +
+ ' en la factura: ' +
+ error.response.data.registro.factura +
+ ' en el trafico: CG' +
+ error.response.data.registro.idTrafico
+ );
+ setShowMsg(true);
+ return;
+ }
+ });
+ };
+
+ const deleteItem = () => {
+ CFac3DataService.Delete(IDFactura)
+ .then((response) => {
+ if (response.status === 200) {
+ setHeader('Informativo');
+ setMsg(response.data.respuesta);
+ setShowMsg(true);
+ setDialogTabs(false);
+ dispatch(deleteCorresponsalesFacturasTerceros(IDFactura));
+ return;
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error');
+ setMsg('Ocurrio un error: ' + e);
+ setShowMsg(true);
+ return;
+ });
+ };
+
+ const cleanForm = () => {
+ setFactura('');
+ setIDFactura(0);
+ };
+
+ return (
+
+ );
+};
diff --git a/src/Components/Corresponsales/Partidas/Dialog/DialogBox.tsx b/src/Components/Corresponsales/Partidas/Dialog/DialogBox.tsx
new file mode 100644
index 0000000..c50bfc6
--- /dev/null
+++ b/src/Components/Corresponsales/Partidas/Dialog/DialogBox.tsx
@@ -0,0 +1,308 @@
+import React, { FC, useEffect, useState } from "react";
+import { Button, Card, Col, Container, Form, Row } from "react-bootstrap";
+import * as CurrencyFormat from "react-currency-format";
+import ICorresponsalPartidas from "../../../../Interfaces/Corresponsales/ICorresponsalPedimentoPartidas";
+import { MsgInformativo } from "../../../Utils/Toast/msgInformativo";
+import CPartidasService from "../../../../Services/Corresponsalias/Corresponsales.Trafico.Pedimento.Partidas.Services";
+import { useDispatch, useSelector } from "react-redux";
+import { updateCorresponsalesPartidas } from "../../../../store/features/Corresponsales/CorresponsalesPartidasSlice";
+import { RootState } from "../../../../store/store";
+
+interface IProps {
+ IDTrafico: number;
+ IDPartida: number;
+}
+
+export const DialogBox: FC = (props) => {
+ const dispatch = useDispatch();
+ const mCFacturas = useSelector(
+ (state: RootState) => state.CFData.CorresponsalesFacturas
+ );
+ const mCatProveedores = useSelector(
+ (state: RootState) => state.CatProveedores.CatalogoProveedores
+ );
+ const mCPartidas = useSelector(
+ (state: RootState) => state.CPartidas.CorresponsalesPartidas
+ );
+ const [Factura, setFactura] = useState("");
+ const [IDFactura, setIDFactura] = useState(0);
+ const [IDPartida, setIDPartida] = useState(0);
+ const [Proveedor, setProveedor] = useState("");
+ const [IDProveedor, setIDProveedor] = useState(0);
+ const [DescripcionMaterial, setDescripcionMaterial] = useState("");
+ const [FraccionArancelaria, setFraccionArancelaria] = useState("");
+ const [ValorAduana, setValorAduana] = useState(0);
+ const [DTA, setDTA] = useState(0);
+ const [IGI, setIGI] = useState(0);
+ const [IEPS, setIEPS] = useState(0);
+ const [header, setHeader] = useState("");
+ // const [msgColor, setMsgColor] = React.useState('primary')
+ const [show, setShowMsg] = useState(false);
+ const [msg, setMsg] = useState("");
+ const msgColor = "primary";
+
+ const saveForm = () => {
+ const data: ICorresponsalPartidas = {
+ id: IDPartida,
+ idTrafico: props.IDTrafico,
+ partida: 0,
+ idFactura: IDFactura,
+ factura: Factura,
+ proveedor: Proveedor,
+ descripcionMaterial: DescripcionMaterial,
+ fraccionArancelaria: FraccionArancelaria,
+ valorAduana: ValorAduana,
+ dta: DTA,
+ igi: IGI,
+ ieps: IEPS,
+ activo: 1,
+ };
+ if (Factura.length < 4) {
+ setHeader("Error");
+ setMsg("Proporcione la factura");
+ setShowMsg(true);
+ return;
+ }
+ if (Proveedor.length < 4) {
+ setHeader("Error");
+ setMsg("Proporcione el proveedor");
+ setShowMsg(true);
+ return;
+ }
+ if (DescripcionMaterial.length < 4) {
+ setHeader("Error");
+ setMsg("Proporcione la descripcion del material");
+ setShowMsg(true);
+ return;
+ }
+ if (FraccionArancelaria.length < 4) {
+ setHeader("Error");
+ setMsg("Proporcione la fraccion arancelaria");
+ setShowMsg(true);
+ return;
+ }
+ if (ValorAduana === 0) {
+ setHeader("Error");
+ setMsg("Proporcione el valor aduana");
+ setShowMsg(true);
+ return;
+ }
+ console.log(JSON.stringify(data));
+ CPartidasService.Append(data)
+ .then((response) => {
+ dispatch(updateCorresponsalesPartidas(response.data));
+ setHeader("Informativo");
+ setMsg("El registro se guardado exitosamente!");
+ setShowMsg(true);
+ })
+ .catch((e: Error) => {
+ setHeader("Error");
+ setMsg("Ocurrio un error: " + e);
+ setShowMsg(true);
+ return;
+ });
+ };
+
+ useEffect(() => {
+ const dataFactura = mCFacturas.filter((item) => item.id === IDFactura);
+ setFactura(dataFactura[0].factura);
+ setIDProveedor(dataFactura[0].proveedor);
+ const dataProveedor = mCatProveedores.filter(
+ (item) => item.id === dataFactura[0].proveedor
+ );
+ setProveedor(dataProveedor[0].nombre);
+ }, [IDFactura, mCFacturas, mCatProveedores]);
+
+ useEffect(() => {
+ const data = mCPartidas.filter((item) => item.id === props.IDPartida);
+ if (data[0]) {
+ setIDPartida(data[0].id);
+ setIDFactura(data[0].idFactura);
+ setFactura(data[0].factura);
+ setDescripcionMaterial(data[0].descripcionMaterial);
+ setProveedor(data[0].proveedor);
+ setDTA(data[0].dta);
+ setIGI(data[0].igi);
+ setIEPS(data[0].ieps);
+ setFraccionArancelaria(data[0].fraccionArancelaria);
+ setValorAduana(data[0].valorAduana);
+ }
+ }, [props.IDPartida, mCPartidas]);
+
+ return (
+
+
+
+
+ Factura
+
+ {/* {
+ setFactura(e.target.value)
+ }}
+ /> */}
+ {
+ setIDFactura(parseInt(e.target.value));
+ }}
+ value={IDFactura}
+ className="form-select form-select-sm"
+ >
+ {mCFacturas
+ ? mCFacturas.map((item, index) => {
+ return item.idTrafico === props.IDTrafico ? (
+
+ ) : (
+
+ );
+ })
+ : ""}
+
+
+
+
+
+
+
+
+ Proveedor
+
+ {
+ setProveedor(e.target.value);
+ }}
+ disabled={true}
+ />
+
+
+
+ Descripcion del material
+
+ {
+ setDescripcionMaterial(e.target.value);
+ }}
+ />
+
+
+
+ Fraccion arancelaria
+
+ {
+ setFraccionArancelaria(e.target.value);
+ }}
+ />
+
+ Valor aduana
+
+ {
+ const { value } = values;
+ setValorAduana(value);
+ }}
+ />
+
+
+
+
+ DTA
+
+
+ {
+ const { value } = values;
+ setDTA(value.length === 0 ? 0 : value);
+ }}
+ />
+
+
+
+ IGI
+
+
+ {
+ const { value } = values;
+ setIGI(value);
+ }}
+ />
+
+
+
+ IEPS
+
+
+ {
+ const { value } = values;
+ setIEPS(value);
+ }}
+ />
+
+
+
+
+ {
+ setShowMsg(false);
+ }}
+ />
+
+ );
+};
diff --git a/src/Components/Corresponsales/Partidas/Partidas.tsx b/src/Components/Corresponsales/Partidas/Partidas.tsx
new file mode 100644
index 0000000..163b293
--- /dev/null
+++ b/src/Components/Corresponsales/Partidas/Partidas.tsx
@@ -0,0 +1,269 @@
+import React, { FC, useState } from 'react'
+import { Alert, Button, Card, Col, Modal, Row } from 'react-bootstrap'
+import ICorresponsalPartidas from '../../../Interfaces/Corresponsales/ICorresponsalPedimentoPartidas'
+import { MsgInformativo } from '../../Utils/Toast/msgInformativo'
+import CPartidasService from '../../../Services/Corresponsalias/Corresponsales.Trafico.Pedimento.Partidas.Services'
+import { useDispatch, useSelector } from 'react-redux'
+import DataTable from 'react-data-table-component'
+import { IconContext } from 'react-icons'
+import { BsFillPencilFill, BsFillTrashFill } from 'react-icons/bs'
+import { RootState } from '../../../store/store'
+import { DialogBox } from './Dialog/DialogBox'
+import { deleteCorresponsalesPartidas } from '../../../store/features/Corresponsales/CorresponsalesPartidasSlice'
+
+interface IProps {
+ IDTrafico: number
+ canEdit: boolean
+}
+
+export const Partidas: FC = (props) => {
+ const dispatch = useDispatch()
+ const [Depto, setDepto] = useState(() => {
+ const stickyValue = window.localStorage.getItem('Departamento')
+ return stickyValue !== null ? JSON.parse(stickyValue) : ''
+ })
+ const [ShowModal, setShowModal] = useState(false)
+ const [MsgDialogDelete, setMsgDialogDelete] = useState(false)
+ const [IDPartida, setIDPartida] = useState(0)
+ const [Factura, setFactura] = useState('')
+ const [Descripcion, setDescripcion] = useState('')
+ const [header, setHeader] = useState('')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+ // const [Info, setInfo] = useState()
+ const mCPartidas = useSelector(
+ (state: RootState) => state.CPartidas.CorresponsalesPartidas
+ )
+ const msgColor = 'primary'
+ const dataColPartidas = [
+ {
+ name: 'Partida',
+ width: '90px',
+ selector: (row: ICorresponsalPartidas) => row.partida,
+ sortable: true
+ },
+ {
+ name: 'Factura',
+ width: '100px',
+ selector: (row: ICorresponsalPartidas) => row.factura,
+ sortable: true
+ },
+ {
+ name: 'Proveedor',
+ center: true,
+ width: '450px',
+ selector: (row: ICorresponsalPartidas) => row.proveedor
+ },
+ {
+ name: 'Descripcion de material',
+ center: true,
+ width: '450px',
+ selector: (row: ICorresponsalPartidas) => row.descripcionMaterial
+ },
+ {
+ name: 'Frac arancelaria',
+ center: true,
+ width: '120px',
+ selector: (row: ICorresponsalPartidas) => row.fraccionArancelaria
+ },
+ {
+ name: 'Val aduana',
+ center: true,
+ width: '100px',
+ selector: (row: ICorresponsalPartidas) => row.valorAduana
+ },
+ {
+ name: 'DTA',
+ center: true,
+ width: '70px',
+ selector: (row: ICorresponsalPartidas) => row.dta
+ },
+ {
+ name: 'IGI',
+ center: true,
+ width: '70px',
+ selector: (row: ICorresponsalPartidas) => row.igi
+ },
+ {
+ name: 'IEPS',
+ center: true,
+ width: '70px',
+ selector: (row: ICorresponsalPartidas) => row.ieps
+ },
+ {
+ name: '',
+ width: '130px',
+ cell: (row: ICorresponsalPartidas) => (
+
+
+ {
+ loadData(row)
+ }}
+ >
+
+
+
+
+
+
+
+ {
+ confirmDelete(row)
+ }}
+ >
+
+
+
+
+
+
+ )
+ }
+ ]
+
+ const loadData = (row: ICorresponsalPartidas) => {
+ setIDPartida(row.id)
+ setShowModal(true)
+ }
+
+ const confirmDelete = (row: ICorresponsalPartidas) => {
+ setIDPartida(row.id)
+ setFactura(row.factura)
+ setDescripcion(row.descripcionMaterial)
+ setMsgDialogDelete(true)
+ }
+
+ const deleteItem = () => {
+ CPartidasService.Delete(IDPartida)
+ .then((response) => {
+ if (response.status === 200) {
+ dispatch(deleteCorresponsalesPartidas(IDPartida))
+ setMsgDialogDelete(false)
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ return (
+
+
+
+
+ Partidas
+
+
+
+
+
+ {
+ if (a.idTrafico === props.IDTrafico) {
+ return a
+ }
+ })}
+ />
+
+
{
+ setShowModal(false)
+ }}
+ size={'sm'}
+ dialogClassName={'modal-50w'}
+ >
+
+
+
+
+
+
+
setMsgDialogDelete(false)}
+ size="lg"
+ >
+
+
+
+ Favor de confirmar
+
+
+ ¿Esta seguro de eliminar la factura: {Factura} : {Descripcion}?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{
+ setShowMsg(false)
+ }}
+ />
+
+ )
+}
diff --git a/src/Components/Corresponsales/ProveedorFactura/ControlledInput/ControlledInput.tsx b/src/Components/Corresponsales/ProveedorFactura/ControlledInput/ControlledInput.tsx
new file mode 100644
index 0000000..0c5a0c6
--- /dev/null
+++ b/src/Components/Corresponsales/ProveedorFactura/ControlledInput/ControlledInput.tsx
@@ -0,0 +1,148 @@
+import React, { FC, useEffect, useState } from 'react';
+import { MsgInformativo } from '../../../Utils/Toast/msgInformativo';
+import { useDispatch, useSelector } from 'react-redux';
+import { updateCorresponsalesFacturas } from '../../../../store/features/Corresponsales/CorresponsalesFacturasSlice';
+import ICorresponsalFacturas from '../../../../Interfaces/Corresponsales/ICorresponsalFacturas';
+import CorFacDataService from '../../../../Services/Corresponsalias/Corresponsales.Facturas.Services';
+import { RootState } from '../../../../store/store';
+import { Form } from 'react-bootstrap';
+
+interface IProps {
+ record: ICorresponsalFacturas;
+ disabled?: boolean;
+ mode: number; // 1: Number, 2: String
+}
+
+export const ControlledInput: FC = (props) => {
+ const dispatch = useDispatch();
+ const mProveedores = useSelector(
+ (state: RootState) => state.CatProveedores.CatalogoProveedores
+ );
+ const [id, setid] = useState(props.record.id);
+ const [value, setValue] = useState(props.record.factura);
+ const [IDProveedor, setIDProveedor] = useState(props.record.proveedor);
+ const [ValorFacturaDls, setValorFacturaDls] = useState(
+ props.record.valorFacturaDls
+ );
+ const [Pedido, setPedido] = useState(props.record.pedido);
+ const [header, setHeader] = useState('');
+ const [msgColor, setMsgColor] = React.useState('primary');
+ const [show, setShowMsg] = useState(false);
+ const [msg, setMsg] = useState('');
+ const [ClasificacionProveedor, setClasificacionProveedor] = useState(2);
+
+ const onChangeFac = (event: any) => {
+ setValue(event.target.value);
+ };
+
+ const onChangeDls = (event: any) => {
+ setValorFacturaDls(event.target.value);
+ };
+
+ const onChangePed = (event: any) => {
+ setPedido(event.target.value);
+ };
+
+ useEffect(() => {
+ console.log(mProveedores);
+ }, [mProveedores]);
+
+ const handleKeyDown = (event: any, mode: number) => {
+ if (event.key === 'Enter') {
+ if (isNaN(event.target.value) && mode === 1) {
+ alert('Valor no valido!');
+ return;
+ }
+ const data: ICorresponsalFacturas = {
+ id: id,
+ factura: value,
+ idTrafico: props.record.idTrafico,
+ valorFacturaDls: ValorFacturaDls,
+ proveedor: IDProveedor,
+ corresponsal: props.record.corresponsal,
+ pedido: Pedido,
+ code: 0,
+ folioGEMCO: '',
+ };
+ CorFacDataService.Append(data)
+ .then((response) => {
+ if (response.status == 200) {
+ dispatch(updateCorresponsalesFacturas(response.data));
+ setHeader('Informativo');
+ setMsg('La informacion se guardo exitosamente');
+ setShowMsg(true);
+ return;
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error');
+ setMsg('Ocurrio un error: ' + e);
+ setShowMsg(true);
+ return;
+ });
+ }
+ };
+
+ function changeValue(val: number) {
+ setIDProveedor(val);
+ }
+ return (
+ <>
+ handleKeyDown(e, 2)}
+ style={{ width: '25%', textAlign: 'right' }}
+ />
+
+ handleKeyDown(e, 1)}
+ style={{ width: '20%', textAlign: 'right' }}
+ />
+
+ handleKeyDown(e, 2)}
+ style={{ width: '20%', textAlign: 'right' }}
+ />
+
+ {
+ changeValue(parseInt(f.target.value));
+ }}
+ value={IDProveedor}
+ className='form-select form-select-sm'
+ >
+ {mProveedores
+ ? mProveedores
+ .filter(function (row) {
+ return row.clasificacion === ClasificacionProveedor;
+ })
+ .map((p) => {
+ return (
+
+ );
+ })
+ : null}
+
+ {
+ setShowMsg(false);
+ }}
+ />
+ >
+ );
+};
diff --git a/src/Components/Corresponsales/ProveedorFactura/ProveedorFactura.tsx b/src/Components/Corresponsales/ProveedorFactura/ProveedorFactura.tsx
new file mode 100644
index 0000000..29f9056
--- /dev/null
+++ b/src/Components/Corresponsales/ProveedorFactura/ProveedorFactura.tsx
@@ -0,0 +1,426 @@
+import React, { FC, useEffect, useState } from 'react';
+import { Alert, Button, Card, Col, Form, Modal, Row } from 'react-bootstrap';
+import { IconContext } from 'react-icons';
+import 'react-flexy-table/dist/index.css';
+import FacDataService from '../../../Services/Corresponsalias/Corresponsales.Facturas.Services';
+import { RootState } from '../../../store/store';
+import { useDispatch, useSelector } from 'react-redux';
+import { FcManager } from 'react-icons/fc';
+import ICorresponsalFacturas from '../../../Interfaces/Corresponsales/ICorresponsalFacturas';
+import {
+ addCorresponsalesFacturas,
+ deleteCorresponsalesFacturas,
+ populateCorresponsalesFacturas,
+} from '../../../store/features/Corresponsales/CorresponsalesFacturasSlice';
+import '../../../css/react-flexy-table.css';
+import { MsgInformativo } from '../../Utils/Toast/msgInformativo';
+import * as CurrencyFormat from 'react-currency-format';
+import { CatProveedores } from '../CatProveedores/CatProveedores';
+import { FaEraser, FaTimesCircle } from 'react-icons/fa';
+import DataTable from 'react-data-table-component';
+import { ControlledInput } from './ControlledInput/ControlledInput';
+
+interface IProps {
+ IDTrafico: number;
+ IDCorresponsal: number;
+ canDelete: boolean;
+}
+
+export const ProveedorFactura: FC = (props) => {
+ const mCFacturas = useSelector(
+ (state: RootState) => state.CFData.CorresponsalesFacturas
+ );
+ const mProveedores = useSelector(
+ (state: RootState) => state.CatProveedores.CatalogoProveedores
+ );
+ const dispatch = useDispatch();
+ const [ShowModal, setShowModal] = useState(false);
+ const [IDFactura, setIDFactura] = useState(0);
+ const [Factura, setFactura] = useState('');
+ const [ValorFacturaDls, setValorFacturaDls] = useState(0);
+ const [Pedido, setPedido] = useState('');
+ const [header, setHeader] = useState('');
+ const [show, setShowMsg] = useState(false);
+ const [msg, setMsg] = useState('');
+ const [DialogTabs, setDialogTabs] = useState(false);
+ const [IDProveedor, setIDProveedor] = useState(0);
+ const MsgTime = 2000;
+ const msgColor = 'primary';
+ const ClasificacionProveedor = 2;
+
+ const TblHeader: React.FC = () => (
+
+
+
+ Factura
+ |
+
+ Valor Dls
+ |
+
+ Pedido
+ |
+
+ Proveedor
+ |
+
+
+ );
+
+ const columnsFacturas = [
+ {
+ name: 'id',
+ width: '10%',
+ selector: (row: ICorresponsalFacturas) => row.id,
+ sortable: true,
+ },
+ {
+ name: ,
+ width: '75%',
+ cell: (row: ICorresponsalFacturas) => {
+ return ;
+ },
+ },
+ {
+ name: 'Elimina',
+ cell: (row: ICorresponsalFacturas) => (
+ {
+ setIDFactura(row.id);
+ setFactura(row.factura);
+ setDialogTabs(true);
+ }}
+ >
+
+
+
+
+ ),
+ },
+ ];
+
+ useEffect(() => {
+ FacDataService.getAll(props.IDTrafico)
+ .then((response) => {
+ dispatch(populateCorresponsalesFacturas(response.data));
+ })
+ .catch((e: Error) => {
+ setHeader('Error');
+ setMsg('Ocurrio un error: ' + e);
+ setShowMsg(true);
+ return;
+ });
+ }, [props.IDTrafico, dispatch]);
+
+ const cleanForm = () => {
+ setFactura('');
+ setIDFactura(0);
+ setIDProveedor(0);
+ setValorFacturaDls(0);
+ };
+
+ const saveForm = () => {
+ if (Factura.length <= 3) {
+ setHeader('Error');
+ setMsg('Proporcione la factura para poder continuar');
+ setShowMsg(true);
+ setDialogTabs(false);
+ return false;
+ }
+ if (ValorFacturaDls === 0) {
+ setHeader('Error');
+ setMsg('Proporcione el valor en dlls de la factura para poder continuar');
+ setShowMsg(true);
+ setDialogTabs(false);
+ return false;
+ }
+ if (IDProveedor === 0) {
+ setHeader('Error');
+ setMsg('Seleccione un proveedor para poder continuar');
+ setShowMsg(true);
+ setDialogTabs(false);
+ return false;
+ }
+ const data: ICorresponsalFacturas = {
+ id: 0,
+ factura: Factura,
+ idTrafico: props.IDTrafico,
+ valorFacturaDls: ValorFacturaDls,
+ proveedor: IDProveedor,
+ corresponsal: props.IDCorresponsal,
+ pedido: Pedido,
+ code: 0,
+ folioGEMCO: '',
+ };
+ FacDataService.Append(data)
+ .then((response) => {
+ if (response.status === 200) {
+ setHeader('Informativo');
+ const respuesta: ICorresponsalFacturas = response.data;
+ console.log(respuesta);
+ if (respuesta.code && typeof respuesta.code === 'number') {
+ const result = respuesta.code;
+ if (result === 409)
+ setMsg(
+ `La factura [${response.data.factura}] de ese proveedor ya se han registrado previamente en el año en curso, lo encuentra en el folio [${response.data.folioGEMCO}]`
+ );
+ else {
+ setMsg('La factura se agrego exitosamente ');
+ if (data.id === 0)
+ dispatch(addCorresponsalesFacturas(response.data));
+ }
+ }
+ setShowMsg(true);
+ setDialogTabs(false);
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error');
+ setMsg('Ocurrio un error: ' + e);
+ setShowMsg(true);
+ return;
+ });
+ };
+
+ const deleteItem = () => {
+ FacDataService.Delete(IDFactura)
+ .then((response) => {
+ if (response.status === 200) {
+ setHeader('Informativo');
+ setMsg('La factura se ha eliminado');
+ setShowMsg(true);
+ setDialogTabs(false);
+ dispatch(deleteCorresponsalesFacturas(IDFactura));
+ return;
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error');
+ setMsg('Ocurrio un error: ' + e);
+ setShowMsg(true);
+ return;
+ });
+ };
+
+ return (
+
+
+
+
+
+ {
+ cleanForm();
+ }}
+ >
+
+
+
+
+
+
+ setFactura((v) =>
+ e.target.validity.valid ? e.target.value : v
+ )
+ }
+ />
+
+
+ {
+ const { value } = values;
+ setValorFacturaDls(value);
+ }}
+ style={{
+ fontSize: '18px',
+ backgroundColor: '#F5FFED',
+ border: '2px solid #25D05B',
+ width: '100px',
+ textAlign: 'right',
+ borderRadius: '10px',
+ }}
+ />
+
+
+ setPedido(e.target.value)}
+ />
+
+
+ {
+ setIDProveedor(parseInt(e.target.value));
+ }}
+ className='form-select form-select-sm'
+ value={IDProveedor}
+ >
+
+ {mProveedores
+ ? mProveedores
+ .filter(function (row) {
+ return row.clasificacion === ClasificacionProveedor;
+ })
+ .map((item, index) => {
+ return (
+
+ );
+ })
+ : ''}
+
+
+
+
+
+
+
+
+
+
+
+
+ 0;
+ })}
+ />
+
+
+
{
+ setShowMsg(false);
+ }}
+ />
+ {
+ setDialogTabs(false);
+ }}
+ size='sm'
+ >
+
+
+ ¿Esta seguro de eliminar?
+
+ {Factura}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ setShowModal(false);
+ }}
+ size='sm'
+ dialogClassName='modal-50w'
+ >
+
+
+
+
+
+ );
+};
diff --git a/src/Components/Corresponsales/Rectificaciones/Rectificaciones.tsx b/src/Components/Corresponsales/Rectificaciones/Rectificaciones.tsx
new file mode 100644
index 0000000..b2768fe
--- /dev/null
+++ b/src/Components/Corresponsales/Rectificaciones/Rectificaciones.tsx
@@ -0,0 +1,180 @@
+import React, { FC, useEffect, useState } from 'react'
+import { Alert, Button, Col, Modal, Row } from 'react-bootstrap'
+import DataTable from 'react-data-table-component'
+import { IconContext } from 'react-icons'
+import { FaCopy } from 'react-icons/fa'
+import ICorresponsalesRectificaciones from '../../../Interfaces/Corresponsales/ICorresponsalesRectificaciones'
+import RectiDataService from '../../../Services/Corresponsalias/Corresponsales.Trafico.Services'
+import { MsgInformativo } from '../../Utils/Toast/msgInformativo'
+
+interface IProps {
+ IDTrafico: number
+ changeIdTrafico: (newId: number) => void
+}
+
+export const Rectificaciones: FC = (props) => {
+ const [DTData, setDTData] = useState([])
+ const [id, setId] = useState(0)
+ const [FolioGEMCO, setFolioGEMCO] = useState('')
+ const [header, setHeader] = useState('')
+ const [msgColor, setMsgColor] = React.useState('primary')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+ const [DialogClone, setDialogClone] = useState(false)
+ const [MsgTime, setMsgTime] = useState(3000)
+ const dataColumns = [
+ {
+ name: 'id',
+ left: true,
+ width: '10%',
+ selector: (row: ICorresponsalesRectificaciones) => row.id,
+ cell: (row: ICorresponsalesRectificaciones) => (
+ {
+ props.changeIdTrafico(row.id)
+ }}
+ >
+ {row.id}
+
+ ),
+ sortable: true,
+ },
+ {
+ name: 'Folio',
+ width: '20%',
+ selector: (row: ICorresponsalesRectificaciones) => row.folioGemco,
+ sortable: true,
+ },
+ {
+ name: 'Creado',
+ width: '14%',
+ selector: (row: ICorresponsalesRectificaciones) => row.fechaRegistro.substring(0, 10),
+ sortable: true,
+ },
+ {
+ name: 'Prev',
+ center: true,
+ width: '20%',
+ selector: (row: ICorresponsalesRectificaciones) => row.prevRecti,
+ cell: (row: ICorresponsalesRectificaciones) => {row.prevRecti}
,
+ },
+ {
+ name: 'Next',
+ center: true,
+ width: '20%',
+ selector: (row: ICorresponsalesRectificaciones) => row.nextRecti,
+ cell: (row: ICorresponsalesRectificaciones) =>
+ row.nextRecti === 0 ? (
+ {
+ setId(row.id)
+ setFolioGEMCO(row.folioGemco)
+ setDialogClone(true)
+ }}
+ >
+
+
+
+
+ ) : (
+ {row.nextRecti}
+ ),
+ },
+ ]
+
+ useEffect(() => {
+ RectiDataService.GetRectificaciones(props.IDTrafico)
+ .then((response) => {
+ setDTData(response.data)
+ console.log(JSON.stringify(response.data))
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }, [props.IDTrafico])
+
+ const clonItem = () => {
+ RectiDataService.AddRectificacion(id)
+ .then((response) => {
+ if (response.status == 200) {
+ setHeader('Informativo')
+ setMsg('La rectificacion se agrego exitosamente')
+ setShowMsg(true)
+ setDialogClone(false)
+ //if (data.id === 0) dispatch(addCorresponsalesFacturas(response.data))
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ return (
+
+
+
{
+ setShowMsg(false)
+ }}
+ />
+ {
+ setDialogClone(false)
+ }}
+ size='sm'
+ >
+
+
+ ¿Esta seguro de realizar una rectificacion sobre este trafico: [ {FolioGEMCO} ]?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/Components/Corresponsales/Tabulador/Tabulador.tsx b/src/Components/Corresponsales/Tabulador/Tabulador.tsx
new file mode 100644
index 0000000..4e98b59
--- /dev/null
+++ b/src/Components/Corresponsales/Tabulador/Tabulador.tsx
@@ -0,0 +1,314 @@
+import React, { FC, useEffect, useState } from 'react'
+import { Alert, Button, Card, Col, Container, Form, Row } from 'react-bootstrap'
+import ITabulador from '../../../Interfaces/Catalogos/ITabulador'
+import CTabDataService from '../../../Services/Corresponsalias/Corresponsales.Tabuladores.Services'
+import CTabPreDataService from '../../../Services/Corresponsalias/Corresponsales.Precuenta.Services'
+import CTabDetDataService from '../../../Services/Corresponsalias/Corresponsales.Tabuladores.Detalle.Sevices'
+import { MsgInformativo } from '../../Utils/Toast/msgInformativo'
+import DTOConceptos from '../../../DTO/Utils/DTOConceptos'
+import DataTable from 'react-data-table-component'
+import 'react-data-table-component-extensions/dist/index.css'
+import ITabuladorConceptos from '../../../Interfaces/Catalogos/ITabuladorConceptos'
+import { ControlledInput } from '../../Utils/ControlledInput/ControlledInput'
+
+interface IProps {
+ IDCliente: number
+ IDTabulador: number
+ IDTrafico: number
+ NombreCliente: string
+ closeTabulador: (arg: boolean) => void
+ cambiaPrecuenta: (IDPrecuenta: number) => void
+}
+
+interface IselectedRows {
+ allSelected: boolean
+ selectedCount: number
+ selectedRows: any
+}
+
+export const Tabulador: FC = (props) => {
+ const [IDTabulador, setIDTabulador] = useState(props.IDTabulador)
+ const [Concepto, setConcepto] = useState(0)
+ const [DetalleConceptos, setDetalleConceptos] = useState([])
+ const [CatConceptos, setCatConceptos] = useState([])
+ const [Tabuladores, setTabuladores] = useState([])
+ const [AllTabuladores, setAllTabuladores] = useState([])
+ const [Costo, setCosto] = useState('')
+ const [header, setHeader] = useState('')
+ const [msgColor, setMsgColor] = React.useState('primary')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+
+ const columnsConcepts = [
+ {
+ name: 'id',
+ width: '10%',
+ selector: (row: ITabuladorConceptos) => row.id,
+ sortable: true,
+ },
+ {
+ name: 'Concepto',
+ width: '65%',
+ selector: (row: ITabuladorConceptos) => row.concepto,
+ sortable: true,
+ },
+ {
+ name: 'Costo',
+ width: '15%',
+ cell: (row: ITabuladorConceptos) => {
+ return row.activo === 1 ? (
+ {}} />
+ ) : (
+ {}} />
+ )
+ },
+ },
+ {
+ name: 'Activo',
+ width: '10%',
+ cell: (row: ITabuladorConceptos) => {
+ return (
+
+ {
+ switchConcept(row.id, 1)
+ }}
+ />
+
+ )
+ },
+ },
+ ]
+
+ const columnsTabs = [
+ {
+ name: 'id',
+ selector: (row: ITabulador) => row.id,
+ sortable: true,
+ },
+ {
+ name: 'Nombre',
+ width: '70%',
+ // selector: (row: ITabulador) => row.nombre,
+ cell: (row: ITabulador) => (
+ {
+ setIDTabulador(row.id)
+ }}
+ >
+ {row.nombre}
+
+ ),
+ sortable: true,
+ },
+ ]
+
+ const switchConcept = (id: number, status: number) => {
+ CTabPreDataService.ChangeStatus(id)
+ .then((response) => {
+ if (response.status === 200) {
+ let tmp = DetalleConceptos
+ let idx = tmp.findIndex((obj) => obj.id == id)
+ tmp[idx].activo = status === 1 ? 0 : 1
+ setDetalleConceptos(tmp)
+ setHeader('Confirmacion')
+ setMsg(response.data.respuesta)
+ setShowMsg(true)
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ // const postCost = (id: number, Cost: number) => {}
+
+ const GetAllTabs = () => {
+ CTabDataService.GetByCustomer(props.IDCliente)
+ .then((response) => {
+ setTabuladores(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ useEffect(() => {
+ GetAllTabs()
+ }, [])
+
+ useEffect(() => {
+ CTabPreDataService.GetAll(0, props.IDTrafico)
+ .then((response) => {
+ console.log('conceptos cargados debido a el tabulador guardado ' + JSON.stringify(response.data))
+ setDetalleConceptos(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ // console.log(Tabulador)
+ }, [IDTabulador, props])
+
+ const filtraTabulador = (e: any) => {
+ if (e.target.value !== '') {
+ setTabuladores(
+ AllTabuladores.filter(function (el) {
+ return el.nombre.toLocaleLowerCase().includes(e.target.value.toLocaleLowerCase())
+ })
+ )
+ } else {
+ setTabuladores(AllTabuladores)
+ }
+ }
+
+ const saveForm = () => {
+ // alert(IDTabulador)
+ CTabPreDataService.Append(IDTabulador, props.IDTrafico)
+ .then((response) => {
+ setDetalleConceptos(response.data)
+ props.cambiaPrecuenta(IDTabulador)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ const addConcept = () => {
+ if (IDTabulador === 0) {
+ setHeader('Error')
+ setMsg('Por favor, primero seleccione el tabulador')
+ setShowMsg(true)
+ return
+ }
+ if (Concepto === 0) {
+ setHeader('Error')
+ setMsg('Por favor, primero seleccione el concepto')
+ setShowMsg(true)
+ return
+ }
+ // postCost(0, 0)
+ }
+
+ return (
+
+
+
+
+
+ Cliente:
+
+
+ {props.NombreCliente}
+
+
+
+
+ Tabulador asignado:
+
+
+ setIDTabulador(parseInt(e.target.value))}
+ className='form-select form-select-sm'
+ style={{ fontSize: '15px' }}
+ >
+
+ {Tabuladores
+ ? Tabuladores.map((c) => {
+ return
+ })
+ : null}
+
+
+
+
+
+
+
+
+ {/*
+
+
+
+
+
+ Tabulador
+
+
+ {
+ filtraTabulador(e)
+ }}
+ />
+
+
+
+
+
+
+ */}
+
+
+
+
+
+
+
+
+
+
+
{
+ setShowMsg(false)
+ }}
+ />
+
+ )
+}
diff --git a/src/Components/Corresponsales/TraficoCorresponsales.tsx b/src/Components/Corresponsales/TraficoCorresponsales.tsx
new file mode 100644
index 0000000..14c7476
--- /dev/null
+++ b/src/Components/Corresponsales/TraficoCorresponsales.tsx
@@ -0,0 +1,3413 @@
+import React, { FC, useEffect, useState } from 'react'
+// Bootstrap
+import {
+ Alert,
+ Button,
+ Card,
+ Col,
+ Container,
+ Form,
+ FormControl,
+ InputGroup,
+ Modal,
+ Row,
+ Tab,
+ Tabs
+} from 'react-bootstrap'
+import { FcBusinessman, FcTimeline } from 'react-icons/fc'
+import { HiCurrencyDollar } from 'react-icons/hi'
+import { IconContext } from 'react-icons'
+import '../../css/generic01.css'
+
+// Clases
+import CCorresponsalesTrafico from '../../Classes/Corresponsales/CCorresponsalesTrafico'
+
+// Interfaces
+import IClientes from '../../Interfaces/Catalogos/IClientes'
+import ICorresponsalesTraficoContabilidad from '../../Interfaces/Corresponsales/ICorresponsalTraficoContabilidad'
+import ITabulador from '../../Interfaces/Catalogos/ITabulador'
+import ICorresponsalRazonRechazo from '../../Interfaces/Corresponsales/ICorresponsalRazonesRechazo'
+import ICorresponsalCatTipoDocumento from '../../Interfaces/Corresponsales/ICorresponsalCatTipoDocumento'
+import ICorresponsalCatAduanas from '../../Interfaces/Corresponsales/ICorresponsalCatAduanas'
+import ICorresponsalCatDestinos from '../../Interfaces/Corresponsales/ICorresponsalCatDestinos'
+import ICorresponsalCatTiposEmbarque from '../../Interfaces/Corresponsales/ICorresponsalesCatTiposEmbarque'
+
+// Redux
+import { useDispatch, useSelector } from 'react-redux'
+import { populateCatProveedores } from '../../store/features/CatProveedores/CatProveedoresSlice'
+import {
+ addCorresponsalesFacturas,
+ InitCorresponsalesFacturas
+} from '../../store/features/Corresponsales/CorresponsalesFacturasSlice'
+import {
+ addCorresponsalesFacturasTerceros,
+ InitCorresponsalesFacturasTerceros
+} from '../../store/features/Corresponsales/CorresponsalesFacturasTercerosSlice'
+import {
+ addCorresponsalesContenedores,
+ CorresponsalesContenedoresSlice,
+ InitCorresponsalesContenedores
+} from '../../store/features/Corresponsales/CorresponsalesContenedoresSlice'
+import { populateCorresponsalesAnticipos } from '../../store/features/Corresponsales/CorresponsalesAnticiposSlice'
+import { RootState } from '../../store/store'
+import { populateCatCorresponsales } from '../../store/features/CatCorresponsales/CatCorresponsalesSlice'
+import { populateCorresponsalesGuias } from '../../store/features/Corresponsales/CorresponsalesGuiasSlice'
+import { populateCorresponsalesPartidas } from '../../store/features/Corresponsales/CorresponsalesPartidasSlice'
+import { populateCorresponsalesCuentasComplementariasEstatus } from '../../store/features/Corresponsales/CorresponsalesCuentasComplementariasEstatusSlice'
+
+// Services
+import CAntDataService from '../../Services/Corresponsalias/Corresponsales.Anticipos.Services'
+import CContaDataService from '../../Services/Contabilidad/Contabilidad.Corresponsalias.Services'
+import CContDataService from '../../Services/Corresponsalias/Corresponsales.Contenedores.Services'
+import CorresponsalesDataService from '../../Services/Catalogos/Corresponsales.Services'
+import CFac3erDataService from '../../Services/Corresponsalias/Corresponsales.FacturasTerceros.services'
+import CFacDataService from '../../Services/Corresponsalias/Corresponsales.Facturas.Services'
+import CGuiasDataService from '../../Services/Corresponsalias/Corresponsales.Guias.Services'
+import CTrafDataService from '../../Services/Corresponsalias/Corresponsales.Trafico.Services'
+import ClientesDataService from '../../Services/Catalogos/Clientes.Services'
+import CTabDataService from '../../Services/Corresponsalias/Corresponsales.Tabuladores.Services'
+import ProvDataService from '../../Services/Catalogos/Proveedores.Services'
+import CCatTiposDocumentos from '../../Services/Corresponsalias/Corresponsalias.CatTiposDocumentos.Services'
+import CPartidasService from '../../Services/Corresponsalias/Corresponsales.Trafico.Pedimento.Partidas.Services'
+import CCatAduanasService from '../../Services/Corresponsalias/Corresponsales.CatAduanas.Services'
+import CCatDestinosService from '../../Services/Corresponsalias/Corresponsales.CatDestinos.Services'
+import CCatTiposEmbarqueService from '../../Services/Corresponsalias/Corresponsales.CatTiposEmbarque.Services'
+import CCatMediosEmbarqueService from '../../Services/Corresponsalias/Corresponsales.CatMediosEmbarque.Services'
+import CPedimentoService from '../../Services/Corresponsalias/Corresponsales.Trafico.Pedimento.Services'
+import DashboardService from '../../Services/Dashboard/Dashboard.Corresponsales.Services'
+import CCueCompService from '../../Services/Corresponsalias/Corresponsales.CuentasComplementarias.Services'
+import FileManService from '../../Services/Utils/FileManager.Services'
+
+// Componentes
+import * as CurrencyFormat from 'react-currency-format'
+/* import Select from 'custom-item-select' */
+import FileManager from '../Utils/FileManager/FileManager'
+import { Anticipos } from './Anticipos/Anticipos'
+import { CatCorresponsales } from '../Catalogos/CatCorresponsales/CatCorresponsales'
+import { Contenedores } from './Contenedores/Contenedores'
+import { MsgInformativo } from '../Utils/Toast/msgInformativo'
+import { PagosTerceros } from './PagosTerceros/PagosTerceros'
+import { ProveedorFactura } from './ProveedorFactura/ProveedorFactura'
+import { SelectContainer } from './Contenedores/SelectContainer'
+import { SelectGuias } from './Guias/SelectGuias'
+import { Tabulador } from './Tabulador/Tabulador'
+import { FaRegClone } from 'react-icons/fa'
+import { Rectificaciones } from './Rectificaciones/Rectificaciones'
+import { BsFillXCircleFill } from 'react-icons/bs'
+import DatePicker from 'react-datepicker'
+import 'react-datepicker/dist/react-datepicker.css'
+import { Partidas } from './Partidas/Partidas'
+import { MFileManager } from '../Utils/MFileManager/MFileManager'
+import ICorresponsalPedimento from '../../Interfaces/Corresponsales/ICorresponsalPedimento'
+import ICorresponsalesCatTraficoEstatus from '../../Interfaces/Corresponsales/ICorresponsalesCatTraficoEstatus'
+import ICorresponsalCatMediosEmbarque from '../../Interfaces/Corresponsales/ICorresponsalCatMediosEmbarque'
+import { CuentasComplementarias } from './CuentasComplementarias/CuentasComplementarias'
+import DTOTraficoCompleto from '../../DTO/Corresponsales/DTOTraficoCompleto'
+import DTORectificacionHistorico from '../../DTO/Corresponsales/DTORectificacionHistorico'
+
+interface IProps {
+ IDTrafico: number
+ onClose: (val: boolean) => void
+}
+
+interface ItemList {
+ id: number
+ item: string
+}
+
+interface ItemList {
+ item: string
+}
+
+interface IAduanas {
+ id: number
+ descripcion: string
+}
+
+export default function TraficoCorresponsales (props:IProps) {
+ const dispatch = useDispatch()
+ const [UserId, setUserId] = useState(() => {
+ const stickyValue = window.localStorage.getItem('UserId')
+ return stickyValue !== null ? JSON.parse(stickyValue) : 0
+ })
+ const [Usuario, setUsuario] = useState(() => {
+ const stickyValue = window.localStorage.getItem('Departamento')
+ return stickyValue !== null ? JSON.parse(stickyValue) : ''
+ })
+ const [Depto, setDepto] = useState(() => {
+ const stickyValue = window.localStorage.getItem('Departamento')
+ return stickyValue !== null ? JSON.parse(stickyValue) : ''
+ })
+ const mCorresponsales = useSelector(
+ (state: RootState) => state.CatCorresponsales.CatCorresponsales
+ )
+ const mCFacturas = useSelector(
+ (state: RootState) => state.CFData.CorresponsalesFacturas
+ )
+ const mCFTerceros = useSelector(
+ (state: RootState) => state.CF3rosData.CorresponsalesFacturasTerceros
+ )
+ const mCContenedores = useSelector(
+ (state: RootState) => state.CCData.CorresponsalesContenedores
+ )
+ const mCAnticipos = useSelector(
+ (state: RootState) => state.CAnticipos.CorresponsalesAnticipos
+ )
+ const mCCCEstatus = useSelector(
+ (state: RootState) =>
+ state.CCueCompEstatus.CorresponsalesCuentasComplementariasEstatus
+ )
+ const [ModalSize, setModalSize] = useState('sm')
+ const [showModal, setShowModal] = useState(false)
+ const [LoadComponent, setLoadComponent] = useState(0)
+ const [IDTrafico, setIDTrafico] = useState(props.IDTrafico)
+ const [IDDetail, setIDDetail] = useState(0)
+ const [FolioTrafico, setFolioTrafico] = useState('')
+ const [Proceso, setProceso] = useState(0)
+ const [IDCliente, setIDCliente] = useState(0)
+ const [NombreCliente, setNombreCliente] = useState('')
+ const [Clientes, setClientes] = useState>()
+ const [CatTiposDocumento, setCatTiposDocumentos] =
+ useState()
+ const [
+ CatTiposDocumentoInfoCorresponsal,
+ setCatTiposDocumentosInfoCorresponsal
+ ] = useState()
+ const [TipoOperacion, setTipoOperacion] = useState(1)
+ const [OpEntrada, setOpEntrada] = useState(0)
+ const [OpSalida, setOpSalida] = useState(0)
+ const [IDCorresponsal, setIDCorresponsal] = useState(0)
+ const [Bultos, setBultos] = useState(0)
+ const [Kilos, setKilos] = useState(0)
+ const [Estatus, setEstatus] = useState(0)
+ const [Trafico, setTrafico] = useState('')
+ const [Aduana, setAduana] = useState(0)
+ const [Patente, setPatente] = useState(0)
+ const [Pedimento, setPedimento] = useState(0)
+ const [ClavePedimento, setClavePedimento] = useState('')
+ const [FechaPago, setFechaPago] = useState('')
+ const [TipoCambio, setTipoCambio] = useState(0)
+ const [ValorAduanaMN, setValorAduanaMN] = useState(0)
+ const [TotalPagado, setTotalPagado] = useState(0)
+ const [ValorFacturaMN, setValorFacturaMN] = useState(0)
+ const [CantidadFracciones, setCantidadFracciones] = useState<
+ number | undefined
+ >(0)
+ const [Buque, setBuque] = useState('')
+ const [ValorFacturasDls, setValorFacturasDls] = useState(
+ 0
+ )
+ const [DescripcionMercancia, setDescripcionMercancia] = useState<
+ string | undefined
+ >('')
+ const [Observaciones, setObservaciones] = useState('')
+ const [FechaDesaduanamiento, setFechaDesaduanamiento] =
+ useState()
+ const [SemafoFiscal, setSemaforoFiscal] = useState(0)
+ const [NoCuenta, setNoCuenta] = useState('')
+ const [FechaCuenta, setFechaCuenta] = useState('')
+ const [Anticipo, setAnticipo] = useState(0)
+ const [IDTabulador, setIDTabulador] = useState(0)
+ const [Tabuladores, setTabuladores] = useState([])
+ const [header, setHeader] = useState('')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+ const [DSCatAduanas, setDSCatAduanas] = useState()
+ const [DSCatDestinos, setDSCatDestinos] =
+ useState()
+ const [DSCatMediosEmbarque, setDSCatMediosEmbarque] =
+ useState()
+ const [DSCatTiposEmbarque, setDSCatTiposEmbarque] =
+ useState()
+ const [LblFacturas, setLblFacturas] = useState('Facturas')
+ const [LblFacturasTerceros, setLblFacturasTerceros] = useState(
+ 'Facturas pagos a terceros'
+ )
+ const [LblAnticipos, setLblAnticipos] = useState('Anticipos')
+ const [StatusTrafico, setStatusTrafico] = useState(1)
+ const [StatusColor, setStatusColor] = useState('#FFFFFF')
+ const [PagosaTerceros, setPagosaTerceros] = useState(0)
+ const [ComentariosRechazo, setComentariosRechazo] = useState('')
+ const [RechazosTrafico, setRechazosTrafico] = useState<
+ ICorresponsalRazonRechazo[]
+ >([])
+ const [RechazosContabilidad, setRechazosContabilidad] = useState<
+ ICorresponsalRazonRechazo[]
+ >([])
+ const [DataCatEstatus, setDataCatEstatus] = useState<
+ ICorresponsalesCatTraficoEstatus[]
+ >([])
+ const [Aduanas, setAduanas] = useState([
+ { id: 440, descripcion: 'CD. ACUNA, COAH.' },
+ { id: 810, descripcion: 'ALTAMIRA, TAMPS.' }
+ ])
+ const [IDAduana, setIDAduana] = useState(0)
+ const [CostoDiario, setCostoDiario] = useState(0)
+ const [Descripcion, setDescripcion] = useState('')
+ const [IDDestino, setIDDestino] = useState(0)
+ const [DiasPedPagado, setDiasPedPagado] = useState(0)
+ const [Embalaje, setEmbalaje] = useState(0)
+ const [IDEstatus, setIDEstatus] = useState(0)
+ const [FAlmacenajeInicioGastos, setFAlmacenajeInicioGastos] =
+ useState('')
+ const [FDespacho, setFDespacho] = useState('')
+ const [FechaETA, setFechaETA] = useState('')
+ const [FEntrada, setFEntrada] = useState('')
+ const [FHEntregaPlanta, setFHEntregaPlanta] = useState()
+ const [FHInstrucciones, setFHInstrucciones] = useState()
+ const [Fletes, setFletes] = useState(0)
+ const [FRevalidacionGuia, setFRevalidacionGuia] = useState('')
+ const [HAWB, setHAWB] = useState('')
+ const [Incoterm, setIncoterm] = useState('')
+ const [LineaTransportistaInternacional, setLineaTransportistaInternacional] =
+ useState('')
+ const [MAWB, setMAWB] = useState('')
+ const [MontoUSD, setMontoUSD] = useState(0)
+ const [NoGuia, setNoGuia] = useState('')
+ const [Origen, setOrigen] = useState('')
+ const [Otros, setOtros] = useState(0)
+ const [Transportista, setTransportista] = useState('')
+ const [PesoNeto, setPesoNeto] = useState(0)
+ const [PreferenciaArancelaria, setPreferenciaArancelaria] = useState(0)
+ const [Seguros, setSeguros] = useState(0)
+ const [IDTipoEmbarque, setIDTipoEmbarque] = useState(0)
+ const [TotalPagar, setTotalPagar] = useState(0)
+ const [ChangePermission, setChangePermission] = useState(false)
+ const [Ready4NextProcess, setReady4NextProcess] = useState(false)
+ const [TerminaProceso, setTerminaProceso] = useState(-100)
+ const [TieneArchivoZIPGEMCO, setTieneArchivoZIPGEMCO] = useState(0)
+ const [TieneArchivoZIPCorresponsal, setTieneArchivoZIPCorresponsal] =
+ useState(0)
+ const [IDEstatusContabilidad, setIDEstatusContabilidad] = useState(0)
+ const [AduanaH, setAduanaH] = useState('')
+ const [PatenteH, setPatenteH] = useState('')
+ const [PedimentoH, setPedimentoH] = useState('')
+ const [ClavePedimentoH, setClavePedimentoH] = useState('')
+ const [FechaPagoH, setFechaPagoH] = useState('')
+
+ const FechaRegistro = currentDate()
+ const msgColor = 'primary'
+
+ const itemsTrafico = [
+ {
+ key: 1,
+ component: (
+
+
+ Confirmado
+
+ )
+ },
+ {
+ key: 0,
+ component: (
+
+
+ Rechazado
+
+ )
+ }
+ ]
+
+ const handleClose = () => setShowModal(false)
+
+ 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 saveForm = () => {
+ if (IDCliente === 0) {
+ setHeader('Error')
+ setMsg('Para continuar seleccion el cliente')
+ setShowMsg(true)
+ return
+ }
+ if (OpEntrada === 0 || OpSalida === 0) {
+ setHeader('Error')
+ setMsg('Para continuar seleccion las operacion es de Entrada y Salida')
+ setShowMsg(true)
+ return
+ }
+ if (IDCorresponsal === 0) {
+ setHeader('Error')
+ setMsg('Para continuar seleccion el corresponsal')
+ setShowMsg(true)
+ return
+ }
+ let data = new CCorresponsalesTrafico().getEmptyObject()
+ data.id = IDTrafico
+ data.idUsuario = UserId
+ data.idCliente = IDCliente
+ data.tipoOperacion = TipoOperacion
+ data.opEntrada = OpEntrada
+ data.opSalida = OpSalida
+ data.idCorresponsal = IDCorresponsal
+ data.bultos = Bultos
+ data.kilos = Kilos
+ data.estatus = Estatus
+ data.trafico = Trafico
+ data.aduana = Aduana
+ data.patente = Patente
+ data.pedimento = Pedimento
+ data.clave = ClavePedimento
+ data.fechaPago = FechaPago
+ data.tipoCambio = TipoCambio
+ data.valorAduanaMN = ValorAduanaMN
+ data.totalPagado = TotalPagado
+ data.valorFacturaMN = ValorFacturaMN
+ data.cantidadFracciones = CantidadFracciones
+ data.buque = Buque
+ data.valorFacturaDls = ValorFacturasDls
+ data.descripcionMercancia = DescripcionMercancia
+ data.observaciones = Observaciones
+ data.fechaDesaduanamiento = FechaDesaduanamiento
+ ? adjustTimeZone(FechaDesaduanamiento.toISOString())
+ : ''
+ data.semaforoFiscal = SemafoFiscal
+ data.noCuenta = NoCuenta
+ data.fechaCuenta = FechaCuenta
+ data.idTabulador = IDTabulador
+ CTrafDataService.Append(data)
+ .then((response) => {
+ if (response.data.estatusCode === 0) {
+ if (mCFacturas.length >= 2) {
+ const Detail: ICorresponsalPedimento = {
+ id: IDDetail ? IDDetail : 0,
+ idTrafico: IDTrafico,
+ aduana: IDAduana,
+ costoDiario: CostoDiario,
+ descripcion: Descripcion,
+ destino: IDDestino,
+ diasCPPagado: DiasPedPagado,
+ embalaje: Embalaje,
+ estatus: IDEstatus,
+ fAlmacenajeInicioGastos: FAlmacenajeInicioGastos
+ ? FAlmacenajeInicioGastos
+ : '',
+ fDespacho: FDespacho ? FDespacho : '',
+ fechaETA: FechaETA,
+ fEntrada: FEntrada ? FEntrada : '',
+ fhEntregaPlanta: FHEntregaPlanta
+ ? adjustTimeZone(FHEntregaPlanta.toISOString())
+ : '',
+ fhInstrucciones: FHInstrucciones
+ ? adjustTimeZone(FHInstrucciones.toISOString())
+ : '',
+ fletes: Fletes,
+ fRevalidacionGuia: FRevalidacionGuia ? FRevalidacionGuia : '',
+ hawb: HAWB,
+ incoterm: Incoterm,
+ lineaTransportistaInternacional: LineaTransportistaInternacional,
+ mawb: MAWB,
+ montoUSA: MontoUSD,
+ noGuia: NoGuia,
+ observaciones: Observaciones,
+ origen: Origen,
+ otros: Otros,
+ paqueteriaTransportista: Transportista,
+ pesoNeto: PesoNeto,
+ preferenciaArancelaria: PreferenciaArancelaria,
+ seguros: Seguros,
+ tipoEmbarque: IDTipoEmbarque,
+ totalPagar: TotalPagar,
+ activo: 1
+ }
+ CPedimentoService.Append(Detail)
+ .then((responseDetail) => {
+ setHeader('Informativo')
+ setMsg('La informacion se guardo correctamente')
+ setShowMsg(true)
+ if (Ready4NextProcess && TerminaProceso >= 0) saveFinalStep()
+ return
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e + ' en el detail')
+ setShowMsg(true)
+ return
+ })
+ }
+ setIDTrafico(response.data.id)
+ setHeader('Informativo')
+ setMsg('La informacion se guardo correctamente')
+ setShowMsg(true)
+ saveFinalStep()
+ return
+ } else if (response.data.estatusCode === 409.1) {
+ setHeader('Error')
+ setMsg(
+ 'Ese pedimento ya esta registrado en el trafico: ' +
+ response.data.folioGemco
+ )
+ setShowMsg(true)
+ return
+ } else if (response.data.estatusCode === 409.2) {
+ setHeader('Error')
+ setMsg(
+ 'Esa cuenta de gastos ya esta registrada en el trafico: ' +
+ response.data.folioGemco
+ )
+ setShowMsg(true)
+ return
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ function currentDate(): string {
+ var today = new Date()
+ var dd = String(today.getDate()).padStart(2, '0')
+ var mm = String(today.getMonth() + 1).padStart(2, '0') //January is 0!
+ var yyyy = today.getFullYear()
+ return yyyy + '-' + mm + '-' + dd
+ }
+
+ function getCurrentYear(): string {
+ var today = new Date()
+ return today.getFullYear().toString()
+ }
+
+ const LoadEverything = () => {
+ CorresponsalesDataService.getAll()
+ .then((response) => {
+ dispatch(populateCatCorresponsales(response.data))
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ CTrafDataService.GetCorresponsalesTraficoEstatus()
+ .then((response) => {
+ setDataCatEstatus(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+
+ CFacDataService.getAll(IDTrafico)
+ .then((response) => {
+ dispatch(InitCorresponsalesFacturas(IDTrafico))
+ response.data.forEach((element) => {
+ dispatch(addCorresponsalesFacturas(element))
+ })
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ CFac3erDataService.getAll(IDTrafico)
+ .then((response) => {
+ dispatch(InitCorresponsalesFacturasTerceros(IDTrafico))
+ response.data.forEach((element) => {
+ dispatch(addCorresponsalesFacturasTerceros(element))
+ })
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ CContDataService.getAll(IDTrafico)
+ .then((response) => {
+ dispatch(InitCorresponsalesContenedores(IDTrafico))
+ response.data.forEach((element) => {
+ dispatch(addCorresponsalesContenedores(element))
+ })
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ ClientesDataService.getAllClientes(0)
+ .then((response) => {
+ setClientes(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ CAntDataService.getAll(IDTrafico)
+ .then((response) => {
+ dispatch(populateCorresponsalesAnticipos(response.data))
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ CGuiasDataService.getAll(IDTrafico)
+ .then((response) => {
+ dispatch(populateCorresponsalesGuias(response.data))
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ ProvDataService.getAll(0)
+ .then((response) => {
+ dispatch(populateCatProveedores(response.data))
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ CCatTiposDocumentos.getAll(2206, 1)
+ .then((response) => {
+ setCatTiposDocumentos(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ CCatTiposDocumentos.getAll(2206, 2)
+ .then((response) => {
+ setCatTiposDocumentosInfoCorresponsal(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ CCueCompService.GetAllEstatus()
+ .then((response) => {
+ dispatch(
+ populateCorresponsalesCuentasComplementariasEstatus(response.data)
+ )
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ CTrafDataService.GetAll(IDTrafico)
+ .then((response) => {
+ setFolioTrafico(response.data.folioGemco)
+ setProceso(response.data.proceso)
+ setIDCliente(response.data.idCliente)
+ setIDTabulador(response.data.idTabulador)
+ setTipoOperacion(response.data.tipoOperacion)
+ setOpEntrada(response.data.opEntrada)
+ setOpSalida(response.data.opSalida)
+ setIDCorresponsal(response.data.idCorresponsal)
+ setBultos(response.data.bultos)
+ setKilos(response.data.kilos)
+ setEstatus(response.data.estatus ? response.data.estatus : 0)
+ setTrafico(response.data.trafico)
+ setPedimento(response.data.pedimento)
+ setClavePedimento(response.data.clave ? response.data.clave : '')
+ setFechaPago(setDate(response.data.fechaPago))
+ setTipoCambio(response.data.tipoCambio)
+ setValorAduanaMN(response.data.valorAduanaMN)
+ setTotalPagado(response.data.totalPagado)
+ setValorFacturaMN(response.data.valorFacturaMN)
+ setCantidadFracciones(response.data.cantidadFracciones)
+ setBuque(response.data.buque)
+ setValorFacturasDls(response.data.valorFacturaDls)
+ setDescripcionMercancia(response.data.descripcionMercancia)
+ setObservaciones(
+ response.data.observaciones ? response.data.observaciones : ''
+ )
+ setFechaDesaduanamiento(StrtoDate(response.data.fechaDesaduanamiento))
+ setSemaforoFiscal(response.data.semaforoFiscal)
+ setNoCuenta(response.data.noCuenta)
+ setFechaCuenta(setDate(response.data.fechaCuenta))
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ CContaDataService.Get(IDTrafico, 1)
+ .then((response) => {
+ setRechazosTrafico(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ CContaDataService.Get(IDTrafico, 2)
+ .then((response) => {
+ setRechazosContabilidad(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ loadRectificacionHistorico()
+ DoesThe2ZipFileExists()
+ }
+
+ const loadRectificacionHistorico = () => {
+ CTrafDataService.GetRectificacionHistorico(IDTrafico)
+ .then((response) => {
+ if (response.data.id > 0) {
+ setAduanaH(response.data.aduana.toString())
+ setPatenteH(response.data.patente.toString())
+ setPedimentoH(response.data.pedimento.toString())
+ setClavePedimentoH(response.data.clave)
+ setFechaPagoH(response.data.fechaPago)
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ const DoesThe2ZipFileExists = () => {
+ if (IDTrafico > 0) {
+ FileManService.getFileInfoFromProcess(IDTrafico, 2)
+ .then((response) => {
+ setTieneArchivoZIPGEMCO(
+ response.data.nombreArchivo.length > 5 ? 1 : 0
+ )
+ })
+ .catch((e: Error) => {
+ return
+ })
+ FileManService.getFileInfoFromProcess(IDTrafico, 3)
+ .then((response) => {
+ setTieneArchivoZIPCorresponsal(
+ response.data.nombreArchivo.length > 5 ? 1 : 0
+ )
+ })
+ .catch((e: Error) => {
+ return
+ })
+ }
+ }
+
+ useEffect(() => {
+ if (mCFacturas.length >= 2 && IDTrafico > 0) {
+ CPartidasService.GetAll(IDTrafico)
+ .then((response) => {
+ dispatch(populateCorresponsalesPartidas(response.data))
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ CPedimentoService.Get(IDTrafico)
+ .then((responsed) => {
+ setIDDetail(responsed.data.id)
+ setIDAduana(responsed.data.aduana)
+ setCostoDiario(responsed.data.costoDiario)
+ setDescripcion(responsed.data.descripcion)
+ setIDDestino(responsed.data.destino)
+ setDiasPedPagado(responsed.data.diasCPPagado)
+ setEmbalaje(responsed.data.embalaje)
+ setIDEstatus(responsed.data.estatus)
+ setFAlmacenajeInicioGastos(responsed.data.fAlmacenajeInicioGastos)
+ setFHInstrucciones(StrtoDate(responsed.data.fhInstrucciones))
+ setFHEntregaPlanta(StrtoDate(responsed.data.fhEntregaPlanta))
+ setFechaETA(setDate(responsed.data.fechaETA))
+ setFletes(responsed.data.fletes)
+ setFRevalidacionGuia(responsed.data.fRevalidacionGuia)
+ setHAWB(responsed.data.hawb)
+ setIncoterm(responsed.data.incoterm)
+ setLineaTransportistaInternacional(
+ responsed.data.lineaTransportistaInternacional
+ )
+ setMAWB(responsed.data.mawb)
+ setMontoUSD(responsed.data.montoUSA)
+ setNoGuia(responsed.data.noGuia)
+ setObservaciones(responsed.data.observaciones)
+ setOrigen(responsed.data.origen)
+ setOtros(responsed.data.otros)
+ setTransportista(responsed.data.paqueteriaTransportista)
+ setPesoNeto(responsed.data.pesoNeto)
+ setPreferenciaArancelaria(responsed.data.preferenciaArancelaria)
+ setSeguros(responsed.data.seguros)
+ setIDTipoEmbarque(responsed.data.tipoEmbarque)
+ setTotalPagar(responsed.data.totalPagar)
+ })
+ .catch((e: Error) => {
+ /* setHeader('Error')
+ setMsg('Ocurrio un error: ' + e + ' en el detail')
+ setShowMsg(true) */
+ return
+ })
+ }
+ }, [mCFacturas, IDTrafico, dispatch])
+
+ useEffect(() => {
+ if (Proceso) {
+ if (Depto === 'Contabilidad') {
+ setTerminaProceso(0)
+ } else if (Depto === 'Corresponsalias' && Proceso <= 1) {
+ setChangePermission(true)
+ } else if (Depto === 'Corresponsalias' && Proceso > 1) {
+ setChangePermission(false)
+ } else setChangePermission(false)
+ }
+ if (IDTrafico === 0) {
+ setChangePermission(true)
+ }
+ }, [Proceso, IDTrafico, Depto, []])
+
+ useEffect(() => {
+ LoadEverything()
+ }, [])
+
+ useEffect(() => {
+ LoadEverything()
+ }, [IDTrafico])
+
+ useEffect(() => {
+ if (
+ IDCorresponsal !== 0 &&
+ Aduana !== 0 &&
+ Patente !== 0 &&
+ Pedimento !== 0 &&
+ FechaPago !== '' &&
+ FechaDesaduanamiento !== null &&
+ NoCuenta !== '' &&
+ TieneArchivoZIPGEMCO &&
+ TieneArchivoZIPCorresponsal
+ ) {
+ let tmp = Pedimento?.toString()
+ if (tmp?.length === 7) {
+ setStatusTrafico(2)
+ setStatusColor('readyColor')
+ setReady4NextProcess(true)
+ } else {
+ setStatusColor('pendingColor')
+ setReady4NextProcess(false)
+ }
+ } else {
+ setStatusColor('pendingColor')
+ setReady4NextProcess(false)
+ }
+ }, [
+ IDCorresponsal,
+ Aduana,
+ Patente,
+ Pedimento,
+ FechaPago,
+ FechaDesaduanamiento,
+ NoCuenta,
+ TieneArchivoZIPGEMCO,
+ TieneArchivoZIPCorresponsal
+ ])
+
+ useEffect(() => {
+ if (mCorresponsales) {
+ const result = mCorresponsales.filter(
+ (item) => item.id === IDCorresponsal
+ )
+ if (result.length) {
+ setAduana(result[0].aduana)
+ setPatente(result[0].patente)
+ }
+ }
+ }, [IDCorresponsal, mCorresponsales])
+
+ const StrtoDate = (str: string): Date | null => {
+ if (str) {
+ const original: any = new Date(str)
+ return original
+ } else return null
+ }
+
+ useEffect(() => {
+ if (FechaPago) {
+ getTipoCambio(FechaPago)
+ }
+ }, [FechaPago])
+
+ const getTipoCambio = (Fecha: string) => {
+ DashboardService.getTipoCambio(Fecha)
+ .then((response) => {
+ setTipoCambio(response.data)
+ })
+ .catch((e: Error) => {
+ /* setHeader('Error')
+ setMsg('Ocurrio un error: no pude traer tipo de cambio para esa fecha')
+ setShowMsg(true) */
+ return
+ })
+ }
+
+ useEffect(() => {
+ if (IDCliente > 0) {
+ CTabDataService.GetByCustomer(IDCliente)
+ .then((response) => {
+ setTabuladores(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+ if (Clientes) {
+ let tmpArray: ItemList[] = []
+ Clientes.forEach((element) => {
+ if (element.sClave === IDCliente)
+ tmpArray.push({ id: IDCliente, item: element.sRazonSocial })
+ })
+ setNombreCliente(tmpArray[0].item)
+ CCatAduanasService.getAll(IDCliente)
+ .then((response) => {
+ setDSCatAduanas(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ CCatDestinosService.getAll(IDCliente)
+ .then((response) => {
+ setDSCatDestinos(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ CCatMediosEmbarqueService.getAll()
+ .then((response) => {
+ setDSCatMediosEmbarque(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ CCatTiposEmbarqueService.getAll()
+ .then((response) => {
+ setDSCatTiposEmbarque(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+ }, [IDCliente])
+
+ useEffect(() => {
+ let cont =
+ mCContenedores.length > 0
+ ? mCContenedores.length - 1
+ : mCContenedores.length
+ }, [mCContenedores])
+
+ useEffect(() => {
+ let ant =
+ mCAnticipos.length > 0 ? mCAnticipos.length - 1 : mCAnticipos.length
+ setLblAnticipos('(' + ant + ') anticipos')
+ }, [mCAnticipos])
+
+ useEffect(() => {
+ let fac3 = mCFTerceros.filter(function (row) {
+ return row.factura !== '-Seleccione-' && row.idTrafico === IDTrafico
+ }).length
+ setLblFacturasTerceros('(' + fac3 + ') Facturas pagos a terceros')
+ }, [mCFTerceros])
+
+ useEffect(() => {
+ let fac = mCFacturas.length > 0 ? mCFacturas.length - 1 : mCFacturas.length
+ setLblFacturas('(' + fac + ') Facturas ')
+ let total = 0
+ mCFacturas.forEach((element) => {
+ total += element.idTrafico === IDTrafico ? element.valorFacturaDls : 0
+ })
+ setValorFacturasDls(total)
+ }, [mCFacturas, IDTrafico, IDCliente])
+
+ function calculateDaysBetweenDates(date1: Date, date2: Date) {
+ var oneDay = 24 * 60 * 60 * 1000
+ var date1InMillis = date1.getTime()
+ var date2InMillis = date2.getTime()
+ var days = Math.round(Math.abs(date2InMillis - date1InMillis) / oneDay)
+ return days
+ }
+
+ useEffect(() => {
+ if (FechaDesaduanamiento && FAlmacenajeInicioGastos && CostoDiario) {
+ const dias = calculateDaysBetweenDates(
+ new Date(FAlmacenajeInicioGastos),
+ FechaDesaduanamiento
+ )
+ setTotalPagar((dias - 1) * CostoDiario)
+ }
+ }, [FechaDesaduanamiento, FAlmacenajeInicioGastos, CostoDiario])
+
+ function showModalBox(i: number) {
+ setLoadComponent(i)
+ if (i === 1) setModalSize('lg')
+ else setModalSize('sm')
+ setShowModal(true)
+ }
+
+ function setDate(fecha: string | undefined): string {
+ if (!fecha) return ''
+ else {
+ var dd = fecha?.substring(3, 5)
+ var mm = fecha?.substring(0, 2)
+ var yyyy = fecha?.substring(6, 10)
+ return yyyy + '-' + mm + '-' + dd
+ }
+ }
+
+ function getAduana(id: number): string {
+ Aduanas.forEach((element) => {
+ return element.id === id ? element.descripcion : ''
+ })
+ return ''
+ }
+
+ function openSOIA() {
+ let id: number = Aduana ? Aduana : 0
+ window.open(
+ `https://aplicacionesc.mat.sat.gob.mx/SOIA_CR_WEB/oia_consultarapd_cep.aspx?&pa=${Patente}&dn=${Pedimento}&s=0&ap=${getCurrentYear()}&pad=${Aduana}&ad=${getAduana(
+ id
+ )}`
+ )
+ }
+
+ const saveFinalStep = () => {
+ console.log(TerminaProceso)
+ if (TerminaProceso === -100) return false
+ let data: DTOTraficoCompleto = {
+ id: 0,
+ idUsuario: 0,
+ estatus: 0,
+ comentarios: ''
+ }
+ if (Depto === 'Corresponsalias') {
+ data.id = IDTrafico
+ data.idUsuario = UserId
+ data.estatus = TerminaProceso
+ data.comentarios = ComentariosRechazo
+ } else if (Depto === 'Contabilidad') {
+ let arrStatus = mCCCEstatus.filter((a) => {
+ if (a.id === IDEstatusContabilidad) {
+ return a
+ }
+ })
+ data.id = IDTrafico
+ data.idUsuario = UserId
+ data.estatus = 3
+ data.comentarios = arrStatus[0].estatus
+ }
+ //console.log(JSON.stringify(data))
+ CTrafDataService.ValidateComplete(data)
+ .then((response) => {
+ if (response.status === 200) {
+ setHeader('Informativo')
+ setMsg('La informacion se guardo correctamente')
+ setShowMsg(true)
+ return
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ let handleColor = (time: Date) => {
+ return time.getHours() > 12 ? 'text-success' : 'text-error'
+ }
+
+ const generaRectificacion = () => {
+ if (Aduana && Patente && Pedimento && ClavePedimento.length>0 && FechaPago) {
+ const data : DTORectificacionHistorico = {
+ IdTrafico: IDTrafico,
+ IdUsuario: UserId
+ }
+ CTrafDataService.AppendRectificacionHistorico(data)
+ .then((response) => {
+ loadRectificacionHistorico()
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ } else {
+ setHeader('Error')
+ setMsg('Parea poder generar este proceso es necesario que los siguientes campos tengan informacion: Patente, Aduana, Pedimento, Clave, Fecha pago')
+ setShowMsg(true)
+ return
+ }
+ }
+
+ return (
+
+
+
+
+
+
+ DATOS GEMCO
+
+
+ {
+ props.onClose(true)
+ }}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ showModalBox(11)
+ }}
+ style={{ cursor: 'pointer' }}
+ >
+
+
+
+ Trafico
+
+
+
+
+
+
+
+
+
+
+ Fecha registro
+
+
+
+
+
+ Usuario
+
+
+
+
+
+
+
+ Cliente
+
+
+ {
+ setIDCliente(parseInt(e.target.value))
+ }}
+ value={IDCliente}
+ className="form-select form-select-sm"
+ >
+
+ {Clientes
+ ? Clientes.map((c) => {
+ return (
+
+ )
+ })
+ : null}
+
+
+
+ {
+ return Depto === 'Corresponsalias'
+ ? showModalBox(10)
+ : ''
+ }}
+ style={{ cursor: 'pointer' }}
+ >
+
+
+
+ Precuenta
+
+
+
+ {
+ setIDTabulador(parseInt(e.target.value))
+ }}
+ value={IDTabulador}
+ className="form-select form-select-sm"
+ >
+
+ {Tabuladores
+ ? Tabuladores.map((t) => {
+ return (
+
+ )
+ })
+ : null}
+
+
+
+ {ChangePermission ? (
+
+ ) : (
+ ''
+ )}
+
+
+
+
+ T. Operacion
+
+
+
+ setTipoOperacion(parseInt(e.target.value))
+ }
+ value={TipoOperacion}
+ disabled={Depto !== 'Corresponsalias'}
+ className="form-select form-select-sm"
+ >
+
+
+
+
+
+ setOpEntrada(parseInt(e.target.value))}
+ value={OpEntrada}
+ disabled={Depto !== 'Corresponsalias'}
+ className="form-select form-select-sm"
+ >
+
+
+
+
+
+
+
+
+ setOpSalida(parseInt(e.target.value))}
+ value={OpSalida}
+ disabled={Depto !== 'Corresponsalias'}
+ className="form-select form-select-sm"
+ >
+
+
+
+
+
+
+
+
+ {
+ return Depto === 'Corresponsalias'
+ ? showModalBox(1)
+ : ''
+ }}
+ style={{ cursor: 'pointer' }}
+ >
+
+
+
+ Nombre Corresponsal
+
+
+
+ {
+ setIDCorresponsal(parseInt(e.target.value))
+ }}
+ className="form-select form-select-sm"
+ value={IDCorresponsal}
+ disabled={Depto !== 'Corresponsalias' ? true : false}
+ >
+
+ {mCorresponsales
+ ? mCorresponsales.map((item, index) => {
+ return (
+
+ )
+ })
+ : ''}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Bultos
+
+
+ {
+ const { value } = values
+ setBultos(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ border: '1px solid #000000',
+ width: '70px',
+ borderRadius: '3px'
+ }
+ : {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ paddingLeft: '20px',
+ paddingRight: '5px',
+ border: '1px solid #000000',
+ width: '70px',
+ borderRadius: '3px'
+ }
+ }
+ />
+
+
+ Kilos
+
+
+ {
+ const { value } = values
+ setKilos(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ border: '1px solid #000000',
+ width: '100px',
+ borderRadius: '3px'
+ }
+ : {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ paddingLeft: '20px',
+ paddingRight: '5px',
+ border: '1px solid #000000',
+ width: '100px',
+ borderRadius: '3px'
+ }
+ }
+ />
+
+
+ Estatus
+
+
+ {
+ setEstatus(parseInt(e.target.value))
+ }}
+ >
+
+ {DataCatEstatus
+ ? DataCatEstatus.map((c) => {
+ return (
+
+ )
+ })
+ : null}
+
+
+
+
+
+
+ Trafico
+
+
+ {
+ setTrafico(e.target.value)
+ }}
+ />
+
+
+ Aduana
+
+
+
+
+
+ Patente
+
+
+
+
+
+ {
+ openSOIA()
+ }}
+ style={{ cursor: 'pointer' }}
+ >
+ Pedimento
+
+
+
+ {
+ const { value } = values
+ setPedimento(value.length === 0 ? 0 : value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '18px',
+ backgroundColor: '#FEFDF5',
+ border: '2px solid #837F5D',
+ width: '100px',
+ textAlign: 'right',
+ borderRadius: '10px'
+ }
+ : {
+ fontSize: '16px',
+ backgroundColor: '#FEFDF5',
+ border: '2px solid #837F5D',
+ width: '100px',
+ textAlign: 'right',
+ borderRadius: '10px'
+ }
+ }
+ />
+
+
+ Clave
+
+
+ setClavePedimento(e.target.value)}
+ />
+
+
+ Fec. Pago
+
+
+ setFechaPago(e.target.value)}
+ />
+
+
+
+ 0 && PatenteH.length>0 && PedimentoH.length>0 && FechaPagoH.length>0) ? 'visible' : 'hidden' }}>
+
+
+
+ Aduana
+
+
+
+
+
+ Patente
+
+
+
+
+
+
+ Pedimento
+
+
+
+
+
+
+ Clave
+
+
+
+
+
+ Fec. Pago
+
+
+
+
+
+
+
+
+ Tipo cambio
+
+
+
+ {
+ const { value } = values
+ setTipoCambio(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '18px',
+ backgroundColor: '#F5FFED',
+ border: '2px solid #25D05B',
+ width: '100px',
+ textAlign: 'right',
+ borderRadius: '10px'
+ }
+ : {
+ fontSize: '18px',
+ backgroundColor: '#F5FFED',
+ border: '2px solid #25D05B',
+ width: '100px',
+ textAlign: 'right',
+ borderRadius: '10px',
+ paddingRight: '5px',
+ paddingLeft: '5px'
+ }
+ }
+ />
+
+
+
+ Val Aduana MN
+
+
+
+ {
+ const { value } = values
+ setValorAduanaMN(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '18px',
+ backgroundColor: '#F5FFED',
+ border: '2px solid #25D05B',
+ width: '150px',
+ textAlign: 'right',
+ borderRadius: '10px'
+ }
+ : {
+ fontSize: '18px',
+ backgroundColor: '#F5FFED',
+ border: '2px solid #25D05B',
+ width: '100px',
+ textAlign: 'right',
+ borderRadius: '10px',
+ paddingRight: '5px',
+ paddingLeft: '5px'
+ }
+ }
+ />
+
+
+
+ Total pagado
+
+
+
+ {
+ const { value } = values
+ setTotalPagado(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '18px',
+ backgroundColor: '#F5FFED',
+ border: '2px solid #25D05B',
+ width: '150px',
+ textAlign: 'right',
+ borderRadius: '10px'
+ }
+ : {
+ fontSize: '18px',
+ backgroundColor: '#F5FFED',
+ border: '2px solid #25D05B',
+ width: '150px',
+ textAlign: 'right',
+ borderRadius: '10px',
+ paddingRight: '5px',
+ paddingLeft: '5px'
+ }
+ }
+ />
+
+
+
+ Cant fracciones
+
+
+
+
+
+ setCantidadFracciones((v) =>
+ e.target.validity.valid
+ ? parseInt(e.target.value)
+ : v
+ )
+ }
+ />
+
+
+
+
+
+ Buque
+
+
+ setBuque(e.target.value)}
+ />
+
+
+
+
+
+ {
+ showModalBox(2)
+ }}
+ style={{ cursor: 'pointer' }}
+ >
+
+
+
+ {LblFacturas}
+
+
+
+ {}}
+ className="form-select form-select-sm"
+ disabled={Depto !== 'Corresponsalias'}
+ >
+ {mCFacturas
+ ? mCFacturas.map((item, index) => {
+ return item.idTrafico === IDTrafico ? (
+
+ ) : (
+
+ )
+ })
+ : ''}
+
+
+
+
+ Val Fact Dls
+
+
+
+ {
+ const { value } = values
+ setValorFacturasDls(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '18px',
+ backgroundColor: '#F5FFED',
+ border: '2px solid #25D05B',
+ width: '150px',
+ textAlign: 'right',
+ borderRadius: '10px'
+ }
+ : {
+ fontSize: '18px',
+ backgroundColor: '#F5FFED',
+ border: '2px solid #25D05B',
+ width: '150px',
+ textAlign: 'right',
+ borderRadius: '10px',
+ paddingRight: '5px',
+ paddingLeft: '5px'
+ }
+ }
+ />
+
+
+
+
+ Descripcion de la mercancia:
+
+
+
+ setDescripcionMercancia(e.target.value)
+ }
+ />
+
+
+ Observaciones:
+
+
+ setObservaciones(e.target.value)}
+ />
+
+
+
+
+
+ Fecha de desaduanamiento
+
+
+
+
+ setFechaDesaduanamiento(date)
+ }
+ disabled={Depto === 'Contabilidad'}
+ showTimeSelect
+ timeClassName={handleColor}
+ dateFormat="MM/dd/yyyy HH:mm:ss"
+ placeholderText="No definido"
+ isClearable
+ />{' '}
+
+
+
+ Semaf. fiscal
+
+
+
+
+ setSemaforoFiscal(parseInt(e.target.value))
+ }
+ >
+
+
+
+
+
+ {
+ showModalBox(9)
+ }}
+ style={{ cursor: 'pointer' }}
+ >
+
+
+
+ {LblAnticipos}
+
+
+
+
+ setAnticipo(parseInt(e.target.value))
+ }
+ >
+ {mCAnticipos
+ ? mCAnticipos.map((item, index) => {
+ return item.idTrafico === IDTrafico ? (
+
+ ) : (
+
+ )
+ })
+ : ''}
+
+
+
+
+
+ No. Cuenta
+
+
+ {
+ setNoCuenta(e.target.value)
+ }}
+ />
+
+
+ Fecha Cuenta
+
+
+ setFechaCuenta(e.target.value)}
+ />
+
+
+ {
+ showModalBox(4)
+ }}
+ style={{ cursor: 'pointer' }}
+ >
+
+
+
+ {LblFacturasTerceros}
+
+
+
+
+ setPagosaTerceros(parseInt(e.target.value))
+ }
+ >
+ {mCFTerceros
+ ? mCFTerceros.map((item, index) => {
+ return item.idTrafico === IDTrafico ? (
+
+ ) : (
+
+ )
+ })
+ : ''}
+
+
+
+
+
+ ZIP Archivo Pedimento
+
+
+
+
+
+
+ ZIP Archivo Corresponsal Facturas
+
+
+
+
+
+
+ = 2 ? '0' : '', */
+ }}
+ >
+
+{/*
+
+
+
+ {
+ setIDEstatusContabilidad(parseInt(e.target.value))
+ }}
+ className="form-select form-select-sm"
+ style={{ width: '550px' }}
+ value={IDEstatusContabilidad}
+ >
+
+ {mCCCEstatus
+ ? mCCCEstatus.map((item, index) => {
+ return (
+
+ )
+ })
+ : ''}
+
+
+
+ {Depto === 'Contabilidad' ? (
+
+ ) : (
+ ''
+ )}
+
+
+
+
+ Trafico Corresponsales: Rechazo(s)
+
+
+ Contabilidad: Rechazo(s)
+
+
+
+
+
+
+ {RechazosTrafico
+ ? RechazosTrafico.map((row) => {
+ return (
+ <>
+ {row}
+ >
+ )
+ })
+ : ''}
+
+
+
+
+
+
+ {RechazosContabilidad
+ ? RechazosContabilidad.map((row) => {
+ return (
+ <>
+ {row}
+ >
+ )
+ })
+ : ''}
+
+
+
+
+
+
+
+
+
+
+
+ = 2 ? '' : 'd-none'}
+ >
+
+
+
+ Aduana
+
+ {
+ setIDAduana(parseInt(e.target.value))
+ }}
+ value={Aduana}
+ className="form-select form-select-sm"
+ >
+
+ {DSCatAduanas
+ ? DSCatAduanas.map((c) => {
+ return (
+
+ )
+ })
+ : null}
+
+
+ Tipo embarque
+
+ {
+ setIDTipoEmbarque(parseInt(e.target.value))
+ }}
+ value={IDTipoEmbarque}
+ disabled={Depto !== 'Corresponsalias'}
+ className="form-select form-select-sm"
+ >
+
+ {DSCatTiposEmbarque
+ ? DSCatTiposEmbarque.map((c) => {
+ return (
+
+ )
+ })
+ : null}
+
+
+ Destino
+
+ {
+ setIDDestino(parseInt(e.target.value))
+ }}
+ value={IDDestino}
+ disabled={Depto !== 'Corresponsalias'}
+ className="form-select form-select-sm"
+ >
+
+ {DSCatDestinos
+ ? DSCatDestinos.map((c) => {
+ return (
+
+ )
+ })
+ : null}
+
+
+ Clave pedimento
+
+ setClavePedimento(e.target.value)}
+ />
+
+
+
+
+ {
+ showModalBox(2)
+ }}
+ style={{ cursor: 'pointer' }}
+ >
+
+
+
+ {LblFacturas}
+
+
+
+ {}}
+ className="form-select form-select-sm"
+ disabled={Depto !== 'Corresponsalias'}
+ >
+ {mCFacturas
+ ? mCFacturas.map((item, index) => {
+ return item.idTrafico === IDTrafico ? (
+
+ ) : (
+
+ )
+ })
+ : ''}
+
+
+ Descripcion
+
+ setDescripcion(e.target.value)}
+ />
+
+ Linea transportista internacional
+
+
+ setLineaTransportistaInternacional(e.target.value)
+ }
+ />
+
+
+
+ MAWB
+
+ setMAWB(e.target.value)}
+ />
+
+ HAWB
+
+ setHAWB(e.target.value)}
+ />
+
+ Peso bruto
+
+ {
+ const { value } = values
+ setKilos(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ border: '1px solid #000000',
+ width: '100px',
+ borderRadius: '3px'
+ }
+ : {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ paddingLeft: '20px',
+ paddingRight: '5px',
+ border: '1px solid #000000',
+ width: '100px',
+ borderRadius: '3px'
+ }
+ }
+ />
+
+ Peso neto
+
+ {
+ const { value } = values
+ setPesoNeto(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ border: '1px solid #000000',
+ width: '70px',
+ borderRadius: '3px'
+ }
+ : {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ paddingLeft: '20px',
+ paddingRight: '5px',
+ border: '1px solid #000000',
+ width: '70px',
+ borderRadius: '3px'
+ }
+ }
+ />
+
+ Bultos
+
+ {
+ const { value } = values
+ setBultos(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ border: '1px solid #000000',
+ width: '70px',
+ borderRadius: '3px'
+ }
+ : {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ paddingLeft: '20px',
+ paddingRight: '5px',
+ border: '1px solid #000000',
+ width: '70px',
+ borderRadius: '3px'
+ }
+ }
+ />
+
+ Incoterm
+
+ setIncoterm(e.target.value)}
+ />
+
+
+
+ Fecha ETA
+
+ setFechaETA(e.target.value)}
+ />
+
+ Monto USD
+
+ {
+ const { value } = values
+ setMontoUSD(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ border: '1px solid #000000',
+ width: '90px',
+ borderRadius: '3px'
+ }
+ : {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ paddingLeft: '20px',
+ paddingRight: '5px',
+ border: '1px solid #000000',
+ width: '90px',
+ borderRadius: '3px'
+ }
+ }
+ />
+
+ Origen
+
+ setOrigen(e.target.value)}
+ />
+
+
+
+ Preferencia arancelaria
+
+ {
+ setPreferenciaArancelaria(parseInt(e.target.value))
+ }}
+ value={PreferenciaArancelaria}
+ className="form-select form-select-sm"
+ disabled={Depto !== 'Corresponsalias'}
+ >
+
+
+
+
+ Fecha/hora instrucciones
+
+ setFHInstrucciones(date)}
+ showTimeSelect
+ timeClassName={handleColor}
+ dateFormat="MM/dd/yyyy HH:mm:ss"
+ placeholderText="No definido"
+ isClearable
+ />
+
+ Fecha/hora entrega en planta
+
+ setFHEntregaPlanta(date)}
+ showTimeSelect
+ timeClassName={handleColor}
+ dateFormat="MM/dd/yyyy HH:mm:ss"
+ placeholderText="No definido"
+ isClearable
+ />{' '}
+
+
+
+ Observaciones
+
+ setObservaciones(e.target.value)}
+ />
+
+
+
+ Nombre de paqueteteria o transportista
+
+ setTransportista(e.target.value)}
+ />
+
+ No guia de embarque a destino
+
+ setNoGuia(e.target.value)}
+ />
+
+ Fecha despacho
+
+ setFDespacho(e.target.value)}
+ />
+
+
+
+
+
+
+ {CatTiposDocumento ? (
+
+
+ {CatTiposDocumento.map((c) => {
+ return (
+
+
+
+
+
+
+
+ )
+ })}
+
+
+ ) : null}
+
+
+
+ = 2 ? '' : 'd-none'}
+ >
+
+ Trafico
+
+ {
+ setTrafico(e.target.value)
+ }}
+ />
+
+ Fecha entrada
+
+ setFEntrada(e.target.value)}
+ />
+
+ Fec revalida guia
+
+ setFRevalidacionGuia(e.target.value)}
+ />
+
+ Fec. Pago
+
+ setFechaPago(e.target.value)}
+ />
+
+
+
+ Dias C/PDTO pag
+
+
+
+ Fletes
+
+ {
+ const { value } = values
+ setFletes(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ border: '1px solid #000000',
+ width: '90px',
+ borderRadius: '3px'
+ }
+ : {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ paddingLeft: '20px',
+ paddingRight: '5px',
+ border: '1px solid #000000',
+ width: '90px',
+ borderRadius: '3px'
+ }
+ }
+ />
+
+ Seguros
+
+ {
+ const { value } = values
+ setSeguros(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ border: '1px solid #000000',
+ width: '90px',
+ borderRadius: '3px'
+ }
+ : {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ paddingLeft: '20px',
+ paddingRight: '5px',
+ border: '1px solid #000000',
+ width: '90px',
+ borderRadius: '3px'
+ }
+ }
+ />
+
+ Embalaje
+
+ {
+ const { value } = values
+ setEmbalaje(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ border: '1px solid #000000',
+ width: '90px',
+ borderRadius: '3px'
+ }
+ : {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ paddingLeft: '20px',
+ paddingRight: '5px',
+ border: '1px solid #000000',
+ width: '90px',
+ borderRadius: '3px'
+ }
+ }
+ />
+
+ Otros
+
+ {
+ const { value } = values
+ setOtros(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ border: '1px solid #000000',
+ width: '90px',
+ borderRadius: '3px'
+ }
+ : {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ paddingLeft: '20px',
+ paddingRight: '5px',
+ border: '1px solid #000000',
+ width: '90px',
+ borderRadius: '3px'
+ }
+ }
+ />
+
+
+
+
+
+ Almacenaje
+
+ Fecha inicio de gastos
+
+
+ setFAlmacenajeInicioGastos(e.target.value)
+ }
+ />
+
+ Costo diario
+
+ {
+ const { value } = values
+ setCostoDiario(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ border: '1px solid #000000',
+ width: '90px',
+ borderRadius: '3px'
+ }
+ : {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ paddingLeft: '20px',
+ paddingRight: '5px',
+ border: '1px solid #000000',
+ width: '90px',
+ borderRadius: '3px'
+ }
+ }
+ />
+
+ Total a pagar
+
+ {
+ const { value } = values
+ setTotalPagar(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ border: '1px solid #000000',
+ width: '90px',
+ borderRadius: '3px'
+ }
+ : {
+ fontSize: '15px',
+ backgroundColor: '#FFFFFF',
+ paddingLeft: '20px',
+ paddingRight: '5px',
+ border: '1px solid #000000',
+ width: '90px',
+ borderRadius: '3px'
+ }
+ }
+ />
+
+
+
+
+
+
+
+
+
+
+ Tipo cambio
+
+
+
+ {
+ const { value } = values
+ setTipoCambio(value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '18px',
+ backgroundColor: '#F5FFED',
+ border: '2px solid #25D05B',
+ width: '100px',
+ textAlign: 'right',
+ borderRadius: '10px'
+ }
+ : {
+ fontSize: '18px',
+ backgroundColor: '#F5FFED',
+ border: '2px solid #25D05B',
+ width: '100px',
+ textAlign: 'right',
+ borderRadius: '10px',
+ paddingRight: '5px',
+ paddingLeft: '5px'
+ }
+ }
+ />
+
+
+
+
+ Fecha de despacho (Salida de contenedores)
+
+
+ setFDespacho(e.target.value)}
+ />
+
+
+
+
+ Estatus
+
+
+ {
+ setEstatus(parseInt(e.target.value))
+ }}
+ >
+
+ {DataCatEstatus
+ ? DataCatEstatus.map((c) => {
+ return (
+
+ )
+ })
+ : null}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {CatTiposDocumento ? (
+
+
+ {CatTiposDocumentoInfoCorresponsal
+ ? CatTiposDocumentoInfoCorresponsal.map((c) => {
+ return (
+
+
+
+
+
+
+
+ )
+ })
+ : ''}
+
+
+ ) : null}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {/*
+
+ Pedimento
+
+ {
+ const { value } = values
+ setPedimento(value.length === 0 ? 0 : value)
+ }}
+ style={
+ Depto === 'Corresponsalias'
+ ? {
+ fontSize: '18px',
+ backgroundColor: '#FEFDF5',
+ border: '2px solid #837F5D',
+ width: '100px',
+ textAlign: 'right',
+ borderRadius: '10px',
+ }
+ : {
+ fontSize: '16px',
+ backgroundColor: '#FEFDF5',
+ border: '2px solid #837F5D',
+ width: '100px',
+ textAlign: 'right',
+ borderRadius: '10px',
+ }
+ }
+ />
+
+ Fecha pago
+
+ Motivo
+
+
+ */}
+
+
+
+
+
+
+ {LoadComponent === 1 ? (
+
+
+
+ ) : null}
+ {LoadComponent === 4 ? (
+
+ ) : null}
+ {LoadComponent === 7 ? (
+
+
+
+ ) : null}
+ {LoadComponent === 2 ? (
+
+ ) : null}
+ {LoadComponent === 9 ? (
+
+ ) : null}
+ {LoadComponent === 10 ? (
+
+
+
+ ) : null}
+ {LoadComponent === 11 ? (
+
+
+
+ ) : null}
+ {LoadComponent === 12 ? (
+
+ ) : null}
+
+
+
{
+ setShowMsg(false)
+ }}
+ />
+
+ )
+}
diff --git a/src/Components/Dashboard/Dashboard.tsx b/src/Components/Dashboard/Dashboard.tsx
new file mode 100644
index 0000000..46d18e4
--- /dev/null
+++ b/src/Components/Dashboard/Dashboard.tsx
@@ -0,0 +1,47 @@
+import React, { FC, useEffect, useState } from 'react'
+import DashboardCorresponsales from './DashboardCorresponsales'
+import { DashboardContabilidad } from './DashboardContabilidad'
+import { Col, Container, Row } from 'react-bootstrap'
+import { DashboardFacturacion } from './DashboardFacturacion'
+import { DashboardClasificacion } from './DashboardClasificacion'
+import DashboardTrafico from './DashboardTrafico'
+
+interface IProps {}
+
+export default function Dashboard(props: IProps) {
+ const [Depto, setDepto] = useState(() => {
+ const stickyValue = window.localStorage.getItem('Departamento')
+ return stickyValue !== null ? JSON.parse(stickyValue) : 0
+ })
+ const [User, setUser] = useState(() => {
+ const stickyValue = window.localStorage.getItem('User')
+ return stickyValue !== null ? JSON.parse(stickyValue) : 0
+ })
+
+ return (
+
+
+
+
+ {[['Direcccion', 'Sistemas', 'Corresponsalias'].includes(Depto) ? : ''].map(
+ (item) => {
+ return {item}
+ }
+ )}
+ {[['Direcccion', 'Sistemas', 'Contabilidad'].includes(Depto) ? : ''].map((item) => {
+ return {item}
+ })}
+ {[['Direcccion', 'Sistemas', 'Facturacion'].includes(Depto) ? : ''].map((item) => {
+ return {item}
+ })}
+ {[['Direcccion', 'Sistemas', 'Operaciones', 'Clasificacion'].includes(Depto) ? : ''].map((item) => {
+ return {item}
+ })}
+ {[['Direcccion', 'Sistemas', 'Operaciones', 'Trafico'].includes(Depto) ? : ''].map((item) => {
+ return {item}
+ })}
+
+
+
+ )
+}
diff --git a/src/Components/Dashboard/DashboardClasificacion.tsx b/src/Components/Dashboard/DashboardClasificacion.tsx
new file mode 100644
index 0000000..908ef7d
--- /dev/null
+++ b/src/Components/Dashboard/DashboardClasificacion.tsx
@@ -0,0 +1,122 @@
+import { useEffect, useState } from 'react'
+import { Card, Col, ProgressBar, Row } from 'react-bootstrap'
+import { IconContext } from 'react-icons'
+import { FaAmazon } from 'react-icons/fa'
+import { Link } from 'react-router-dom'
+import DashboardDataService from '../../Services/Dashboard/Dashboard.Clasificacion.Services'
+
+export interface IDashboardClasificacionProps {}
+
+export function DashboardClasificacion(props: IDashboardClasificacionProps) {
+ const [Terminadas, setTerminadas] = useState(0)
+ const [Pendientes, setPendientes] = useState(0)
+ const [PendientesRespuesta, setPendientesRespuesta] = useState(0)
+ const [Total, setTotal] = useState(0)
+
+ useEffect(() => {
+ DashboardDataService.DashboardInvoices(1)
+ .then((response) => {
+ setPendientes(response.data.total)
+ })
+ .catch((e: Error) => {
+ return
+ })
+ DashboardDataService.DashboardInvoices(2)
+ .then((response) => {
+ setTerminadas(response.data.total)
+ })
+ .catch((e: Error) => {
+ return
+ })
+ DashboardDataService.DashboardInvoices(-1)
+ .then((response) => {
+ setPendientesRespuesta(response.data.total)
+ })
+ .catch((e: Error) => {
+ return
+ })
+ }, [])
+
+ useEffect(() => {
+ setTotal(Pendientes + Terminadas)
+ }, [Pendientes, Terminadas])
+
+ return (
+ <>
+
+
+ Clasificación
+
+
+ Facturas {' '}
+
+
+
+
+
+
+
+ Terminadas
+
+
+
+
+ Pendientes
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {Terminadas}
+
+
+ {Pendientes}
+
+
+
+
+ Facturas con excepciones ({PendientesRespuesta})
+
+
+
+
+
+ >
+ )
+}
diff --git a/src/Components/Dashboard/DashboardContabilidad.tsx b/src/Components/Dashboard/DashboardContabilidad.tsx
new file mode 100644
index 0000000..9f5d53e
--- /dev/null
+++ b/src/Components/Dashboard/DashboardContabilidad.tsx
@@ -0,0 +1,116 @@
+import React, { FC, useEffect, useState } from 'react'
+import { Card, Col, Container, Row } from 'react-bootstrap'
+import { IconContext } from 'react-icons'
+import { BsQuestionOctagonFill } from 'react-icons/bs'
+import { FaCcMastercard, FaFileInvoiceDollar } from 'react-icons/fa'
+import { FcSurvey } from 'react-icons/fc'
+import { Link } from 'react-router-dom'
+import DashboardDataService from '../../Services/Dashboard/Dashboard.Contabilidad.Service'
+
+interface IProps {}
+
+export const DashboardContabilidad: FC = (props) => {
+ const [CTCTotal, setCTCTotal] = useState(0) // Corresponsales: Traficos terminados listos para contabilidad
+ const [CAPATotal, setCAPATotal] = useState(0) // Corresponsales anticipos pendientes de autorizar
+ const [CuentasComplementariasPedientes, setCuentasComplementariasPendientes] = useState(0) // Corresponsales anticipos pendientes de autorizar
+
+ useEffect(() => {
+ DashboardDataService.getTotalTraficosPendientesAutorizar(4)
+ .then((response) => {
+ setCTCTotal(response.data.total)
+ })
+ .catch((e: Error) => {
+ return
+ })
+ DashboardDataService.getTotalAnticiposPendientes()
+ .then((response) => {
+ setCAPATotal(response.data.total)
+ })
+ .catch((e: Error) => {
+ return
+ })
+ DashboardDataService.getTotalCuentasComplementariasPedientes()
+ .then((response) => {
+ setCuentasComplementariasPendientes(response.data.total)
+ })
+ .catch((e: Error) => {
+ return
+ })
+ }, [])
+
+ return (
+ <>
+
+
+ Contabilidad
+
+
+ Traficos pendientes
+
+
+
+ {}} />
+
+
+ {CTCTotal}
+
+
+
+
+ Ver mas...
+
+
+
+
+
+
+ Contabilidad
+
+ Anticipos pendientes de autorizar
+ {}} />
+
+
+
+
+ {CAPATotal}
+
+
+
+
+ Ver mas...
+
+
+
+
+
+
+ Contabilidad
+
+ Cuentas complementarias pendientes
+ {}} />
+
+
+
+
+ {CuentasComplementariasPedientes}
+
+
+
+
+ Ver mas...
+
+
+
+
+ >
+ )
+}
diff --git a/src/Components/Dashboard/DashboardCorresponsales.tsx b/src/Components/Dashboard/DashboardCorresponsales.tsx
new file mode 100644
index 0000000..38b86c8
--- /dev/null
+++ b/src/Components/Dashboard/DashboardCorresponsales.tsx
@@ -0,0 +1,150 @@
+import { FC, useEffect, useState } from 'react';
+import { Card, Col, Row } from 'react-bootstrap';
+import { Link } from 'react-router-dom';
+import DashboardDataService from '../../Services/Dashboard/Dashboard.Corresponsales.Services';
+import { useNavigate } from 'react-router-dom';
+import ReactApexChart from 'react-apexcharts';
+import { ApexOptions } from 'apexcharts';
+
+interface IProps {}
+
+export default function DashboardCorresponsales(props: IProps) {
+ let navigate = useNavigate();
+ const [TotalCorresponsales, setTotalCorresponsales] = useState(0);
+ const [labels, setlabels] = useState([]);
+ const [series, setseries] = useState([]);
+ //const [TipoCambio, setTipoCambio] = useState(0)
+ const [CircleOptions, setCirleOpcions] = useState({
+ labels: [
+ '(2) Rechazos para el corresponsal',
+ ' (0) Rechazados x Contabilidad',
+ '(10) Pendientes por terminar',
+ ],
+ colors: ['#EB984E', '#E52626', '#ABEB4E', '#2288D3'],
+ legend: { position: 'bottom' },
+ plotOptions: {
+ pie: {
+ donut: {
+ size: '55%',
+ },
+ },
+ },
+ });
+
+ useEffect(() => {
+ DashboardDataService.getCorresponsales()
+ .then((response) => {
+ console.log(response.data);
+ let labels: string[] = [];
+ let series: number[] = [];
+ response.data.forEach((element) => {
+ if (element.descripcion.indexOf('Total') === -1) {
+ labels.push('(' + element.total + ') : ' + element.descripcion);
+ series.push(element.total);
+ } else {
+ setTotalCorresponsales(element.total);
+ }
+ });
+ setlabels(labels);
+ setseries(series);
+
+ setCirleOpcions({
+ labels: labels,
+ colors: ['#EB984E', '#E52626', '#ABEB4E'],
+ legend: { position: 'bottom' },
+ plotOptions: {
+ pie: {
+ donut: {
+ size: '55%',
+ labels: {
+ show: true,
+ total: {
+ showAlways: true,
+ show: true,
+ fontSize: '15px',
+ },
+ value: {
+ show: true,
+ fontSize: '43px',
+ fontWeight: 'bold',
+ },
+ },
+ },
+ },
+ },
+ });
+ })
+ .catch((e: Error) => {
+ return;
+ });
+ //getTipoCambio(currentDate())
+ }, []);
+
+ function ConvertStringToHex(str: string) {
+ var arr = [];
+ for (var i = 0; i < str.length; i++) {
+ arr[i] = ('00' + str.charCodeAt(i).toString(16)).slice(-4);
+ }
+ return '\\u' + arr.join('\\u');
+ }
+
+ function currentDate(): string {
+ var today = new Date();
+ var dd = String(today.getDate()).padStart(2, '0');
+ var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
+ var yyyy = today.getFullYear();
+ return yyyy + '-' + mm + '-' + dd;
+ }
+
+ return (
+ <>
+
+
+
+ Corresponsales: Traficos pendientes
+
+
+ {}} />
+ {labels ? (
+
+ ) : (
+ ''
+ )}
+
+
+
+
+ {/*
+ Buscar
+ */}
+ {/* Tipo cambio: ${TipoCambio} */}
+
+ {/* */}
+
+
+ Ver mas...
+
+
+
+
+
+
+ >
+ );
+};
diff --git a/src/Components/Dashboard/DashboardFacturacion.tsx b/src/Components/Dashboard/DashboardFacturacion.tsx
new file mode 100644
index 0000000..d477cba
--- /dev/null
+++ b/src/Components/Dashboard/DashboardFacturacion.tsx
@@ -0,0 +1,56 @@
+import React, { FC, useEffect, useState } from 'react'
+import { Card, Col, Container, Row } from 'react-bootstrap'
+import { IconContext } from 'react-icons'
+import { BsCashCoin } from 'react-icons/bs'
+import { Link } from 'react-router-dom'
+import DashboardDataService from '../../Services/Dashboard/Dashboard.Contabilidad.Service'
+
+interface IProps {}
+
+export const DashboardFacturacion: FC = (props) => {
+ const [CTCTotal, setCTCTotal] = useState(0) // Corresponsales: Traficos terminados listos para contabilidad
+ const [CAPATotal, setCAPATotal] = useState(0) // Corresponsales anticipos pendientes de autorizar
+ const [CuentasComplementariasPedientes, setCuentasComplementariasPendientes] = useState(0) // Corresponsales anticipos pendientes de autorizar
+
+ useEffect(() => {
+ DashboardDataService.getTotalTraficosPendientesAutorizar(5)
+ .then((response) => {
+ setCTCTotal(response.data.total)
+ })
+ .catch((e: Error) => {
+ return
+ })
+ }, [])
+
+ return (
+ <>
+
+
+ Facturacion
+
+
+ Traficos pendientes
+
+
+
+ {}} />
+
+
+
+
+ {CTCTotal}
+
+
+
+
+ Ver mas...
+
+
+
+
+ >
+ )
+}
diff --git a/src/Components/Dashboard/DashboardTrafico.tsx b/src/Components/Dashboard/DashboardTrafico.tsx
new file mode 100644
index 0000000..cb66b8a
--- /dev/null
+++ b/src/Components/Dashboard/DashboardTrafico.tsx
@@ -0,0 +1,113 @@
+import * as React from 'react'
+import { useEffect, useState } from 'react'
+import { Card, Col, ProgressBar, Row } from 'react-bootstrap'
+import { IconContext } from 'react-icons'
+import { FaAmazon } from 'react-icons/fa'
+import { Link } from 'react-router-dom'
+import '../../css/generic01.css'
+import DashboardDataService from '../../Services/Dashboard/Dashboard.Clasificacion.Services'
+
+export interface IDashboardTraficoProps {
+}
+
+export default function DashboardTrafico (props: IDashboardTraficoProps) {
+ const [Terminadas, setTerminadas] = useState(0)
+ const [Pendientes, setPendientes] = useState(0)
+ const [Total, setTotal] = useState(0)
+
+ useEffect(() => {
+ DashboardDataService.DashboardInvoices(3)
+ .then((response) => {
+ setPendientes(response.data.total)
+ })
+ .catch((e: Error) => {
+ return
+ })
+ DashboardDataService.DashboardInvoices(4)
+ .then((response) => {
+ setTerminadas(response.data.total)
+ })
+ .catch((e: Error) => {
+ return
+ })
+ }, [])
+
+ useEffect(() => {
+ setTotal(Pendientes + Terminadas)
+ }, [Pendientes, Terminadas])
+
+ return (
+ <>
+
+
+ Trafico
+
+
+ Facturas {' '}
+
+
+
+
+
+
+
+ Terminadas
+
+
+
+
+ Pendientes
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {Terminadas}
+
+
+ {Pendientes}
+
+
+
+
+
+
+ >
+ )
+ }
+
\ No newline at end of file
diff --git a/src/Components/Home/home.tsx b/src/Components/Home/home.tsx
new file mode 100644
index 0000000..9d43777
--- /dev/null
+++ b/src/Components/Home/home.tsx
@@ -0,0 +1,77 @@
+import React, { useEffect, useState } from 'react'
+import { Container, Form, Nav, Navbar, NavDropdown } from 'react-bootstrap'
+import ItemMenu from '../../Interfaces/Catalogos/IItemMenu'
+import '../../css/generic01.css'
+
+interface Isubmenu {
+ menu: ItemMenu[]
+ descripcion: string
+}
+
+function Submenu({ descripcion, menu }: Isubmenu) {
+ return (
+
+
+ {menu.map((item, index) => {
+ return (
+
+ {item.descripcion}
+
+ )
+ })}
+
+
+ )
+}
+
+export const Home: React.FC<{}> = (props) => {
+ let _menu: ItemMenu[] = []
+ let mn: string = ''
+ const [menu, setMenu] = useState(
+ localStorage.getItem('menu') ? localStorage.getItem('menu') : ''
+ )
+ const [mainMenu, setMainMenu] = useState(_menu)
+
+ useEffect(() => {
+ if (menu) {
+ setMainMenu(JSON.parse(menu))
+ }
+ }, [menu])
+
+ return (
+
+
+
+ GEMCO
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/Components/Login/login.tsx b/src/Components/Login/login.tsx
new file mode 100644
index 0000000..1c126f9
--- /dev/null
+++ b/src/Components/Login/login.tsx
@@ -0,0 +1,163 @@
+import * as React from 'react'
+import { useNavigate } from 'react-router-dom'
+import { Formik, Form, Field } from 'formik'
+import { useSelector, useDispatch } from 'react-redux'
+//import { RootState } from '../../store/store'
+import { logued } from '../../store/features/userStatusSlice/userStatusSlice'
+import ILogin from '../../Interfaces/Ilogin'
+import authDataService from '../../Services/Auth/Auth.Service'
+import '../../css/login.css'
+import jwt_decode from 'jwt-decode'
+import IjwtStructure from '../../Interfaces/IjwtStructure'
+import { RootState } from '../../store/store'
+import { AxiosError } from 'axios'
+import { MsgInformativo } from '../Utils/Toast/msgInformativo'
+import logo from '../../images/GEMCO_mini.png'
+import Dashboard from '../Dashboard/Dashboard'
+import { Alert, Card } from 'react-bootstrap'
+
+export const Login: React.FC<{}> = () => {
+ const dispatch = useDispatch()
+ const navigate = useNavigate()
+ const userLogued = useSelector((state: RootState) => state.userStatus.value)
+ const [show, setShow] = React.useState(false)
+ const [msg, setMsg] = React.useState('')
+ const [header, setHeader] = React.useState('')
+ const [msgColor, setMsgColor] = React.useState('primary')
+ const initialValues: ILogin = { Usuario: '', Contrasena: '' }
+
+ return (
+
+ {!userLogued ? (
+
+{/*
+ Aviso importante!
+
+ Proximanate esteremos reunicando el contenido de este servidor de aplicaciones, al nuevo dominio de aplicaciones: https://www.gemcousa.mx
+
+ */}
+
+
+
+
+
+
{
+ authDataService
+ .create(values)
+ .then((response: any) => {
+ localStorage.setItem(
+ 'menu',
+ JSON.stringify(response.data.menu)
+ )
+ localStorage.setItem('token', response.data.token)
+ localStorage.setItem(
+ 'tokenInfo',
+ JSON.stringify(jwt_decode(response.data.token))
+ )
+ var values: IjwtStructure = jwt_decode(
+ response.data.token
+ )
+ localStorage.setItem(
+ 'UserId',
+ JSON.stringify(values.UserId)
+ )
+ localStorage.setItem(
+ 'User',
+ JSON.stringify(values.Usuario)
+ )
+ localStorage.setItem(
+ 'Departamento',
+ JSON.stringify(values.Departamento)
+ )
+ localStorage.setItem(
+ 'UserType',
+ JSON.stringify(values.UserType)
+ )
+ localStorage.setItem(
+ 'Perfil',
+ JSON.stringify(values.Perfil)
+ )
+ dispatch(logued(true))
+ })
+ .catch((e: AxiosError) => {
+ localStorage.setItem('menu', '')
+ localStorage.setItem('token', '')
+ setHeader('Error')
+ if (e.message.includes('400')) {
+ setMsg('Credenciales invalidas!')
+ } else if (e.message.includes('401')) {
+ setMsg(
+ 'Debere cambiar la contraseña, para poder entrar a este sitio'
+ )
+ }
+ setShow(true)
+ })
+ }}
+ >
+
+
+
+
+
+
+
+
+
+ ) : (
+
+ )}
+
+ )
+}
diff --git a/src/Components/Logout/logout.tsx b/src/Components/Logout/logout.tsx
new file mode 100644
index 0000000..bba6e24
--- /dev/null
+++ b/src/Components/Logout/logout.tsx
@@ -0,0 +1,21 @@
+import { FC, useEffect } from 'react'
+import { useNavigate } from 'react-router-dom'
+import { useDispatch } from 'react-redux'
+import { logued } from '../../store/features/userStatusSlice/userStatusSlice'
+
+interface IProps {}
+
+const Logout: FC = (props) => {
+ const dispatch = useDispatch()
+ let navigate = useNavigate()
+
+ useEffect(() => {
+ window.localStorage.clear()
+ dispatch(logued(false))
+ navigate('/')
+ })
+
+ return
+}
+
+export default Logout
diff --git a/src/Components/MenuUsuario/MenuUsuario.tsx b/src/Components/MenuUsuario/MenuUsuario.tsx
new file mode 100644
index 0000000..e05fc92
--- /dev/null
+++ b/src/Components/MenuUsuario/MenuUsuario.tsx
@@ -0,0 +1,37 @@
+import { FC } from 'react'
+import { NavDropdown } from 'react-bootstrap'
+import IUsuariosPerfilesMenu from '../../Interfaces/IPerfilesMenu'
+
+interface IProps {
+ menu: IUsuariosPerfilesMenu[] | undefined
+}
+
+const MenuUsuario: FC = (props) => {
+ return (
+
+ {props.menu
+ ? props.menu.map((mainMenu) => {
+ return mainMenu.padreId === 0 ? (
+
+ {props.menu
+ ? props.menu.map((item) => {
+ return item.padreId === mainMenu.itemMenu ? (
+
+ {item.descripcion}
+
+ ) : (
+ ''
+ )
+ })
+ : null}
+
+ ) : (
+ ''
+ )
+ })
+ : null}
+
+ )
+}
+
+export default MenuUsuario
diff --git a/src/Components/Register/UserList/UserList.tsx b/src/Components/Register/UserList/UserList.tsx
new file mode 100644
index 0000000..1469ccf
--- /dev/null
+++ b/src/Components/Register/UserList/UserList.tsx
@@ -0,0 +1,276 @@
+import React, { FC, useEffect, useState } from 'react'
+import { Alert, Button, Col, Form, Modal, Row, Table } from 'react-bootstrap'
+import DataTable from 'react-data-table-component'
+import { IRegister } from '../../../Interfaces/IRegister'
+import usuariosServices from '../../../Services/Catalogos/Usuarios.Services'
+import PerfilesServices from '../../../Services/Catalogos/PerfilesMenu.Services'
+import { IPerfil } from '../../../Interfaces/Catalogos/IPerfiles'
+import { IconContext } from 'react-icons'
+import {
+ BsCheckCircleFill,
+ BsCheckLg,
+ BsFillPersonCheckFill,
+ BsFillPersonDashFill
+} from 'react-icons/bs'
+
+interface IProps {
+ show: boolean
+ CloseModal: (arg: boolean) => void
+ GetUserInfo: (arg: IRegister) => void
+}
+
+export const UserList: React.FC = (props) => {
+ const [sDialog, setsDialog] = React.useState(true)
+ const [Usuarios, setUsuarios] = React.useState()
+ const [Data, setData] = useState([])
+ const [DataPerfiles, setDataPerfiles] = useState([])
+ const [DataOriginal, setDataOriginal] = useState([])
+ const [filtro, setFiltro] = useState('')
+ const columnsConcepts = [
+ {
+ name: 'id',
+ width: '70px',
+ cell: (row: IRegister) => (
+ {
+ props.GetUserInfo(row)
+ }}
+ >
+ {row.id}
+
+ ),
+ sortable: true
+ },
+ {
+ name: 'Usuario',
+ width: '200px',
+ cell: (row: IRegister) => (
+ {
+ props.GetUserInfo(row)
+ }}
+ >
+ {row.usuario}
+
+ ),
+ sortable: true
+ },
+ {
+ name: 'Nombre',
+ width: '250px',
+ cell: (row: IRegister) => (
+ {
+ props.GetUserInfo(row)
+ }}
+ >
+ {row.nombre}
+
+ ),
+ sortable: true
+ },
+ {
+ name: 'Correo',
+ width: '250px',
+ cell: (row: IRegister) => (
+ {
+ props.GetUserInfo(row)
+ }}
+ >
+ {row.correo}
+
+ ),
+ sortable: true
+ },
+ /* {
+ name: 'Ultima visita',
+ width: '125px',
+ cell: (row: IRegister) => (
+ {
+ props.GetUserInfo(row)
+ }}
+ >
+ {row.fechaUltimaVisita}
+
+ ),
+ sortable: true
+ }, */
+ {
+ name: 'Perfil',
+ width: '250px',
+ cell: (row: IRegister) => (
+ {
+ props.GetUserInfo(row)
+ }}
+ >
+ {getProfile(row.idPerfil)}
+
+ ),
+ sortable: true
+ },
+ {
+ name: 'Estatus',
+ width: '90px',
+ cell: (row: IRegister) => (
+ {
+ props.GetUserInfo(row)
+ }}
+ >
+ {row.activo == 1 ? (
+
+
+
+ ) : (
+
+
+
+ )}
+
+ ),
+ sortable: true
+ }
+ ]
+
+ const getProfile = (Id: number) => {
+ const NoAsignado = ' - NO ASIGNADO -'
+ if (Id === 0) return NoAsignado
+ else if (DataPerfiles) {
+ const Profile = DataPerfiles.filter((item) => item.id === Id)
+ return Profile[0].perfil ? Profile[0].perfil : NoAsignado
+ }
+ return NoAsignado
+ }
+
+ useEffect(() => {
+ usuariosServices
+ .getAllUsuarios()
+ .then((response) => {
+ setData(response.data)
+ setDataOriginal(response.data)
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+ PerfilesServices.getAllPerfiles()
+ .then((response) => {
+ setDataPerfiles(response.data)
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+ }, [props.show])
+
+ const filtraReporte = (e: any) => {
+ setFiltro(e.target.value)
+ if (e.target.value.length > 0) {
+ setData(
+ Data.filter(function (row) {
+ return (
+ row.id.toString().includes(e.target.value) ||
+ row.usuario.toLowerCase().includes(e.target.value) ||
+ row.nombre.toLowerCase().includes(e.target.value) ||
+ row.correo.toLowerCase().includes(e.target.value)
+ )
+ })
+ )
+ } else {
+ setData(DataOriginal)
+ }
+ }
+
+ return props.show ? (
+
+
+
+
+
+
+
+ Lista de usuarios
+
+
+ {
+ filtraReporte(e)
+ }}
+ />
+
+
+
+
+
+ {/*
+
+
+ id |
+ Usuario |
+ Nombre |
+ Correo |
+ Ultima visita |
+ Activo |
+
+
+
+ {Usuarios
+ ? Usuarios.map((rec, index) => (
+ {
+ props.GetUserInfo(rec)
+ }}
+ >
+ {rec.id} |
+ {rec.usuario} |
+ {rec.nombre} |
+ {rec.correo} |
+ {rec.fechaUltimaVisita} |
+ {rec.activo == 0 ? 'Inactivo' : 'Activo'} |
+
+ ))
+ : null}
+
+
*/}
+
+
+
+
+
+ ) : null
+}
diff --git a/src/Components/Register/admonPerfiles/AdmonPerfiles.tsx b/src/Components/Register/admonPerfiles/AdmonPerfiles.tsx
new file mode 100644
index 0000000..d2e6181
--- /dev/null
+++ b/src/Components/Register/admonPerfiles/AdmonPerfiles.tsx
@@ -0,0 +1,258 @@
+import React, { FC, useEffect } from 'react'
+import { Button, Modal, Table } from 'react-bootstrap'
+import IPerfilesMenu from '../../../Interfaces/IPerfilesMenu'
+import perfilesMenuServices from '../../../Services/Catalogos/PerfilesMenu.Services'
+import { IPerfil } from '../../../Interfaces/Catalogos/IPerfiles'
+import { NuevoPerfil } from './nuevoPerfil/NuevoPerfil'
+import '../../../css/menu2.css'
+import '../../../css/generic01.css'
+import DTOItemMenuPerfil from '../../../DTO/DTOItemMenuPerfil'
+import { NuevoItemMenu } from './nuevoItemMenu/NuevoItemMenu'
+
+interface IProps {
+ show: boolean
+ CloseModal: (arg: boolean) => void
+ // GetUserInfo: (arg: IRegister) => void;
+ CloseModalPerfiles: (arg: boolean) => void
+}
+
+interface IPropsChild {
+ item: IPerfilesMenu
+ menu: IPerfilesMenu[]
+ IdPerfil: number
+}
+
+const MenuChild: React.FC = (props) => {
+ const [DialogNewItemMenu, setDialogNewItemMenu] = React.useState(false)
+ const [ItemMenu, setItemMenu] = React.useState(0)
+ function addItemMenu(id: number, e: any) {
+ const data: DTOItemMenuPerfil = {
+ IdPerfil: props.IdPerfil,
+ itemMenu: id,
+ asignado: e.currentTarget.checked
+ }
+ console.log(data)
+ perfilesMenuServices
+ .toggleItemMenu(data)
+ .then((response) => {})
+ .catch((e: Error) => {
+ console.log(e)
+ })
+ }
+
+ const createItemMenu = (value: boolean): void => {
+ alert('crea item menu')
+ }
+
+ const CloseModalItemMenu = (show: boolean): void => {
+ setDialogNewItemMenu(false)
+ }
+
+ return (
+ <>
+
+ {
+ addItemMenu(props.item.id, e)
+ }}
+ />
+
+
+ {props.item.descripcion}
+ {
+ setItemMenu(props.item.id)
+ setDialogNewItemMenu(true)
+ }}
+ >
+ ... +
+
+
+
+
+
+ >
+ )
+}
+
+export const AdmonPerfiles: React.FC = (props) => {
+ const [sDialog, setsDialog] = React.useState(true)
+ const [DialogNewProfile, setDialogNewProfile] = React.useState(false)
+ const [Menu, setMenu] = React.useState()
+ const [IdPerfil, setIdPerfil] = React.useState(0)
+ const [Perfiles, setPerfiles] = React.useState()
+ useEffect(() => {
+ perfilesMenuServices
+ .getAllPerfiles()
+ .then((response) => {
+ setPerfiles(response.data)
+ console.log(response.data)
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+ loadPerfil(0)
+ }, [props.show])
+
+ function loadPerfil(id: number) {
+ setMenu([])
+ perfilesMenuServices
+ .getPerfilMenuById(id)
+ .then((response) => {
+ setMenu(response.data)
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+ }
+
+ const createProfile = (value: boolean): void => {
+ alert('crea nuevo perfil')
+ }
+
+ const CloseModalPerfiles = (show: boolean): void => {
+ setDialogNewProfile(false)
+ }
+
+ const onChangePerfil = (e: any): void => {
+ setIdPerfil(e.currentTarget.value)
+ loadPerfil(e.currentTarget.value)
+ }
+
+ return props.show ? (
+ <>
+
+
+
+
+
Administrador de perfiles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+ Menu
+
+ {Menu?.map((item, index) =>
+ item.padreId === 0 ? (
+
+ ) : (
+ ''
+ )
+ )}
+
+
+
+
+
+
+
+
+
+
+ >
+ ) : null
+}
diff --git a/src/Components/Register/admonPerfiles/nuevoItemMenu/NuevoItemMenu.tsx b/src/Components/Register/admonPerfiles/nuevoItemMenu/NuevoItemMenu.tsx
new file mode 100644
index 0000000..aadcc9c
--- /dev/null
+++ b/src/Components/Register/admonPerfiles/nuevoItemMenu/NuevoItemMenu.tsx
@@ -0,0 +1,193 @@
+import React, { FC, useEffect } from 'react'
+import { Button, Modal, Toast, ToastContainer } from 'react-bootstrap'
+import { propTypes } from 'react-bootstrap/esm/Image'
+import { IPerfil } from '../../../../Interfaces/Catalogos/IPerfiles'
+import perfilesMenuServices from '../../../../Services/Catalogos/PerfilesMenu.Services'
+import DTOPerfilCreate from '../../../../DTO/DTOPerfilCreate'
+import IPerfilesMenu from '../../../../Interfaces/IPerfilesMenu'
+import IItemMenu from '../../../../Interfaces/Catalogos/IItemMenu'
+
+interface IProps {
+ show: boolean
+ ItemMenu: number
+ CloseModalPerfiles: (arg: boolean) => void
+}
+
+export const NuevoItemMenu: FC = (props) => {
+ const [ItemMenu, setItemMenu] = React.useState(props.ItemMenu)
+ const [descripcion, setDescripcion] = React.useState('')
+ const [posicion, setPosicion] = React.useState(1)
+ const [url, setUrl] = React.useState('')
+ const [MenuItems, setMenuItems] = React.useState()
+ const [msgError, setMsgError] = React.useState('')
+ const [msgDialog, setMsgDialog] = React.useState(false)
+
+ useEffect(() => {
+ console.log('props=' + JSON.stringify(props))
+ }, [props])
+
+ useEffect(() => {
+ perfilesMenuServices
+ .getMenu()
+ .then((response) => {
+ setMenuItems(response.data)
+ console.log(response.data)
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+ setItemMenu(props.ItemMenu)
+ }, [props.show])
+
+ function validatePerfil() {
+ var msg = 'Proporcione: '
+ if (!descripcion.length) msg += 'la descripcion / '
+ if (!url.length) msg += 'la URL'
+ if (msg != 'Proporcione: ') {
+ setMsgError(msg)
+ setMsgDialog(true)
+ }
+ const data: IItemMenu = {
+ id: 0,
+ padreId: ItemMenu,
+ posicion: posicion,
+ descripcion: descripcion,
+ url: url,
+ }
+
+ perfilesMenuServices
+ .createItemMenu(data)
+ .then((response) => {
+ if (response.status == 200)
+ alert('El item de menu se creo existosamente!')
+ console.log(response.data)
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+ console.log(ItemMenu + ' ' + descripcion + ' ' + posicion + ' ' + url)
+ }
+
+ const onChangeItem = (e: any): void => {
+ //value: number = e.currentTarget.value;
+ setItemMenu(e.currentTarget.value)
+ }
+
+ return (
+
+
+ Nuevo item de menu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setMsgDialog(false)}
+ show={msgDialog}
+ delay={3000}
+ bg='dark'
+ autohide
+ >
+
+ Error!
+
+
+ {msgError}
+
+
+
+
+ )
+}
diff --git a/src/Components/Register/admonPerfiles/nuevoPerfil/NuevoPerfil.tsx b/src/Components/Register/admonPerfiles/nuevoPerfil/NuevoPerfil.tsx
new file mode 100644
index 0000000..a7e17ba
--- /dev/null
+++ b/src/Components/Register/admonPerfiles/nuevoPerfil/NuevoPerfil.tsx
@@ -0,0 +1,125 @@
+import React, { FC, useEffect } from 'react'
+import { Button, Modal } from 'react-bootstrap'
+import { propTypes } from 'react-bootstrap/esm/Image'
+import { IPerfil } from '../../../../Interfaces/Catalogos/IPerfiles'
+import perfilesMenuServices from '../../../../Services/Catalogos/PerfilesMenu.Services'
+import DTOPerfilCreate from '../../../../DTO/DTOPerfilCreate'
+
+interface IProps {
+ show: boolean
+ CloseModalPerfiles: (arg: boolean) => void
+ createProfile: (value: true) => void
+}
+
+export const NuevoPerfil: FC = (props) => {
+ const [IdPerfil, setIdPerfil] = React.useState(0)
+ const [nombrePerfil, setnombrePerfil] = React.useState('')
+ const [Perfiles, setPerfiles] = React.useState()
+ useEffect(() => {
+ perfilesMenuServices
+ .getAllPerfiles()
+ .then((response) => {
+ setPerfiles(response.data)
+ console.log(response.data)
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+ }, [props.show])
+
+ function validatePerfil() {
+ if (!nombrePerfil.length) alert('Proporcione el nombre del perfil')
+ const data: DTOPerfilCreate = {
+ Perfil: nombrePerfil,
+ IdPerfilClonado: IdPerfil,
+ }
+ perfilesMenuServices
+ .createPerfil(data)
+ .then((response) => {
+ if (response.status == 200) alert('El perfil se creo existosamente')
+ console.log(response.data)
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+ }
+
+ const onChangePerfil = (e: any): void => {
+ setIdPerfil(e.currentTarget.value)
+ }
+
+ return (
+
+
+ Nuevo perfil
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/Components/Register/register.tsx b/src/Components/Register/register.tsx
new file mode 100644
index 0000000..7b84739
--- /dev/null
+++ b/src/Components/Register/register.tsx
@@ -0,0 +1,1400 @@
+import * as React from 'react'
+import { Formik, Form, Field } from 'formik'
+import '../../css/generic01.css'
+import * as Yup from 'yup'
+import { IRegister } from '../../Interfaces/IRegister'
+import {
+ Accordion,
+ Button,
+ Card,
+ Form as Frm,
+ Modal,
+ Tab,
+ Table,
+ Tabs,
+ Toast,
+ ToastContainer
+} from 'react-bootstrap'
+import { useEffect, useState } from 'react'
+import IPerfilesMenu from '../../Interfaces/IPerfilesMenu'
+import { IPerfil } from '../../Interfaces/Catalogos/IPerfiles'
+import PerfilesMenuServices from '../../Services/Catalogos/PerfilesMenu.Services'
+import ClientesServices from '../../Services/Catalogos/Clientes.Services'
+import usuariosServices from '../../Services/Catalogos/Usuarios.Services'
+import MenuUsuario from '../MenuUsuario/MenuUsuario'
+import IClientes from '../../Interfaces/Catalogos/IClientes'
+import DTOUsuarioCliente from '../../DTO/DTOUsuarioCliente'
+import ITransportistas from '../../Interfaces/Catalogos/ITransportitas'
+import IProveedores from '../../Interfaces/Catalogos/IProveedores'
+import DTOasignaClienteProveedor from '../../DTO/DTOasignaClienteProveedor'
+import DTOClienteTransportista from '../../DTO/DTOClienteTransportita'
+import ITokenInfo from '../../Interfaces/ITokenInfo'
+import { UserList } from './UserList/UserList'
+import DTOUsuariosShort from '../../DTO/DTOUsuariosShort'
+import DTOClonarUsuario from '../../DTO/DTOClonarUsuario'
+import { AdmonPerfiles } from './admonPerfiles/AdmonPerfiles'
+import { Form as FormCtrl } from 'react-bootstrap'
+
+interface IProps {}
+
+const SignupSchema = Yup.object().shape({
+ usuario: Yup.string()
+ .min(6, 'Usuario demasiado corto')
+ .max(50, 'Usuario demasiado largo')
+ .required('Requerido'),
+ nombre: Yup.string()
+ .min(6, 'Nombre de usuario demasiado corto')
+ .max(100, 'Nombre de usuario demasiado largo')
+ .required('Requerido'),
+ contrasena: Yup.string()
+ .min(6, 'Contraseña demasiado corta')
+ .max(50, 'Contraseña demasiado larga'),
+ correo: Yup.string().email('Correo invalido').required('Requirido')
+})
+
+export default function Register(props:IProps) {
+ const [UserId, setUserId] = useState(() => {
+ const stickyValue = window.localStorage.getItem('UserId')
+ return stickyValue !== null ? JSON.parse(stickyValue) : 0
+ })
+ const [showDialog, setShowDialog] = React.useState(false)
+ const [modalUserList, setModalUserList] = React.useState(false)
+ const [modalAdmonPerfiles, setmodalAdmonPerfiles] = React.useState(false)
+ const [msgDialog, setmsgDialog] = React.useState('')
+ const [Asignaciones, setAsignacion] = useState(false)
+ const [IdUsuario, setIdUsuario] = useState(0)
+ const [Usuario, setUsuario] = useState('')
+ const [Nombre, setNombre] = useState('')
+ const [Contrasena, setContrasena] = useState('')
+ const [Correo, setCorreo] = useState('')
+ const [TipoUsuario, setTipoUsuario] = useState(2)
+ const [Activo, setActivo] = useState(1)
+ const [FechaAlta, setFechaAlta] = useState('')
+ const [UsuarioAlta, setUsuarioAlta] = useState(0)
+ const [FechaModifico, setFechaModifico] = useState('')
+ const [UsuarioModifico, setUsuarioModifico] = useState(0)
+ const [FechaElimino, setFechaElimino] = useState('')
+ const [UsuarioElimino, setUsuarioElimino] = useState(0)
+ const [MotivoElimino, setMotivoelimino] = useState('')
+ const [IdModulo, setIdModulo] = useState(0)
+ const [Dept, setDept] = useState(0)
+ const [TMercancia, setTMercancia] = useState(0)
+ const [FechaUltimaVisita, setFechaUltimaVisita] = useState('')
+ const [Visitas, setVisitas] = useState(0)
+ const [Internos, setInternos] = useState(0)
+ const [PermisoEspecial, setPermisoEspecial] = useState(0)
+ const [EstadoConfiguracion, setEstadoConfiguracion] = useState(0)
+ const [FechaValidacionConf, setFechaValidacionConf] = useState('')
+ const [RealizoEncuesta, setRealizoEncuesta] = useState('')
+ const [EncuestaActiva, setEncuestaActiva] = useState(0)
+ const [FechaLimiteEncuesta, setFechaLimiteEnuesta] = useState('')
+ const [CodigoAccesoM, setCodigoAccesoM] = useState('')
+ const [TokenAccesoM, setTokenAccesoM] = useState('')
+ const [DeviceToken, setDeviceToken] = useState('')
+ const [IdPerfil, setIdPerfil] = useState(0)
+ const [user2Clone, setUser2Clone] = React.useState(0)
+ const [perfiles, setPerfiles] = useState([
+ {
+ id: 0,
+ perfil: '-SELECCIONE-'
+ }
+ ])
+ const [clientes, setClientes] = useState([])
+ const [transportistas, setTransportistas] = useState([])
+ const [proveedores, setProveedores] = useState([])
+ const [comboUsuarios, setcomboUsuarios] = useState([])
+ const [toastPerfil, setToastPerfil] = useState(false)
+ const [UsuariosPerfilesMenu, setUsuariosPerfilesMenu] =
+ useState()
+ const [perfilActual, setPerfilActual] = useState()
+ const [showConfirmation, setShowConfirmation] = useState(false)
+ const [usuarioDestino, setUsuarioDestino] = useState('')
+ const [Search, setSearch] = useState('')
+ var initialValues: IRegister = {
+ id: IdUsuario,
+ usuario: Usuario,
+ nombre: Nombre,
+ contrasena: Contrasena,
+ correo: Correo,
+ tipoUsuario: TipoUsuario,
+ activo: Activo,
+ fechaAlta: currentDate(),
+ usuarioAlta: IdUsuario,
+ fechaModifico: currentDate(),
+ usuarioModifico: UsuarioModifico,
+ fechaElimino: FechaElimino,
+ usuarioElimino: 0,
+ motivoElimino: MotivoElimino,
+ idModulo: IdModulo,
+ dept: Dept,
+ tmercancia: TMercancia,
+ fechaUltimaVisita: FechaUltimaVisita,
+ visitas: Visitas,
+ internos: Internos,
+ permisoEspecial: PermisoEspecial,
+ estadoConfiguracion: EstadoConfiguracion,
+ fechaValidacionConf: FechaValidacionConf,
+ realizoEncuesta: RealizoEncuesta,
+ encuestaActiva: EncuestaActiva,
+ fechaLimiteEncuesta: FechaLimiteEncuesta,
+ codigoAccesoM: CodigoAccesoM,
+ tokenAccesoM: TokenAccesoM,
+ deviceToken: DeviceToken,
+ idPerfil: IdPerfil
+ }
+
+ const initialValuesPerfiles: IPerfil = {
+ id: IdPerfil,
+ perfil: ''
+ }
+
+ function getUsuario() {
+ const item = localStorage.getItem('tokenInfo')
+ let Usr = ''
+ if (item) {
+ const registro: ITokenInfo = JSON.parse(item)
+ Usr = registro.Usuario
+ }
+ return Usr
+ }
+
+ useEffect(() => {
+ if (!isNaN(IdUsuario)) {
+ PerfilesMenuServices.getAllPerfilesMenu()
+ .then((response) => {
+ setUsuariosPerfilesMenu(response.data)
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+ }
+ }, [])
+
+ useEffect(() => {
+ if (!isNaN(IdUsuario)) {
+ PerfilesMenuServices.getAllPerfiles()
+ .then((response) => {
+ setPerfiles(response.data)
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+ }
+ }, [])
+
+ useEffect(() => {
+ usuariosServices
+ .getAllUsuariosShort()
+ .then((response) => {
+ setcomboUsuarios(response.data)
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+ }, [])
+
+ useEffect(() => {
+ if (IdUsuario > 0) {
+ ClientesServices.getUsuariosAsignados(IdUsuario)
+ .then((response) => {
+ console.log(
+ '.........................................................' +
+ IdUsuario +
+ ' ' +
+ JSON.stringify(response.data)
+ )
+ setClientes(response.data)
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+
+ PerfilesMenuServices.getAllTransportitas(IdUsuario)
+ .then((response) => {
+ setTransportistas(response.data)
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+
+ PerfilesMenuServices.getAllProveedores(IdUsuario)
+ .then((response) => {
+ setProveedores(response.data)
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+ }
+ }, [IdUsuario])
+
+ const handleSelect = (e: any) => {
+ console.log(e)
+ setPerfiles(e)
+ }
+
+ function currentDate(): string {
+ var today = new Date()
+ var dd = String(today.getDate()).padStart(2, '0')
+ var mm = String(today.getMonth() + 1).padStart(2, '0') //January is 0!
+ var yyyy = today.getFullYear()
+ return mm + '/' + dd + '/' + yyyy
+ }
+
+ const validateForm = (values: IRegister) => {
+ const errors = { usuario: '', nombre: '', contrasena: '', correo: '' }
+ if (!values.usuario) {
+ errors.usuario = 'Campo Usuario es requerido'
+ } else if (values.usuario.length > 50) {
+ errors.usuario = 'Debe contener 50 caracteres o menos'
+ }
+ if (!values.nombre) {
+ errors.nombre = 'Campo Nombre es requerido'
+ } else if (values.nombre.length > 100) {
+ errors.nombre = 'Debe contener 100 caracteres o menos'
+ }
+ if (!values.correo) {
+ errors.correo = 'Campo correo es requerido'
+ } else if (
+ !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(values.correo)
+ ) {
+ errors.correo = 'Correo invalido'
+ }
+ console.log(errors)
+ return errors
+ }
+
+ function asignaPerfil() {}
+
+ function toggleShowPerfil() {
+ setToastPerfil(!toastPerfil)
+ }
+
+ function construyePerfil(values: IPerfil) {
+ if (UsuariosPerfilesMenu) {
+ console.log(UsuariosPerfilesMenu)
+ var opcionesPerfil = UsuariosPerfilesMenu.filter(function (el) {
+ return el.idPerfil == values.id
+ })
+ setPerfilActual(opcionesPerfil)
+ }
+ }
+
+ async function addCliente(id: number, e: any) {
+ const asignacionUsuarioCliente: DTOUsuarioCliente = {
+ sClave: id,
+ IdUsuario: IdUsuario,
+ agregar: e.currentTarget.checked
+ }
+ ClientesServices.create(asignacionUsuarioCliente)
+ .then((response) => {
+ loadProveedores()
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+ }
+
+ async function asignaClienteProveedor(
+ sClaveCliente: string,
+ sClave: string,
+ e: any
+ ) {
+ const data: DTOasignaClienteProveedor = {
+ IdUsuario: IdUsuario,
+ sClaveCliente: sClaveCliente,
+ sClave: sClave,
+ asignado: e.currentTarget.checked
+ }
+ console.log('data= ' + JSON.stringify(data))
+ ClientesServices.asignaClienteProveedor(data)
+ .then((response) => {
+ console.log('Asignacion ' + JSON.stringify(response))
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+ }
+
+ async function asignaClienteTransportista(sClave: string, e: any) {
+ const data: DTOClienteTransportista = {
+ IdUsuario: IdUsuario,
+ sClave: sClave,
+ asignado: e.currentTarget.checked
+ }
+ ClientesServices.asignaClienteTransportista(data)
+ .then((response) => {
+ console.log('Asignacion ' + JSON.stringify(response))
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+ }
+
+ function loadProveedores() {
+ console.log('Entro a cargar proveedores ')
+ PerfilesMenuServices.getAllProveedores(1)
+ .then((response) => {
+ setProveedores(response.data)
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+ }
+
+ function createUser(data: IRegister) {
+ usuariosServices
+ .create(data)
+ .then((response) => {
+ // console.log(JSON.stringify(response));
+ if (response.status === 200) {
+ setmsgDialog('El usuario ha sido guardado existosamente')
+ setShowDialog(true)
+ }
+ })
+ .catch((e: Error) => {
+ // console.log(e);
+ setmsgDialog('Ocurrio un error: ' + e)
+ setShowDialog(true)
+ })
+ }
+
+ const CloseModal = (show: boolean): void => {
+ setModalUserList(false)
+ }
+
+ const CloseModalAP = (show: boolean): void => {
+ setmodalAdmonPerfiles(false)
+ }
+
+ const CloseModalPerfiles = (show: boolean): void => {
+ //setmodalAdmonPerfiles(false);
+ }
+
+ function loadAllUserInfo(id: number) {}
+
+ const GetUserInfo = (data: IRegister): void => {
+ console.log('data from get usuario '+JSON.stringify(data))
+ setIdUsuario(data.id)
+ setUsuario(data.usuario)
+ setNombre(data.nombre)
+ setContrasena(data.contrasena)
+ setCorreo(data.correo)
+ setIdPerfil(data.idPerfil)
+ loadAllUserInfo(data.id)
+ }
+
+ const clonaInformacion = (): void => {
+ // alert(IdPerfil)
+ if (IdPerfil == 0) {
+ setToastPerfil(true)
+ setmsgDialog('')
+ return
+ } else
+ setShowConfirmation(true)
+ }
+
+ const ChangeUser2Clone = (e: any): void => {
+ setUser2Clone(e.target.value)
+ const usr = comboUsuarios.filter((item) => item.id == e.target.value)
+ setUsuarioDestino(usr[0].usuario)
+ }
+
+ const handleClose = () => setShowConfirmation(false)
+
+ const procedeClonacion = () => {
+ const data: DTOClonarUsuario = {
+ idUsuarioOrigen: IdUsuario,
+ idUsuarioDestino: user2Clone
+ }
+ usuariosServices
+ .clonarUsuario(data)
+ .then((response) => {
+ if (response.status == 200) {
+ setToastPerfil(true)
+ setmsgDialog('Usuario clonado existosamente')
+ }
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ })
+ setShowConfirmation(false)
+ }
+
+ const onChangePerfil = (e: any): void => {
+ setIdPerfil(e.currentTarget.value)
+ }
+
+ return (
+
+
+
+
+
+ {
+ console.log(values, actions)
+ createUser(values)
+ }}
+ // validate={validateForm}
+ >
+ {(formik) => {
+ const {
+ errors,
+ touched,
+ isValid,
+ dirty,
+ values,
+ handleSubmit
+ } = formik
+ return (
+
+ )
+ }}
+
+
+
+
+
+
+
+ Roles
+
+
+
+ Other stuff
+
+
+
+
+
+
+
+
0 ? {} : { display: 'none' }}>
+
+
+
+
+
+
Perfiles
+
+
+
{
+ console.log({ values, actions })
+ construyePerfil(values)
+ actions.setSubmitting(false)
+ }}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ setSearch(e.target.value)
+ }}
+ />
+
+
+
+
+
+
+
+ Error!
+
+
+ Seleccione un perfil, para poder continuar...
+
+
+
+
+
+
+
+
+ setShowDialog(false)}
+ show={showDialog}
+ delay={3000}
+ bg="dark"
+ autohide
+ >
+
+ Informacion
+
+
+ {msgDialog}
+
+
+
+
+
+ Favor de confirmar
+
+
+ ¿Esta seguro de que desea clonar la informacion de :
[ {Usuario}{' '}
+ ] para ... [ {usuarioDestino} ] ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/Components/Reportes/RptCorresponsalesTraficos.tsx b/src/Components/Reportes/RptCorresponsalesTraficos.tsx
new file mode 100644
index 0000000..eb6a3cc
--- /dev/null
+++ b/src/Components/Reportes/RptCorresponsalesTraficos.tsx
@@ -0,0 +1,525 @@
+import { RowClickedEvent } from 'ag-grid-community'
+import { AgGridReact } from 'ag-grid-react'
+import React, { FC, useEffect, useState } from 'react'
+import { Button, Card, Form, Modal } from 'react-bootstrap'
+import ICorresponsalTrafico from '../../Interfaces/Corresponsales/ICorresponsalTrafico'
+import ClientesDataService from '../../Services/Catalogos/Clientes.Services'
+import { MsgInformativo } from '../Utils/Toast/msgInformativo'
+import IClientes from '../../Interfaces/Catalogos/IClientes'
+import { BsPlusLg, BsFileEarmarkExcel, BsSearch, BsFillXCircleFill, BsCheckCircleFill } from 'react-icons/bs'
+import * as XLSX from 'xlsx'
+import TraficoCorresponsales from '../Corresponsales/TraficoCorresponsales'
+import ICatCorresponsales from '../../Interfaces/Catalogos/ICatCorresponsales'
+import CorresponsalesDataService from '../../Services/Catalogos/Corresponsales.Services'
+import reportesServices from '../../Services/Reportes/reportes.services'
+import moment from 'moment'
+import DTORptCorresponsalesTraficos from '../../DTO/Corresponsales/DTORptCorresponsalesTraficos'
+import { InitCorresponsalesFacturas } from '../../store/features/Corresponsales/CorresponsalesFacturasSlice'
+import { InitCorresponsalesFacturasTerceros } from '../../store/features/Corresponsales/CorresponsalesFacturasTercerosSlice'
+import { InitCorresponsalesContenedores } from '../../store/features/Corresponsales/CorresponsalesContenedoresSlice'
+import { useDispatch } from 'react-redux'
+import { IconContext } from 'react-icons'
+import { ProgressBar } from './customCells/progressBar'
+import { useParams } from 'react-router-dom'
+import { FaHandSparkles } from 'react-icons/fa'
+
+interface IProps {}
+
+export default function RptCorresponsalesTraficos (props: IProps) {
+ const { proc, modo } = useParams()
+ const [UserId, setUserId] = useState(() => {
+ const stickyValue = window.localStorage.getItem('UserId')
+ return stickyValue !== null ? JSON.parse(stickyValue) : 0
+ })
+ const [Depto, setDepto] = useState(() => {
+ const stickyValue = window.localStorage.getItem('Departamento')
+ return stickyValue !== null ? JSON.parse(stickyValue) : ''
+ })
+ const queryParams = new URLSearchParams(window.location.search)
+ const status = queryParams.get('status')
+ const [StatusAnticipos, setStatusAnticipos] = useState(status ? parseInt(status) : 0)
+ const dispatch = useDispatch()
+ const [IDTrafico, setIDTrafico] = useState(0)
+ const [Data, setData] = useState([])
+ const [filteredData, setFilteredData] = useState([])
+ const [show, setShowMsg] = useState(false)
+ const [ShowModal, setShowModal] = useState(false)
+ const [header, setHeader] = useState('')
+ const [msg, setMsg] = useState('')
+ const [Inicio, setInicio] = useState(currentDate(-365))
+ const [Fin, setFin] = useState(currentDate(0))
+ const [TipoOperacion, setTipoOperacion] = useState(0)
+ const [Cliente, setCliente] = useState(0)
+ const [Corresponsal, setCorresponsal] = useState(0)
+ const [Clientes, setClientes] = useState>()
+ const [filtro, setFiltro] = useState('')
+ const gridRef = React.useRef(null)
+ const [DataCorresponsales, setDataCorresponsales] = useState([])
+ const [columnDefs] = useState([
+ { field: 'id', headerName: 'id', width: 70, sortable: true, filter: true },
+ {
+ field: 'proceso',
+ headerName: 'Status',
+ width: 90,
+ center: true,
+ sortable: true,
+ filter: true,
+ cellRenderer: ProgressBar,
+ },
+ {
+ field: 'folio',
+ headerName: 'Trafico',
+ width: 140,
+ sortable: true,
+ filter: true,
+ cellRenderer: (params: any) => {
+ return params.data.folio
+ },
+ },
+ {
+ field: 'fechaRegistro',
+ sortable: true,
+ filter: true,
+ cellRenderer: (params: any) => {
+ return params.value.substring(0, 10)
+ },
+ },
+ { field: 'sUsuario', headerName: 'Usuario', sortable: true, filter: true },
+ {
+ field: 'sCliente',
+ headerName: 'Cliente',
+ sortable: true,
+ filter: true,
+ },
+ { field: 'sTipoOperacion', headerName: 'Tipo operacion', sortable: true, filter: true },
+ { field: 'sOpEntrada', headerName: 'Op Entrada', sortable: true, filter: true },
+ { field: 'sOpSalida', headerName: 'Op Salida', sortable: true, filter: true },
+ { field: 'sCorresponsal', headerName: 'Corresponsal', sortable: true, filter: true },
+ { field: 'patente', sortable: true, filter: true },
+ { field: 'aduana', sortable: true, filter: true },
+ { field: 'pedimento', sortable: true, filter: true },
+ {
+ field: 'fechaPago',
+ sortable: true,
+ filter: true,
+ cellRenderer: (params: any) => {
+ if (params.value) return params.value.substring(0, 10)
+ else return ''
+ },
+ },
+ {
+ field: 'fechaDesaduanamiento',
+ sortable: true,
+ filter: true,
+ cellRenderer: (params: any) => {
+ if (params.value) return params.value.substring(0, 10)
+ else return ''
+ },
+ },
+ {
+ field: 'zipgemco',
+ headerName: 'Zip GEMCO',
+ sortable: true,
+ filter: true,
+ cellRenderer: (params: any) => {
+ if (params.value === 'No')
+ return (
+
+
+
+
+
+ )
+ else
+ return (
+
+
+
+
+
+ )
+ },
+ },
+ {
+ field: 'zipCorresponsal',
+ headerName: 'Zip Corresponsal',
+ sortable: true,
+ filter: true,
+ cellRenderer: (params: any) => {
+ if (params.value === 'No')
+ return (
+
+
+
+
+
+ )
+ else
+ return (
+
+
+
+
+
+ )
+ },
+ },
+ { field: 'ultimaActualizacion', sortable: true, filter: true },
+ ])
+ const [msgColor, setMsgColor] = useState('primary')
+
+ function ConvertHexToString(str: string) {
+ return unescape(str.replace(/\\/g, '%'))
+ }
+
+ function currentDate(days: number): string {
+ var today = new Date()
+ today.setDate(today.getDate() + days)
+ var dd = String(today.getDate()).padStart(2, '0')
+ var mm = String(today.getMonth() + 1).padStart(2, '0')
+ var yyyy = today.getFullYear()
+ return yyyy + '-' + mm + '-' + dd
+ }
+
+/* useEffect(() => {
+ if (proc && modo) {
+ if (status) {
+ setStatusAnticipos(parseInt(status))
+ } else setStatusAnticipos(0)
+ const data: DTORptCorresponsalesTraficos = {
+ Inicio: '',
+ Fin: '',
+ TipoOperacion: 0,
+ NoCliente: 0,
+ IdCorresponsal: Corresponsal,
+ Proceso: proc ? parseInt(proc.replace('proc=','')) : 0,
+ Modo: modo ? parseInt(modo.replace('modo=','')) : 0,
+ }
+ reportesServices
+ .getRptCorresponsalesTraficos(data)
+ .then((response) => {
+ setData(response.data)
+ setFilteredData(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+ }, [proc, modo]) */
+
+ useEffect(() => {
+ ClientesDataService.getAllClientes(UserId)
+ .then((response) => {
+ setClientes(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+
+ CorresponsalesDataService.getAll()
+ .then((response) => {
+ setDataCorresponsales(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ generaReporte()
+ }, [])
+
+ function getParams(e: RowClickedEvent) {
+ AbreTrafico(e.data.id)
+ }
+
+ function AbreTrafico(id: number) {
+ dispatch(InitCorresponsalesFacturas(IDTrafico))
+ dispatch(InitCorresponsalesFacturasTerceros(IDTrafico))
+ dispatch(InitCorresponsalesContenedores(IDTrafico))
+ setIDTrafico(id)
+ setShowModal(true)
+ }
+
+ const generaReporte = () => {
+ if (proc && modo) {
+ const data: DTORptCorresponsalesTraficos = {
+ Inicio: moment(Inicio).format('YYYY-MM-DD'),
+ Fin: moment(Fin).format('YYYY-MM-DD'),
+ TipoOperacion: TipoOperacion,
+ NoCliente: Cliente,
+ IdCorresponsal: Corresponsal,
+ Proceso: proc ? parseInt(proc.replace('proc=','')) : 0,
+ Modo: modo ? parseInt(modo.replace('modo=','')) : 0,
+ }
+ reportesServices
+ .getRptCorresponsalesTraficos(data)
+ .then((response) => {
+ setData(response.data)
+ setFilteredData(response.data)
+ console.log(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+ }
+
+ const filtraReporte = (e: any) => {
+ setFiltro(e.target.value)
+ gridRef.current.api.setQuickFilter(e.target.value)
+ }
+
+ const downloadExcel = () => {
+ exportExcel(Data, 'Traficos de corresponsales')
+ }
+
+ function exportExcel(jsonData: any[], fileName: string): void {
+ let Heading = [
+ [
+ { title: 'Aduana Seccion Despacho', style: { font: { sz: '18', bold: true } } },
+ 'Patente',
+ 'Referencia',
+ 'Pedimento',
+ 'Fecha Pago',
+ 'Fecha Entrada Presentacion',
+ 'Clave Docto',
+ 'Es rectificacion',
+ 'Tipo Cambio',
+ 'Valor Dls',
+ 'Valor Aduana',
+ 'Numero Factura',
+ 'Fecha Factura',
+ 'Proveedor Factura',
+ 'Incrementables Fact',
+ 'Fraccion',
+ 'Subdiv NICO',
+ 'Descripcion',
+ 'Pais Origen',
+ 'Pais Vendedor',
+ 'Tasa DTA',
+ 'Tasa IGI',
+ 'Numero Parte',
+ 'Cantidad Comercial',
+ 'TL Pais',
+ 'Tipo Tasa',
+ 'Unidad Comercial',
+ 'Valor Factura Item',
+ 'Valor Comercial Ped',
+ 'Valor Factura Item MN',
+ ],
+ ]
+ const wb = XLSX.utils.book_new()
+ const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet([])
+ XLSX.utils.sheet_add_aoa(ws, Heading)
+ XLSX.utils.sheet_add_json(ws, jsonData, { origin: 'A2', skipHeader: true })
+ XLSX.utils.book_append_sheet(wb, ws, 'Sheet1')
+
+ XLSX.writeFile(wb, fileName + '.xlsx')
+ var range = XLSX.utils.decode_range(ws['!ref?'])
+ for (var C = range.s.c; C <= range.e.c; ++C) {
+ var address = XLSX.utils.encode_col(C) + '1' // <-- first row, column number C
+ if (!ws[address]) continue
+ ws[address].v = ws[address].v.toUpperCase()
+ }
+ }
+
+ return (
+
+
+
+
+
+
setInicio(e.target.value)}
+ size='sm'
+ />
+
+
+
setFin(e.target.value)}
+ size='sm'
+ />
+
+
+
Tipo oper
+
+
+
setTipoOperacion(parseInt(e.target.value))}
+ className='form-select form-select-sm'
+ >
+
+
+
+
+
+
+
Cliente
+
+
+
{
+ setCliente(parseInt(e.target.value))
+ }}
+ className='form-select form-select-sm'
+ >
+
+ {Clientes
+ ? Clientes.map((c) => {
+ return (
+
+ )
+ })
+ : null}
+
+
+
+
+
+
+
+
+ {Depto === 'Corresponsalias' ? (
+
+ ) : (
+ ''
+ )}
+
+
+
{
+ filtraReporte(e)
+ }}
+ />
+
+
+
+
+
Corresponsal
+
+
{
+ setCorresponsal(parseInt(e.target.value))
+ }}
+ className='form-select form-select-sm'
+ >
+
+ {DataCorresponsales
+ ? DataCorresponsales.map((c) => {
+ return (
+
+ )
+ })
+ : null}
+
+
+
+
+
+
+
+
+
{
+ setShowMsg(false)
+ }}
+ />
+ setShowModal(false)} */
+ size='sm'
+ dialogClassName='modal-90w modal-innerDiv'
+ disableEscapeKeyDown={true}
+ >
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/Components/Reportes/RptCorresponsalesTraficosHst.tsx b/src/Components/Reportes/RptCorresponsalesTraficosHst.tsx
new file mode 100644
index 0000000..13c6396
--- /dev/null
+++ b/src/Components/Reportes/RptCorresponsalesTraficosHst.tsx
@@ -0,0 +1,519 @@
+import { RowClickedEvent } from 'ag-grid-community'
+import { AgGridReact } from 'ag-grid-react'
+import React, { FC, useEffect, useState } from 'react'
+import { Button, Card, Form, Modal } from 'react-bootstrap'
+import ICorresponsalTrafico from '../../Interfaces/Corresponsales/ICorresponsalTrafico'
+import ClientesDataService from '../../Services/Catalogos/Clientes.Services'
+import { MsgInformativo } from '../Utils/Toast/msgInformativo'
+import IClientes from '../../Interfaces/Catalogos/IClientes'
+import { BsPlusLg, BsFileEarmarkExcel, BsSearch, BsFillXCircleFill, BsCheckCircleFill } from 'react-icons/bs'
+import * as XLSX from 'xlsx'
+import TraficoCorresponsales from '../Corresponsales/TraficoCorresponsales'
+import ICatCorresponsales from '../../Interfaces/Catalogos/ICatCorresponsales'
+import CorresponsalesDataService from '../../Services/Catalogos/Corresponsales.Services'
+import reportesServices from '../../Services/Reportes/reportes.services'
+import moment from 'moment'
+import DTORptCorresponsalesTraficos from '../../DTO/Corresponsales/DTORptCorresponsalesTraficos'
+import { InitCorresponsalesFacturas } from '../../store/features/Corresponsales/CorresponsalesFacturasSlice'
+import { InitCorresponsalesFacturasTerceros } from '../../store/features/Corresponsales/CorresponsalesFacturasTercerosSlice'
+import { InitCorresponsalesContenedores } from '../../store/features/Corresponsales/CorresponsalesContenedoresSlice'
+import { useDispatch } from 'react-redux'
+import { IconContext } from 'react-icons'
+import { ProgressBar } from './customCells/progressBar'
+import { ProcessStatus } from './customCells/ProcessStatus'
+
+interface IProps {}
+
+export default function RptCorresponsalesTraficosHst (props: IProps) {
+ const [UserId, setUserId] = useState(() => {
+ const stickyValue = window.localStorage.getItem('UserId')
+ return stickyValue !== null ? JSON.parse(stickyValue) : 0
+ })
+ const [Depto, setDepto] = useState(() => {
+ const stickyValue = window.localStorage.getItem('Departamento')
+ return stickyValue !== null ? JSON.parse(stickyValue) : ''
+ })
+ const queryParams = new URLSearchParams(window.location.search)
+ const proc = queryParams.get('proc')
+ const status = queryParams.get('status')
+ const Modo = queryParams.get('Modo')
+ //const [Mode, setMode] = useState(parseInt(window.location.search.replace('?proc=', '0')))
+ const [StatusAnticipos, setStatusAnticipos] = useState(status ? parseInt(status) : 0)
+ const dispatch = useDispatch()
+ const [IDTrafico, setIDTrafico] = useState(0)
+ const [Data, setData] = useState([])
+ const [filteredData, setFilteredData] = useState([])
+ const [show, setShowMsg] = useState(false)
+ const [ShowModal, setShowModal] = useState(false)
+ const [header, setHeader] = useState('')
+ const [msg, setMsg] = useState('')
+ const [Inicio, setInicio] = useState(currentDate(-365))
+ const [Fin, setFin] = useState(currentDate(0))
+ const [TipoOperacion, setTipoOperacion] = useState(0)
+ const [Cliente, setCliente] = useState(0)
+ const [Corresponsal, setCorresponsal] = useState(0)
+ const [Clientes, setClientes] = useState>()
+ const [filtro, setFiltro] = useState('')
+ const gridRef = React.useRef(null)
+ const [DataCorresponsales, setDataCorresponsales] = useState([])
+ const [columnDefs] = useState([
+ { field: 'id', headerName: 'id', width: 70, sortable: true, filter: true },
+ {
+ field: 'proceso',
+ headerName: 'Status',
+ width: 90,
+ center: true,
+ sortable: true,
+ filter: true,
+ cellRenderer: ProcessStatus,
+ },
+ {
+ field: 'folio',
+ headerName: 'Folio',
+ width: 120,
+ sortable: true,
+ filter: true,
+ cellRenderer: (params: any) => {
+ return params.data.folio
+ },
+ },
+ {
+ field: 'fechaRegistro',
+ sortable: true,
+ filter: true,
+ cellRenderer: (params: any) => {
+ return params.value.substring(0, 10)
+ },
+ },
+ { field: 'sUsuario', headerName: 'Usuario', sortable: true, filter: true },
+ {
+ field: 'sCliente',
+ headerName: 'Cliente',
+ sortable: true,
+ filter: true,
+ },
+ { field: 'sTipoOperacion', headerName: 'Tipo operacion', sortable: true, filter: true },
+ { field: 'sOpEntrada', headerName: 'Op Entrada', sortable: true, filter: true },
+ { field: 'sOpSalida', headerName: 'Op Salida', sortable: true, filter: true },
+ { field: 'sCorresponsal', headerName: 'Corresponsal', sortable: true, filter: true },
+ { field: 'patente', sortable: true, filter: true },
+ { field: 'aduana', sortable: true, filter: true },
+ { field: 'pedimento', sortable: true, filter: true },
+ {
+ field: 'fechaPago',
+ sortable: true,
+ filter: true,
+ cellRenderer: (params: any) => {
+ if (params.value) return params.value.substring(0, 10)
+ else return ''
+ },
+ },
+ {
+ field: 'fechaDesaduanamiento',
+ sortable: true,
+ filter: true,
+ cellRenderer: (params: any) => {
+ if (params.value) return params.value.substring(0, 10)
+ else return ''
+ },
+ },
+ {
+ field: 'zipgemco',
+ headerName: 'Zip GEMCO',
+ sortable: true,
+ filter: true,
+ cellRenderer: (params: any) => {
+ if (params.value === 'No')
+ return (
+
+
+
+
+
+ )
+ else
+ return (
+
+
+
+
+
+ )
+ },
+ },
+ {
+ field: 'zipCorresponsal',
+ headerName: 'Zip Corresponsal',
+ sortable: true,
+ filter: true,
+ cellRenderer: (params: any) => {
+ if (params.value === 'No')
+ return (
+
+
+
+
+
+ )
+ else
+ return (
+
+
+
+
+
+ )
+ },
+ },
+ { field: 'ultimaActualizacion', sortable: true, filter: true },
+ ])
+ const [msgColor, setMsgColor] = useState('primary')
+
+ function ConvertHexToString(str: string) {
+ return unescape(str.replace(/\\/g, '%'))
+ }
+
+ function currentDate(days: number): string {
+ var today = new Date()
+ today.setDate(today.getDate() + days)
+ var dd = String(today.getDate()).padStart(2, '0')
+ var mm = String(today.getMonth() + 1).padStart(2, '0')
+ var yyyy = today.getFullYear()
+ return yyyy + '-' + mm + '-' + dd
+ }
+
+ useEffect(() => {
+ // if (proc) setMode(parseInt(proc))
+ if (status) {
+ setStatusAnticipos(parseInt(status))
+ } else setStatusAnticipos(0)
+ const data: DTORptCorresponsalesTraficos = {
+ Inicio: '',
+ Fin: '',
+ TipoOperacion: 0,
+ NoCliente: 0,
+ IdCorresponsal: Corresponsal,
+ Proceso: proc ? parseInt(proc) : 0,
+ Modo: Modo ? parseInt(Modo) : 0,
+ }
+ reportesServices
+ .getRptCorresponsalesTraficos(data)
+ .then((response) => {
+ setData(response.data)
+ setFilteredData(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }, [proc, status])
+
+ useEffect(() => {
+ ClientesDataService.getAllClientes(UserId)
+ .then((response) => {
+ setClientes(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+
+ CorresponsalesDataService.getAll()
+ .then((response) => {
+ setDataCorresponsales(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }, [])
+
+ function getParams(e: RowClickedEvent) {
+ AbreTrafico(e.data.id)
+ }
+
+ function AbreTrafico(id: number) {
+ dispatch(InitCorresponsalesFacturas(IDTrafico))
+ dispatch(InitCorresponsalesFacturasTerceros(IDTrafico))
+ dispatch(InitCorresponsalesContenedores(IDTrafico))
+ setIDTrafico(id)
+ setShowModal(true)
+ }
+
+ const generaReporte = () => {
+ const data: DTORptCorresponsalesTraficos = {
+ Inicio: moment(Inicio).format('YYYY-MM-DD'),
+ Fin: moment(Fin).format('YYYY-MM-DD'),
+ TipoOperacion: TipoOperacion,
+ NoCliente: Cliente,
+ IdCorresponsal: Corresponsal,
+ Proceso: proc ? parseInt(proc) : 0,
+ Modo: Modo ? parseInt(Modo) : 0,
+ }
+ reportesServices
+ .getRptCorresponsalesTraficos(data)
+ .then((response) => {
+ setData(response.data)
+ setFilteredData(response.data)
+ console.log(response.data)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+
+ const filtraReporte = (e: any) => {
+ setFiltro(e.target.value)
+ gridRef.current.api.setQuickFilter(e.target.value)
+ }
+
+ const downloadExcel = () => {
+ exportExcel(Data, 'Traficos de corresponsales')
+ }
+
+ function exportExcel(jsonData: any[], fileName: string): void {
+ let Heading = [
+ [
+ { title: 'Aduana Seccion Despacho', style: { font: { sz: '18', bold: true } } },
+ 'Patente',
+ 'Referencia',
+ 'Pedimento',
+ 'Fecha Pago',
+ 'Fecha Entrada Presentacion',
+ 'Clave Docto',
+ 'Es rectificacion',
+ 'Tipo Cambio',
+ 'Valor Dls',
+ 'Valor Aduana',
+ 'Numero Factura',
+ 'Fecha Factura',
+ 'Proveedor Factura',
+ 'Incrementables Fact',
+ 'Fraccion',
+ 'Subdiv NICO',
+ 'Descripcion',
+ 'Pais Origen',
+ 'Pais Vendedor',
+ 'Tasa DTA',
+ 'Tasa IGI',
+ 'Numero Parte',
+ 'Cantidad Comercial',
+ 'TL Pais',
+ 'Tipo Tasa',
+ 'Unidad Comercial',
+ 'Valor Factura Item',
+ 'Valor Comercial Ped',
+ 'Valor Factura Item MN',
+ ],
+ ]
+ const wb = XLSX.utils.book_new()
+ const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet([])
+ XLSX.utils.sheet_add_aoa(ws, Heading)
+ XLSX.utils.sheet_add_json(ws, jsonData, { origin: 'A2', skipHeader: true })
+ XLSX.utils.book_append_sheet(wb, ws, 'Sheet1')
+
+ XLSX.writeFile(wb, fileName + '.xlsx')
+ var range = XLSX.utils.decode_range(ws['!ref?'])
+ for (var C = range.s.c; C <= range.e.c; ++C) {
+ var address = XLSX.utils.encode_col(C) + '1' // <-- first row, column number C
+ if (!ws[address]) continue
+ ws[address].v = ws[address].v.toUpperCase()
+ }
+ }
+
+ return (
+
+
+
+
+
+
setInicio(e.target.value)}
+ size='sm'
+ />
+
+
+
setFin(e.target.value)}
+ size='sm'
+ />
+
+
+
Tipo oper
+
+
+
setTipoOperacion(parseInt(e.target.value))}
+ className='form-select form-select-sm'
+ >
+
+
+
+
+
+
+
Cliente
+
+
+
{
+ setCliente(parseInt(e.target.value))
+ }}
+ className='form-select form-select-sm'
+ >
+
+ {Clientes
+ ? Clientes.map((c) => {
+ return (
+
+ )
+ })
+ : null}
+
+
+
+
+
+
+
+
+ {Depto === 'Corresponsalias' ? (
+
+ ) : (
+ ''
+ )}
+
+
+
{
+ filtraReporte(e)
+ }}
+ />
+
+
+
+
+
Corresponsal
+
+
{
+ setCorresponsal(parseInt(e.target.value))
+ }}
+ className='form-select form-select-sm'
+ >
+
+ {DataCorresponsales
+ ? DataCorresponsales.map((c) => {
+ return (
+
+ )
+ })
+ : null}
+
+
+
+
+
+
+
+
+
{
+ setShowMsg(false)
+ }}
+ />
+ setShowModal(false)} */
+ size='sm'
+ dialogClassName='modal-90w modal-innerDiv'
+ disableEscapeKeyDown={true}
+ >
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/Components/Reportes/customCells/ProcessStatus.tsx b/src/Components/Reportes/customCells/ProcessStatus.tsx
new file mode 100644
index 0000000..4c39bfd
--- /dev/null
+++ b/src/Components/Reportes/customCells/ProcessStatus.tsx
@@ -0,0 +1,36 @@
+import { ICellRendererParams } from 'ag-grid-community'
+import { FC, useEffect, useState } from 'react'
+import { ProgressBar } from 'react-bootstrap'
+
+interface IProps {
+ value: number
+}
+
+export const ProcessStatus: FC = (props: ICellRendererParams) => {
+ const [Proceso1, setProceso1] = useState(props.value >= 2 ? 100 : 0)
+ // const [Proceso2, setProceso2] = useState(props.value >= 3 ? 100 : 0)
+ // const [Proceso3, setProceso3] = useState(props.value >= 4 ? 100 : 0)
+ const [Color, setColor] = useState('progress-bar bg-CORRESPONSAL_NORMAL')
+
+ useEffect(() => {
+ if (props.data.proceso === 0) setColor('progress-bar bg-RECHAZOS_PARA_CORRESPONSAL')
+ if (props.data.proceso === 1) {
+ if (props.data.rechazado > 0) setColor('progress-bar bg-RECHAZOS_POR_CONTABILIDAD')
+ else setColor('progress-bar bg-CORRESPONSAL_NORMAL')
+ }
+ }, [props])
+
+ return (
+
+
+ = 0 ? 'primary' : 'light'} now={23} key={1} />
+
+ = 1 ? 'success' : 'light'} now={23} key={3} />
+
+ = 2 ? 'warning' : 'light'} now={24} key={5} />
+
+
+
+
+ )
+}
diff --git a/src/Components/Reportes/customCells/progressBar.tsx b/src/Components/Reportes/customCells/progressBar.tsx
new file mode 100644
index 0000000..34ca050
--- /dev/null
+++ b/src/Components/Reportes/customCells/progressBar.tsx
@@ -0,0 +1,31 @@
+import { ICellRendererParams } from 'ag-grid-community'
+import { FC, useEffect, useState } from 'react'
+
+interface IProps {
+ value: number
+}
+
+export const ProgressBar: FC = (props: ICellRendererParams) => {
+ const [Proceso1, setProceso1] = useState(props.value >= 2 ? 100 : 0)
+ // const [Proceso2, setProceso2] = useState(props.value >= 3 ? 100 : 0)
+ // const [Proceso3, setProceso3] = useState(props.value >= 4 ? 100 : 0)
+ const [Color, setColor] = useState('progress-bar bg-CORRESPONSAL_NORMAL')
+
+ useEffect(() => {
+ if (props.data.proceso === 0) setColor('progress-bar bg-RECHAZOS_PARA_CORRESPONSAL')
+ if (props.data.proceso === 1) {
+ if (props.data.rechazado > 0) setColor('progress-bar bg-RECHAZOS_POR_CONTABILIDAD')
+ else setColor('progress-bar bg-CORRESPONSAL_NORMAL')
+ }
+ }, [props])
+
+ return (
+
+ )
+}
diff --git a/src/Components/Reportes/customCells/verPDF.tsx b/src/Components/Reportes/customCells/verPDF.tsx
new file mode 100644
index 0000000..a3a47da
--- /dev/null
+++ b/src/Components/Reportes/customCells/verPDF.tsx
@@ -0,0 +1,18 @@
+import React, { FC } from 'react'
+import { Button } from 'react-bootstrap'
+
+interface IProps {}
+
+export const verPDF: FC = (props) => {
+ const showPDF = () => {}
+
+ return (
+
+
+
+
+
+ )
+}
diff --git a/src/Components/Submenu/Submenu.tsx b/src/Components/Submenu/Submenu.tsx
new file mode 100644
index 0000000..05a60b8
--- /dev/null
+++ b/src/Components/Submenu/Submenu.tsx
@@ -0,0 +1,62 @@
+import * as React from 'react'
+import { NavDropdown } from 'react-bootstrap'
+import ItemMenu from '../../Interfaces/Catalogos/IItemMenu'
+
+interface ISubmenuProps {
+ submenu: ItemMenu[]
+ descripcion: string
+ allItems: ItemMenu[]
+}
+
+const Submenu: React.FunctionComponent = (props) => {
+ const esPadre = (ItemSubmenu: ItemMenu, allItems: ItemMenu[]) => {
+ var arrHijos = allItems.filter(function (item) {
+ return ItemSubmenu.id === item.padreId
+ })
+ if (arrHijos.length) return true
+ else return false
+ }
+
+ return (
+
+ {
+ <>
+
+ {props.submenu.map((item, index) => {
+ return !esPadre(item, props.allItems) ? (
+ <>
+
+ {item.descripcion}
+
+ >
+ ) : (
+ <>
+
+ {props.allItems
+ .filter(function (row) {
+ return row.padreId === item.id
+ })
+ .map((row, index) => {
+ return (
+
+ {row.descripcion}
+
+ )
+ })}
+
+ >
+ )
+ })}
+
+ >
+ }
+
+ )
+}
+
+export default Submenu
diff --git a/src/Components/Utils/ControlledInput/ControlledInput.tsx b/src/Components/Utils/ControlledInput/ControlledInput.tsx
new file mode 100644
index 0000000..65dac89
--- /dev/null
+++ b/src/Components/Utils/ControlledInput/ControlledInput.tsx
@@ -0,0 +1,51 @@
+import React, { FC, useState } from 'react'
+import { MsgInformativo } from '../Toast/msgInformativo'
+
+interface IProps {
+ id: number
+ value: number
+ disabled?: boolean
+ postCost: (id: number, value: number) => void
+}
+
+export const ControlledInput: FC = (props) => {
+ const [id, setid] = useState(props.id)
+ const [value, setValue] = useState(props.value)
+ const [header, setHeader] = useState('')
+ const [msgColor, setMsgColor] = React.useState('primary')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+
+ const onChange = (event: any) => {
+ setValue(event.target.value)
+ }
+ const handleKeyDown = (event: any) => {
+ if (event.key === 'Enter') {
+ if (isNaN(event.target.value)) {
+ alert('Valor no valido!')
+ return
+ }
+ props.postCost(id, event.target.value)
+ }
+ }
+ return (
+ <>
+ handleKeyDown(e)}
+ style={{ width: '70px' }}
+ />
+ {
+ setShowMsg(false)
+ }}
+ />
+ >
+ )
+}
diff --git a/src/Components/Utils/FileManager/FileManager.tsx b/src/Components/Utils/FileManager/FileManager.tsx
new file mode 100644
index 0000000..bcfb699
--- /dev/null
+++ b/src/Components/Utils/FileManager/FileManager.tsx
@@ -0,0 +1,245 @@
+import axios from 'axios'
+import React, { FC, useCallback, useEffect, useState } from 'react'
+import { useDropzone } from 'react-dropzone'
+import '../../../css/generic01.css'
+import FileManagerDataService from '../../../Services/Utils/FileManager.Services'
+import { TargetURL } from '../../../Constants/TargetURL'
+import { Alert, Col, Container, Row } from 'react-bootstrap'
+import { IconContext } from 'react-icons'
+import { BsFillXCircleFill } from 'react-icons/bs'
+import IFileManager from '../../../Interfaces/Utils/IFileManager'
+import { MsgInformativo } from '../Toast/msgInformativo'
+
+interface IProps {
+ IDProcess: number
+ IDUser: number
+ IdFile: number
+ FileName: string
+ Prefijo?: string
+ Leyenda: string
+ canDelete: boolean
+ FileType: string[]
+ width: number
+ height: number
+ onDelete?: (val: boolean) => void
+ setBackgroundColor?: number
+ onAppendFM: (idFile: number) => void
+}
+
+export const FileManager: FC = (props) => {
+ const [Archivo, setArchivo] = useState()
+ const [UserId, setUserId] = useState(() => {
+ const stickyValue = window.localStorage.getItem('UserId')
+ return stickyValue !== null ? JSON.parse(stickyValue) : 0
+ })
+ // const [BackgroundColor, setBackgroundColor] = useState('#000000')
+ const [header, setHeader] = useState('')
+ //const [msgColor, setMsgColor] = React.useState('primary')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+ const URL = new TargetURL()
+ const msgColor = 'primary'
+
+ const onDrop = useCallback(
+ (acceptedFiles: any) => {
+ acceptedFiles.forEach((file: File) => {
+ /* if (!file.name.toLowerCase().endsWith(props.FileType)) {
+ return false
+ } */
+ var ext = file.name.substr(file.name.lastIndexOf('.') + 1)
+ if (!props.FileType.includes(ext)) {
+ return false
+ }
+ const reader = new FileReader()
+ reader.onabort = () => console.log('file reading was aborted')
+ reader.onerror = () => console.log('file reading has failed')
+ reader.onload = () => {
+ // Do whatever you want with the file contents
+ const binaryStr = reader.result
+ console.log(binaryStr)
+ if (binaryStr) {
+ const formData = new FormData()
+ formData.append('name', file.name)
+ formData.append('file', file)
+ axios
+ .post(
+ URL.get() +
+ `/FileManager/AppendFileByProcess?IdUsuario=${props.IDUser}&Proceso=${props.IDProcess}&Tags=${props.IdFile}&crud=1`,
+ formData
+ )
+ .then((res) => {
+ if (res.data.id > 0) {
+ setArchivo(res.data)
+ props.onAppendFM(res.data.id)
+ } else {
+ setHeader('Error')
+ setMsg('No se guardo el archivo, favor de verificar que no este vacio')
+ setShowMsg(true)
+ return
+ }
+ })
+ .catch((err) => alert('File Upload Error ' + err))
+ console.log(JSON.stringify(file))
+ }
+ }
+ reader.readAsArrayBuffer(file)
+ // }
+ })
+ },
+ [props]
+ )
+ const { getRootProps, getInputProps } = useDropzone({ onDrop })
+
+ useEffect(() => {
+ if (props.IdFile > 0) {
+ FileManagerDataService.getFileInfoFromProcess(props.IdFile, props.IDProcess)
+ .then((response) => {
+ setArchivo(response.data)
+ //console.log(JSON.stringify(response.data) + ' ' + props.IdFile)
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error: ' + e)
+ setShowMsg(true)
+ return
+ })
+ }
+ }, [props])
+
+ const getFileContent = () => {
+ /* let Empty: IFileManager = {
+ id: 0,
+ idUsuario: props.IDUser,
+ proceso: props.IDProcess,
+ nombreArchivo: '',
+ fechaRegistro: '',
+ tags: '',
+ size: 0,
+ } */
+ FileManagerDataService.getFileContent(props.IdFile, props.IDProcess)
+ .then((response: any) => {
+ if (response.status === 200) {
+ if (Archivo?.nombreArchivo.toLowerCase().endsWith('.pdf')) {
+ console.log(response.data)
+ const blob = new Blob([response.data], { type: 'application/pdf' })
+ const url = window.URL.createObjectURL(blob)
+ window.open(url)
+ } else if (Archivo?.nombreArchivo.toLowerCase().endsWith('.pdf')) {
+ console.log(response.data)
+ const blob = new Blob([response.data], { type: 'application/pdf' })
+ const url = window.URL.createObjectURL(blob)
+ window.open(url)
+ } else {
+ const url = window.URL.createObjectURL(new Blob([response.data]))
+ const link = document.createElement('a')
+ link.href = url
+ link.setAttribute('download', Archivo?.nombreArchivo ? Archivo?.nombreArchivo : 'Archivo.zip')
+ document.body.appendChild(link)
+ link.click()
+ }
+ } else {
+ setHeader('Error')
+ setMsg('A este concepto no se le ha anexado archivo')
+ setShowMsg(true)
+ return
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('A este concepto no se le ha anexado archivo')
+ setShowMsg(true)
+ return
+ })
+ }
+
+ const deleteFile = () => {
+ let id = Archivo?.id ? Archivo?.id : 0
+ FileManagerDataService.DeleteFile(id)
+ .then((response: any) => {
+ if (response.status === 200) {
+ setArchivo({ id: 0, idUsuario: 0, proceso: 0, nombreArchivo: '', fechaRegistro: '', tags: '', size: 0 })
+ setHeader('Informativo')
+ setMsg(response.data.respuesta)
+ setShowMsg(true)
+ } else {
+ setHeader('Error')
+ setMsg('Algo sucedio, no se pudo eliminar el archivo!')
+ setShowMsg(true)
+ return
+ }
+ })
+ .catch((e: Error) => {})
+ }
+
+ const getRGB = (color: number) => {
+ const base = 255 - color * 1
+ // const baseR = 255 - base * 0
+ const baseG = 255 - base * 2
+ // const baseB = 255 - base * 5
+ // const R = baseR.toString(16)
+ const G = baseG.toString(16)
+ // const B = baseB.toString(16)
+ const newBackcolor = '#F1' + G.padStart(2, '0').replace('-', '').substring(0, 2) + 'FE'
+ return newBackcolor.replace('-', '').substring(0, 7)
+ }
+
+ return (
+ <>
+
+
+
+
{!Archivo?.nombreArchivo ? props.Leyenda : ''}
+
+
+
+ {Archivo?.nombreArchivo ? (
+
+
+
+ {props.Prefijo ? props.Prefijo : 'Archivo'} :
+ {
+ getFileContent()
+ }}
+ >
+ {Archivo?.nombreArchivo}
+
+
+
+
+ {
+ deleteFile()
+ }}
+ style={{ cursor: 'pointer' }}
+ />
+
+
+
+
+ ) : (
+ ''
+ )}
+
+ {
+ setShowMsg(false)
+ }}
+ >
+ >
+ )
+}
+
+export default FileManager
diff --git a/src/Components/Utils/MFileManager/MFileManager.tsx b/src/Components/Utils/MFileManager/MFileManager.tsx
new file mode 100644
index 0000000..7013488
--- /dev/null
+++ b/src/Components/Utils/MFileManager/MFileManager.tsx
@@ -0,0 +1,335 @@
+import React, { FC, useEffect, useState } from 'react'
+import MFileManagerDS from '../../../Services/Utils/MFileManager.Service'
+import IFileManager from '../../../Interfaces/Utils/IFileManager'
+import { Alert, Button, Card, Col, ListGroup, Modal, Row } from 'react-bootstrap'
+import { IconContext } from 'react-icons'
+import { BsFillXCircleFill } from 'react-icons/bs'
+import { MsgInformativo } from '../Toast/msgInformativo'
+import { TargetURL } from '../../../Constants/TargetURL'
+
+interface IProps {
+ IDTrafico: number
+ Proceso: number
+ Leyenda?: string
+ showPreview: number
+ canEdit: boolean
+}
+
+export const MFileManager: FC = (props) => {
+ const [UserId, setUserId] = useState(() => {
+ const stickyValue = window.localStorage.getItem('UserId')
+ return stickyValue !== null ? JSON.parse(stickyValue) : 0
+ })
+ const [IDTrafico, setIDTrafico] = useState(props.IDTrafico ? props.IDTrafico : 0)
+ const [Proceso, setProceso] = useState(props.Proceso ? props.Proceso : 0)
+ const [ListaArchivos, setListaArchivos] = useState()
+ const [NombreArchivo, setNombreArchivo] = useState('')
+ const [MsgDialogDelete, setMsgDialogDelete] = useState(false)
+ const [IDArchivo, setIDArchivo] = useState(0)
+ const [header, setHeader] = useState('')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+ const URL = new TargetURL()
+ const msgColor = 'primary'
+
+ const selectedFiles = (selectorFiles: any) => {
+ var formData = new FormData()
+ for (let i = 0; i < selectorFiles.files.length; i++) {
+ formData.append('FileList', selectorFiles.files[i])
+ }
+ MFileManagerDS.Append(formData, IDTrafico, Proceso, UserId)
+ .then((response) => {
+ setListaArchivos(response.data)
+ })
+ .catch((e: Error) => {
+ alert('Ocurrio un error: ' + e)
+ return
+ })
+ return false
+ }
+
+ useEffect(() => {
+ setIDTrafico(props.IDTrafico)
+ setProceso(props.Proceso)
+ MFileManagerDS.Get(props.IDTrafico, props.Proceso)
+ .then((response) => {
+ setListaArchivos(response.data)
+ })
+ .catch((e: Error) => {
+ alert('Ocurrio un error: ' + e)
+ return
+ })
+ }, [props.IDTrafico, props.Proceso])
+
+ const confirmDelete = (row: IFileManager) => {
+ setIDArchivo(row.id)
+ setNombreArchivo(row.nombreArchivo)
+ setMsgDialogDelete(true)
+ }
+
+ const deleteItem = () => {
+ MFileManagerDS.DeleteFile(IDArchivo)
+ .then((response) => {
+ var arrArchivos = ListaArchivos!.filter(function (el) {
+ return el.id !== IDArchivo
+ })
+ setListaArchivos(arrArchivos)
+ setHeader('Informtivo')
+ setMsg(response.data.respuesta)
+ setMsgDialogDelete(false)
+ setShowMsg(false)
+ return
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('Ocurrio un error, no se elimino el archivo')
+ setMsgDialogDelete(false)
+ setShowMsg(false)
+ return
+ })
+ return false
+ }
+
+ const getFileContent = (row: IFileManager) => {
+ MFileManagerDS.getFileContentById(row.id, row.proceso)
+ .then((response: any) => {
+ if (response.status === 200) {
+ if (row.nombreArchivo.toLowerCase().endsWith('.pdf')) {
+ // console.log(response.data)
+ const blob = new Blob([response.data], { type: 'application/pdf' })
+ const url = window.URL.createObjectURL(blob)
+ window.open(url)
+ } else if (
+ row.nombreArchivo.toLowerCase().endsWith('.png') ||
+ row.nombreArchivo.toLowerCase().endsWith('.jpg')
+ ) {
+ const blob = new Blob([response.data], { type: 'image/png' })
+ const url = window.URL.createObjectURL(blob)
+ window.open(url)
+ } else if (row.nombreArchivo.toLowerCase().endsWith('.xlsx')) {
+ const blob = new Blob([response.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
+ const url = window.URL.createObjectURL(blob)
+ window.open(url)
+ } else if (
+ row.nombreArchivo.toLowerCase().endsWith('.xls')) {
+ const blob = new Blob([response.data], { type: 'application/vnd.ms-excel' })
+ const url = window.URL.createObjectURL(blob)
+ window.open(url)
+ } else {
+ const url = window.URL.createObjectURL(new Blob([response.data]))
+ const link = document.createElement('a')
+ link.href = url
+ link.setAttribute('download', NombreArchivo ? NombreArchivo : 'Archivo.zip')
+ document.body.appendChild(link)
+ link.click()
+ }
+ } else {
+ setHeader('Error')
+ setMsg('A este concepto no se le ha anexado PDF')
+ setShowMsg(true)
+ return
+ }
+ })
+ .catch((e: Error) => {
+ setHeader('Error')
+ setMsg('A este concepto no se le ha anexado PDF')
+ setShowMsg(true)
+ return
+ })
+ }
+
+ return (
+
+
+
+
+
+ {props.Leyenda ? props.Leyenda : ''}
+ {props.canEdit ? (
+ selectedFiles(e.target)} />
+ ) : (
+ ''
+ )}
+
+ {ListaArchivos && props.showPreview === 1 ? (
+
+
+ {ListaArchivos
+ ? ListaArchivos.map((rec) => {
+ return (
+
+
+
+
+
+
+ {
+ getFileContent(rec)
+ }}
+ />
+
+
+
+ {
+ confirmDelete(rec)
+ }}
+ style={{ cursor: 'pointer' }}
+ />
+
+
+
+
+
+
+
+
+ {rec.nombreArchivo}
+
+
+
+
+ )
+ })
+ : ''}
+
+
+ ) : ListaArchivos && props.showPreview === 2 ? (
+
+
+ {ListaArchivos
+ ? ListaArchivos.map((rec) => {
+ return (
+
+
+
+
+
+ {rec.nombreArchivo}
+
+
+ {
+ confirmDelete(rec)
+ }}
+ style={{ cursor: 'pointer' }}
+ />
+
+
+
+
+
+
+
+ )
+ })
+ : ''}
+
+
+ ) : ListaArchivos && props.showPreview === 3 ? (
+
+ {ListaArchivos
+ ? ListaArchivos.map((rec) => {
+ return (
+
+
+
+
+ {
+ getFileContent(rec)
+ }}
+ >
+ {rec.nombreArchivo}
+
+
+
+
+
+ {
+ confirmDelete(rec)
+ }}
+ style={{ cursor: 'pointer' }}
+ />
+
+
+
+
+
+
+ )
+ })
+ : ''}
+
+ ) : (
+ ''
+ )}
+
+
+
setMsgDialogDelete(false)} size='lg'>
+
+
+ Favor de confirmar
+
+
+
+
+ ¿Esta seguro de eliminar el archivo:
+
{NombreArchivo}?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{
+ setShowMsg(false)
+ }}
+ />
+
+ )
+}
diff --git a/src/Components/Utils/Toast/msgInformativo.tsx b/src/Components/Utils/Toast/msgInformativo.tsx
new file mode 100644
index 0000000..ca41a64
--- /dev/null
+++ b/src/Components/Utils/Toast/msgInformativo.tsx
@@ -0,0 +1,51 @@
+import React, { FC } from 'react'
+import { Toast, ToastContainer } from 'react-bootstrap'
+import { IconContext } from 'react-icons'
+import { BsFillExclamationSquareFill, BsXOctagonFill } from 'react-icons/bs'
+
+interface IProps {
+ show: boolean
+ msg: string
+ header: string
+ msgColor: string
+ time?: number
+ closeToast: (arg: boolean) => void
+}
+
+export const MsgInformativo: FC = (props) => {
+ return (
+
+
+ {
+ props.closeToast(false)
+ }}
+ >
+
+
+ {props.header.toString().includes('Error') ? (
+
+
+
+ ) : null}
+ {props.header.toString().includes('Informativo') ? (
+
+
+
+ ) : null}
+
+ {props.header}
+
+
+
+ {props.msg}
+
+
+
+
+ )
+}
diff --git a/src/Components/asignacionPerfil/asignacionPerfil.tsx b/src/Components/asignacionPerfil/asignacionPerfil.tsx
new file mode 100644
index 0000000..86f1f8b
--- /dev/null
+++ b/src/Components/asignacionPerfil/asignacionPerfil.tsx
@@ -0,0 +1,43 @@
+import React, { FC, useState } from 'react'
+import '../../css/login.css'
+import DropdownButton from 'react-bootstrap/DropdownButton'
+import Dropdown from 'react-bootstrap/Dropdown'
+
+interface IProps {}
+
+const AsignacionPerfil: FC = (props) => {
+ const [value, setValue] = useState('')
+ const handleSelect = (e: any) => {
+ console.log(e)
+ setValue(e)
+ }
+ return (
+
+
+
+
+
+
+
Register
+
+
+
+
+
+
+
+
+
+
+ )
+}
+
+export default AsignacionPerfil
diff --git a/src/Components/registerPermisoClientes/registerPermisoClientes.tsx b/src/Components/registerPermisoClientes/registerPermisoClientes.tsx
new file mode 100644
index 0000000..64b000e
--- /dev/null
+++ b/src/Components/registerPermisoClientes/registerPermisoClientes.tsx
@@ -0,0 +1,127 @@
+import * as React from 'react'
+import { Formik, FormikHelpers, FormikProps, Form, Field, useField, FieldProps, ErrorMessage } from 'formik'
+import * as Yup from 'yup'
+import { IregistroPermisoClientes } from '../../Interfaces/registroPermisoClientes'
+import '../../css/login.css'
+
+interface IProps {}
+
+const SignupSchema = Yup.object().shape({
+ ModuloCliente: Yup.string().required('Requerido'),
+ IoE: Yup.string().required('Requerido'),
+})
+
+export default function RegisterPermisoClientes(props: IProps) {
+ const initialValues: IregistroPermisoClientes = {
+ id: 1,
+ IdUsuario: 1,
+ ModuloCliente: 0,
+ IoE: 0,
+ Aduana: 0,
+ Patente: 0,
+ }
+
+ const validateForm = (values: IregistroPermisoClientes) => {
+ const errors = { ModuloCliente: '', IoE: '', Aduana: '', Patente: '' }
+ // console.log(errors);
+ if (!values.ModuloCliente) {
+ errors.ModuloCliente = 'Campo requerido'
+ } else if (values.ModuloCliente == 0) {
+ errors.ModuloCliente = 'Debe seleccionar el modulo'
+ }
+ if (!values.IoE) {
+ errors.IoE = 'Campo requerido'
+ } else if (values.IoE == 0) {
+ errors.IoE = 'Debe seleccionar si es Importacion e Exportacion'
+ }
+ return errors
+ }
+
+ return (
+
+
+
+
+
+
{
+ console.log(values)
+ }}
+ validate={validateForm}
+ >
+ {(formik) => {
+ const { errors, touched, isValid, dirty, handleSubmit } = formik
+ return (
+
+ )
+ }}
+
+
+
+
+
+
+ )
+}
diff --git a/src/Components/resetCredentials/resetCredentials.tsx b/src/Components/resetCredentials/resetCredentials.tsx
new file mode 100644
index 0000000..d98b5d4
--- /dev/null
+++ b/src/Components/resetCredentials/resetCredentials.tsx
@@ -0,0 +1,99 @@
+import React, { FC } from 'react'
+import { Button, Form, Toast, ToastContainer } from 'react-bootstrap'
+import { MsgInformativo } from '../Utils/Toast/msgInformativo'
+import DTOUsuario from '../../DTO/DTOUsuario'
+import usuariosServices from '../../Services/Catalogos/Usuarios.Services'
+
+interface IProps {}
+
+export default function ResetCredentials(props: IProps) {
+ const [header, setHerader] = React.useState('Error!')
+ const [msgColor, setMsgColor] = React.useState('Primary')
+ const [showMsg, setShowMsg] = React.useState(false)
+ const [msg, setMsg] = React.useState('')
+ const [usuario, setUsuario] = React.useState('')
+ const [contrasena, setContrasena] = React.useState('')
+ const [confirmaContrasena, setConfirmaContrasena] = React.useState('')
+
+ const validaFormulario = () => {
+ if (contrasena != confirmaContrasena) {
+ setMsg('Contrasena no coincide con su confirmacion!')
+ setShowMsg(true)
+ return
+ }
+
+ const data: DTOUsuario = {
+ Usuario: usuario,
+ Contrasena: contrasena,
+ }
+
+ usuariosServices
+ .resetPassword(data)
+ .then((response) => {
+ if (response.status == 200) alert('La contrasena se reseteo exisosamente')
+ if (response.status == 204) alert('Usuario no existe')
+
+ console.log(response.data)
+ })
+ .catch((e: Error) => {
+ console.log(e)
+ //alert(e);
+ let message = e.message
+ setMsg(message)
+ if (message.includes('400')) setMsg('Usuario no encontrado')
+ setShowMsg(true)
+ })
+ }
+
+ const closeToast = (show: boolean): void => {
+ setShowMsg(false)
+ }
+
+ return (
+
+ {' '}
+
+
+
+
+
+
+ Usuario
+ setUsuario(e.currentTarget.value)} />
+
+
+ Nueva contraseña
+ setContrasena(e.currentTarget.value)}
+ />
+
+
+ Confirme su nueva contraseña
+ setConfirmaContrasena(e.currentTarget.value)}
+ />
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/Constants/TargetURL.ts b/src/Constants/TargetURL.ts
new file mode 100644
index 0000000..7765ec9
--- /dev/null
+++ b/src/Constants/TargetURL.ts
@@ -0,0 +1,11 @@
+export class TargetURL {
+ get() {
+ /* return !process.env.NODE_ENV || process.env.NODE_ENV === 'development'
+ ? 'https://gemcousa.solutions/GEMCOBackend/api'
+ 'https://localhost:5001/api'
+ : "http://reportes.gemcousa.com:5000/api";
+ 'https://www.gemcousa.mx/GEMCOBackend/api'
+ 'https://gemcousa.solutions/GEMCOBackend/api' */
+ return process.env.REACT_APP_API
+ }
+}
diff --git a/src/DTO/Clientes/CasaCuervo/DTO325AduanasPedidos.ts b/src/DTO/Clientes/CasaCuervo/DTO325AduanasPedidos.ts
new file mode 100644
index 0000000..025060e
--- /dev/null
+++ b/src/DTO/Clientes/CasaCuervo/DTO325AduanasPedidos.ts
@@ -0,0 +1,4 @@
+export default interface DTO325AduanasPedidos {
+ id: number,
+ value: string
+}
\ No newline at end of file
diff --git a/src/DTO/Clientes/CasaCuervo/DTO325UpdateFromWeb.ts b/src/DTO/Clientes/CasaCuervo/DTO325UpdateFromWeb.ts
new file mode 100644
index 0000000..76af402
--- /dev/null
+++ b/src/DTO/Clientes/CasaCuervo/DTO325UpdateFromWeb.ts
@@ -0,0 +1,14 @@
+export default interface DTO325UpdateFromWeb {
+ id: number,
+ ComentarioGEMCO: string,
+ FechaCompromiso: string,
+ FechaCruce: string,
+ Factura: string,
+ MedidaCaja: string,
+ Sello1: string,
+ Sello2: string,
+ UUID: string,
+ Trafico: string,
+ Pedimento: string,
+ Patente: string
+}
\ No newline at end of file
diff --git a/src/DTO/Clientes/CasaCuervo/DTORptPedidos.ts b/src/DTO/Clientes/CasaCuervo/DTORptPedidos.ts
new file mode 100644
index 0000000..bc0d68e
--- /dev/null
+++ b/src/DTO/Clientes/CasaCuervo/DTORptPedidos.ts
@@ -0,0 +1,5 @@
+export default interface DTORptPedidos {
+ Inicio: string,
+ Fin: string,
+ Aduana: string
+}
\ No newline at end of file
diff --git a/src/DTO/Corresponsales/DTOAnticiposAutoriza.ts b/src/DTO/Corresponsales/DTOAnticiposAutoriza.ts
new file mode 100644
index 0000000..af4f7b1
--- /dev/null
+++ b/src/DTO/Corresponsales/DTOAnticiposAutoriza.ts
@@ -0,0 +1,4 @@
+export default interface DTOAnticiposAutoriza {
+ id: number,
+ idUsuario: number
+}
\ No newline at end of file
diff --git a/src/DTO/Corresponsales/DTOCorresponsalFacturaProveedor.ts b/src/DTO/Corresponsales/DTOCorresponsalFacturaProveedor.ts
new file mode 100644
index 0000000..952d241
--- /dev/null
+++ b/src/DTO/Corresponsales/DTOCorresponsalFacturaProveedor.ts
@@ -0,0 +1,7 @@
+export default interface DTOCorresponsalFacturaProveedor {
+ id: number;
+ proveedor: string;
+ factura: string;
+ trafico: number;
+ valorFacturaDls: number;
+}
\ No newline at end of file
diff --git a/src/DTO/Corresponsales/DTOCorresponsalFacturasTerceros.ts b/src/DTO/Corresponsales/DTOCorresponsalFacturasTerceros.ts
new file mode 100644
index 0000000..3486038
--- /dev/null
+++ b/src/DTO/Corresponsales/DTOCorresponsalFacturasTerceros.ts
@@ -0,0 +1,6 @@
+import ICorresponsalTerceros from "../../Interfaces/Corresponsales/ICorresponsalFacturasTerceros";
+
+export default interface DTOCorresponsalFacturasTerceros {
+ registro: ICorresponsalTerceros,
+ respuesta: string
+}
\ No newline at end of file
diff --git a/src/DTO/Corresponsales/DTOCorresponsalTrafico.ts b/src/DTO/Corresponsales/DTOCorresponsalTrafico.ts
new file mode 100644
index 0000000..adffc39
--- /dev/null
+++ b/src/DTO/Corresponsales/DTOCorresponsalTrafico.ts
@@ -0,0 +1,40 @@
+export default interface DTOCorresponsalTrafico {
+ id: number
+ fechaRegistro?: string
+ idUsuario: number
+ sUsuario?: string
+ idCliente: number
+ sCliente?: string
+ tipoOperacion: number
+ sTipoOperacion?: string
+ tipoEmbarque: number
+ sTipoEmbarque?: string
+ idCorresponsal: number
+ sCorresponsal?: string
+ bultos?: number
+ kilos?: number
+ estatus?: number
+ sEstatus?: string
+ trafico?: string
+ aduana?: number
+ patente?: number
+ pedimento?: number
+ clave?: string
+ fechaPago?: string
+ tipoCambio?: number
+ valorAduanaMN?: number
+ totalPagado?: number
+ valorFacturaMN?: number
+ cantidadFracciones?: number
+ buque?: string
+ valorFacturaDls?: number
+ descripcionMercancia?: string
+ observaciones?: string
+ fechaDesaduanamiento?: string
+ semaforoFiscal?: number
+ noCuenta?: string
+ fechaCuenta?: string
+ tipoMercancia?: number
+ ultimaActualizacion?: string
+ activo?: number
+}
\ No newline at end of file
diff --git a/src/DTO/Corresponsales/DTOCuentaComplementaria.ts b/src/DTO/Corresponsales/DTOCuentaComplementaria.ts
new file mode 100644
index 0000000..0dfdceb
--- /dev/null
+++ b/src/DTO/Corresponsales/DTOCuentaComplementaria.ts
@@ -0,0 +1,5 @@
+export default interface DTOCorresponsalCuentaComplementaria {
+ id: number,
+ idTrafico: number,
+ idFile: number
+}
\ No newline at end of file
diff --git a/src/DTO/Corresponsales/DTOCuentaComplementariaEstatus.ts b/src/DTO/Corresponsales/DTOCuentaComplementariaEstatus.ts
new file mode 100644
index 0000000..9002613
--- /dev/null
+++ b/src/DTO/Corresponsales/DTOCuentaComplementariaEstatus.ts
@@ -0,0 +1,4 @@
+export default interface DTOCuentaComplementariaEstatus {
+ id: number,
+ estatus: number
+}
\ No newline at end of file
diff --git a/src/DTO/Corresponsales/DTOItems.ts b/src/DTO/Corresponsales/DTOItems.ts
new file mode 100644
index 0000000..208e047
--- /dev/null
+++ b/src/DTO/Corresponsales/DTOItems.ts
@@ -0,0 +1,4 @@
+export default interface DTOItems {
+ id: number;
+ item: string;
+}
\ No newline at end of file
diff --git a/src/DTO/Corresponsales/DTOLogCorresponsalComplementariaEstatus.ts b/src/DTO/Corresponsales/DTOLogCorresponsalComplementariaEstatus.ts
new file mode 100644
index 0000000..682605b
--- /dev/null
+++ b/src/DTO/Corresponsales/DTOLogCorresponsalComplementariaEstatus.ts
@@ -0,0 +1,5 @@
+export default interface DTOLogCorresponsalComplementariaEstatus {
+ estatus: number,
+ fCreacion: string,
+ sEstatus: string
+}
\ No newline at end of file
diff --git a/src/DTO/Corresponsales/DTORectificacionHistorico.ts b/src/DTO/Corresponsales/DTORectificacionHistorico.ts
new file mode 100644
index 0000000..f3f629e
--- /dev/null
+++ b/src/DTO/Corresponsales/DTORectificacionHistorico.ts
@@ -0,0 +1,4 @@
+export default interface DTORectificacionHistorico {
+ IdTrafico: number,
+ IdUsuario: number
+}
diff --git a/src/DTO/Corresponsales/DTORptCorresponsalesTraficos.ts b/src/DTO/Corresponsales/DTORptCorresponsalesTraficos.ts
new file mode 100644
index 0000000..8c3537d
--- /dev/null
+++ b/src/DTO/Corresponsales/DTORptCorresponsalesTraficos.ts
@@ -0,0 +1,9 @@
+export default interface DTORptCorresponsalesTraficos {
+ Inicio: string;
+ Fin: string;
+ TipoOperacion: number;
+ NoCliente: number;
+ IdCorresponsal: number;
+ Proceso: number;
+ Modo: number;
+}
\ No newline at end of file
diff --git a/src/DTO/Corresponsales/DTOTraficoCompleto.ts b/src/DTO/Corresponsales/DTOTraficoCompleto.ts
new file mode 100644
index 0000000..248aa86
--- /dev/null
+++ b/src/DTO/Corresponsales/DTOTraficoCompleto.ts
@@ -0,0 +1,6 @@
+export default interface DTOTraficoCompleto {
+ id: number,
+ idUsuario: number,
+ estatus: number,
+ comentarios: string
+}
\ No newline at end of file
diff --git a/src/DTO/DTOAEPeriodo.ts b/src/DTO/DTOAEPeriodo.ts
new file mode 100644
index 0000000..b56b347
--- /dev/null
+++ b/src/DTO/DTOAEPeriodo.ts
@@ -0,0 +1,7 @@
+export default interface DTOAEPeriodo {
+ Anio: number;
+ Mes: number;
+ NoCliente: number;
+ TipoOperacion: number;
+ Referencias?: string[];
+}
\ No newline at end of file
diff --git a/src/DTO/DTOClienteTransportita.ts b/src/DTO/DTOClienteTransportita.ts
new file mode 100644
index 0000000..6a63695
--- /dev/null
+++ b/src/DTO/DTOClienteTransportita.ts
@@ -0,0 +1,5 @@
+export default interface DTOClienteTransportista {
+ IdUsuario:number;
+ sClave: string;
+ asignado: boolean;
+}
\ No newline at end of file
diff --git a/src/DTO/DTOClonarUsuario.ts b/src/DTO/DTOClonarUsuario.ts
new file mode 100644
index 0000000..37a0191
--- /dev/null
+++ b/src/DTO/DTOClonarUsuario.ts
@@ -0,0 +1,4 @@
+export default interface DTOClonarUsuario {
+ idUsuarioOrigen: number;
+ idUsuarioDestino: number;
+}
\ No newline at end of file
diff --git a/src/DTO/DTOItemMenuPerfil.ts b/src/DTO/DTOItemMenuPerfil.ts
new file mode 100644
index 0000000..7ab6ee0
--- /dev/null
+++ b/src/DTO/DTOItemMenuPerfil.ts
@@ -0,0 +1,5 @@
+export default interface DTPItemMenuPerfil {
+ IdPerfil: number;
+ itemMenu: number;
+ asignado: boolean;
+}
\ No newline at end of file
diff --git a/src/DTO/DTOPerfilCreate.ts b/src/DTO/DTOPerfilCreate.ts
new file mode 100644
index 0000000..fd4cd25
--- /dev/null
+++ b/src/DTO/DTOPerfilCreate.ts
@@ -0,0 +1,4 @@
+export default interface DTOPerfilCreate {
+ Perfil: string;
+ IdPerfilClonado: number;
+}
\ No newline at end of file
diff --git a/src/DTO/DTOReporte.ts b/src/DTO/DTOReporte.ts
new file mode 100644
index 0000000..360d17c
--- /dev/null
+++ b/src/DTO/DTOReporte.ts
@@ -0,0 +1,7 @@
+export default interface DTOReporte {
+ Inicio: string;
+ Fin: string;
+ TipoOperacion: number;
+ NoCliente: number;
+ IdUsuario: number;
+}
diff --git a/src/DTO/DTOUsuario.ts b/src/DTO/DTOUsuario.ts
new file mode 100644
index 0000000..6edb089
--- /dev/null
+++ b/src/DTO/DTOUsuario.ts
@@ -0,0 +1,4 @@
+export default interface DTOUsuario {
+ Usuario: string;
+ Contrasena : string;
+}
\ No newline at end of file
diff --git a/src/DTO/DTOUsuarioCliente.ts b/src/DTO/DTOUsuarioCliente.ts
new file mode 100644
index 0000000..3e1deae
--- /dev/null
+++ b/src/DTO/DTOUsuarioCliente.ts
@@ -0,0 +1,5 @@
+export default interface IDTOUsuarioCliente {
+ sClave: number;
+ IdUsuario: number;
+ agregar: boolean;
+}
\ No newline at end of file
diff --git a/src/DTO/DTOUsuariosShort.ts b/src/DTO/DTOUsuariosShort.ts
new file mode 100644
index 0000000..1d3bf61
--- /dev/null
+++ b/src/DTO/DTOUsuariosShort.ts
@@ -0,0 +1,4 @@
+export default interface DTOUsuariosShort {
+ id: number;
+ usuario: string;
+}
\ No newline at end of file
diff --git a/src/DTO/DTOasignaClienteProveedor.ts b/src/DTO/DTOasignaClienteProveedor.ts
new file mode 100644
index 0000000..1a9ea16
--- /dev/null
+++ b/src/DTO/DTOasignaClienteProveedor.ts
@@ -0,0 +1,6 @@
+export default interface DTOasignaClienteProveedor {
+ IdUsuario: number;
+ sClaveCliente: string;
+ sClave: string;
+ asignado: boolean;
+}
\ No newline at end of file
diff --git a/src/DTO/DTOgetArchivosPorReferencia.ts b/src/DTO/DTOgetArchivosPorReferencia.ts
new file mode 100644
index 0000000..eb546eb
--- /dev/null
+++ b/src/DTO/DTOgetArchivosPorReferencia.ts
@@ -0,0 +1,8 @@
+export default interface DTOgetArchivosPorReferencia {
+ Referencia: string
+ PedimentoLargo: string
+ NoCliente: number
+ IdUsuario: number
+ Archivo: string
+ Archivos: string[]
+ }
\ No newline at end of file
diff --git a/src/DTO/DTOgetThesePedimentos.ts b/src/DTO/DTOgetThesePedimentos.ts
new file mode 100644
index 0000000..86fa892
--- /dev/null
+++ b/src/DTO/DTOgetThesePedimentos.ts
@@ -0,0 +1,8 @@
+export default interface DTOgetThesePedimentos {
+ Inicio: string;
+ Fin: string;
+ NoCliente: number;
+ IdUsuario: number;
+ TipoOperacion: number;
+ Pedimentos: string[];
+ }
\ No newline at end of file
diff --git a/src/DTO/DTOid.ts b/src/DTO/DTOid.ts
new file mode 100644
index 0000000..37d4e24
--- /dev/null
+++ b/src/DTO/DTOid.ts
@@ -0,0 +1,3 @@
+export default interface DTOid {
+ id: number
+}
\ No newline at end of file
diff --git a/src/DTO/Facturacion/Anexo/DTOAnexoFacturacionAlen.ts b/src/DTO/Facturacion/Anexo/DTOAnexoFacturacionAlen.ts
new file mode 100644
index 0000000..534a511
--- /dev/null
+++ b/src/DTO/Facturacion/Anexo/DTOAnexoFacturacionAlen.ts
@@ -0,0 +1,7 @@
+export default interface DTOAnexoFacturacionAlen {
+ sReferencia: string
+ nHonorarios: number
+ nValidacion: number
+ nPrevalidacion: number
+ nCoordinacion: number
+}
diff --git a/src/DTO/Facturacion/Anexo/DTOAnexoFacturacionMission.ts b/src/DTO/Facturacion/Anexo/DTOAnexoFacturacionMission.ts
new file mode 100644
index 0000000..d4b748d
--- /dev/null
+++ b/src/DTO/Facturacion/Anexo/DTOAnexoFacturacionMission.ts
@@ -0,0 +1,8 @@
+export default interface DTOAnexoFacturacionMission {
+ sReferencia: string,
+ cordCruce: number,
+ cordFlete: number,
+ nServicio: number,
+ nContraprestacion: number,
+ nHonorario: number
+}
\ No newline at end of file
diff --git a/src/DTO/Utils/DTOConceptos.ts b/src/DTO/Utils/DTOConceptos.ts
new file mode 100644
index 0000000..fcbcab3
--- /dev/null
+++ b/src/DTO/Utils/DTOConceptos.ts
@@ -0,0 +1,4 @@
+export default interface DTOConceptos {
+ id: number,
+ concepto: string
+}
\ No newline at end of file
diff --git a/src/DTO/Utils/Notificaciones/DTONotificacionesContactoGrupo.ts b/src/DTO/Utils/Notificaciones/DTONotificacionesContactoGrupo.ts
new file mode 100644
index 0000000..27d253a
--- /dev/null
+++ b/src/DTO/Utils/Notificaciones/DTONotificacionesContactoGrupo.ts
@@ -0,0 +1,5 @@
+export default interface DTONotificacionesContactoGrupo {
+ idgrupo: number,
+ accion: number,
+ contactos: number[]
+}
\ No newline at end of file
diff --git a/src/Interfaces/Catalogos/ICatCorresponsales.ts b/src/Interfaces/Catalogos/ICatCorresponsales.ts
new file mode 100644
index 0000000..807c2ec
--- /dev/null
+++ b/src/Interfaces/Catalogos/ICatCorresponsales.ts
@@ -0,0 +1,7 @@
+export default interface ICatCorresponsales {
+ id: number;
+ nombre: string;
+ patente: number,
+ aduana: number;
+ correos: string
+}
\ No newline at end of file
diff --git a/src/Interfaces/Catalogos/ICatProveedores.ts b/src/Interfaces/Catalogos/ICatProveedores.ts
new file mode 100644
index 0000000..82611d2
--- /dev/null
+++ b/src/Interfaces/Catalogos/ICatProveedores.ts
@@ -0,0 +1,5 @@
+export default interface ICatProveedores {
+ id: number;
+ nombre: string;
+ clasificacion: number;
+}
\ No newline at end of file
diff --git a/src/Interfaces/Catalogos/IClientes.ts b/src/Interfaces/Catalogos/IClientes.ts
new file mode 100644
index 0000000..abc33d1
--- /dev/null
+++ b/src/Interfaces/Catalogos/IClientes.ts
@@ -0,0 +1,5 @@
+export default interface IClientes {
+ sClave: number;
+ agrupado: number;
+ sRazonSocial : string;
+}
\ No newline at end of file
diff --git a/src/Interfaces/Catalogos/IItemMenu.ts b/src/Interfaces/Catalogos/IItemMenu.ts
new file mode 100644
index 0000000..d883a47
--- /dev/null
+++ b/src/Interfaces/Catalogos/IItemMenu.ts
@@ -0,0 +1,7 @@
+export default interface ItemMenuData {
+ id: number;
+ padreId: number;
+ posicion: number;
+ descripcion: string;
+ url: string;
+}
\ No newline at end of file
diff --git a/src/Interfaces/Catalogos/IPerfiles.ts b/src/Interfaces/Catalogos/IPerfiles.ts
new file mode 100644
index 0000000..1d610ee
--- /dev/null
+++ b/src/Interfaces/Catalogos/IPerfiles.ts
@@ -0,0 +1,4 @@
+export interface IPerfil {
+ id: number;
+ perfil: string;
+}
\ No newline at end of file
diff --git a/src/Interfaces/Catalogos/IProveedores.ts b/src/Interfaces/Catalogos/IProveedores.ts
new file mode 100644
index 0000000..44f21c3
--- /dev/null
+++ b/src/Interfaces/Catalogos/IProveedores.ts
@@ -0,0 +1,8 @@
+export default interface IProveedores {
+ idUsuario: number;
+ sClaveCliente: string;
+ sClave: string;
+ sRazonSocial: string;
+ direccion: string;
+ asignado: number;
+}
\ No newline at end of file
diff --git a/src/Interfaces/Catalogos/ITabulador.ts b/src/Interfaces/Catalogos/ITabulador.ts
new file mode 100644
index 0000000..7761093
--- /dev/null
+++ b/src/Interfaces/Catalogos/ITabulador.ts
@@ -0,0 +1,5 @@
+export default interface ITabulador {
+ id: number,
+ idCliente: number
+ nombre: string
+}
\ No newline at end of file
diff --git a/src/Interfaces/Catalogos/ITabuladorConceptos.ts b/src/Interfaces/Catalogos/ITabuladorConceptos.ts
new file mode 100644
index 0000000..53c6939
--- /dev/null
+++ b/src/Interfaces/Catalogos/ITabuladorConceptos.ts
@@ -0,0 +1,8 @@
+export default interface ITabuladorConceptos {
+ id: number,
+ idTabulador: number,
+ idConcepto: number,
+ concepto: string,
+ costo: number,
+ activo: number
+}
\ No newline at end of file
diff --git a/src/Interfaces/Catalogos/ITransportitas.ts b/src/Interfaces/Catalogos/ITransportitas.ts
new file mode 100644
index 0000000..93ba75d
--- /dev/null
+++ b/src/Interfaces/Catalogos/ITransportitas.ts
@@ -0,0 +1,7 @@
+export default interface ITransportistas {
+ id: number;
+ IdUsuario: number;
+ sClave: string;
+ sRazonSocial: string;
+ asignado : number;
+}
\ No newline at end of file
diff --git a/src/Interfaces/Catalogos/IUsuarios.ts b/src/Interfaces/Catalogos/IUsuarios.ts
new file mode 100644
index 0000000..6f64020
--- /dev/null
+++ b/src/Interfaces/Catalogos/IUsuarios.ts
@@ -0,0 +1,11 @@
+export default interface IUsuarios {
+ id: number;
+ Usuario: string;
+ Nombre: string;
+ Contrasena: string;
+ Correo: string;
+ TipoUsuario : number;
+ Activo: number;
+ FechaAlta: string;
+ UsuarioAlta: string;
+}
\ No newline at end of file
diff --git a/src/Interfaces/Corresponsales/ICorresponsalAnticipos.ts b/src/Interfaces/Corresponsales/ICorresponsalAnticipos.ts
new file mode 100644
index 0000000..b3e5773
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalAnticipos.ts
@@ -0,0 +1,15 @@
+export default interface ICorresponsalAnticipos {
+ id: number,
+ idTrafico: number,
+ anticipo: number,
+ moneda: number,
+ concepto: string,
+ solicita?: number,
+ ssolicita?: string,
+ fhSolicita?: string,
+ autoriza?: number,
+ sAutoriza?: string,
+ fhAutoriza?: string,
+ financiado: number,
+ activo?: boolean
+}
\ No newline at end of file
diff --git a/src/Interfaces/Corresponsales/ICorresponsalCatAduanas.ts b/src/Interfaces/Corresponsales/ICorresponsalCatAduanas.ts
new file mode 100644
index 0000000..11e0ae5
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalCatAduanas.ts
@@ -0,0 +1,6 @@
+export default interface ICorresponsalCatAduanas {
+ claveAduana: number,
+ cliente: number,
+ abreviatura: string,
+ aduana: string
+}
\ No newline at end of file
diff --git a/src/Interfaces/Corresponsales/ICorresponsalCatDestinos.ts b/src/Interfaces/Corresponsales/ICorresponsalCatDestinos.ts
new file mode 100644
index 0000000..5466688
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalCatDestinos.ts
@@ -0,0 +1,5 @@
+export default interface ICatDestinos {
+ id: number,
+ cliente: number,
+ destino: string
+}
\ No newline at end of file
diff --git a/src/Interfaces/Corresponsales/ICorresponsalCatMediosEmbarque.ts b/src/Interfaces/Corresponsales/ICorresponsalCatMediosEmbarque.ts
new file mode 100644
index 0000000..315adc9
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalCatMediosEmbarque.ts
@@ -0,0 +1,4 @@
+export default interface ICorresponsalCatMediosEmbarque {
+ id: number,
+ descripcion: string,
+}
\ No newline at end of file
diff --git a/src/Interfaces/Corresponsales/ICorresponsalCatTipoDocumento.ts b/src/Interfaces/Corresponsales/ICorresponsalCatTipoDocumento.ts
new file mode 100644
index 0000000..b67107e
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalCatTipoDocumento.ts
@@ -0,0 +1,7 @@
+export default interface ICorresponsalCatTipoDocumento {
+ id: number,
+ cliente: number,
+ descripcion: string,
+ tipocaptura: number,
+ proceso: number
+}
\ No newline at end of file
diff --git a/src/Interfaces/Corresponsales/ICorresponsalContenedores.ts b/src/Interfaces/Corresponsales/ICorresponsalContenedores.ts
new file mode 100644
index 0000000..03e0e91
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalContenedores.ts
@@ -0,0 +1,8 @@
+export default interface ICorresponsalContenedores {
+ id: number,
+ contenedor: string,
+ idTrafico: number,
+ fSemaforo: string,
+ semaforo: number,
+ activo?: boolean
+}
\ No newline at end of file
diff --git a/src/Interfaces/Corresponsales/ICorresponsalCuentaComplementariaEstatus.ts b/src/Interfaces/Corresponsales/ICorresponsalCuentaComplementariaEstatus.ts
new file mode 100644
index 0000000..9e59f7a
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalCuentaComplementariaEstatus.ts
@@ -0,0 +1,4 @@
+export default interface ICorresponsalCuentaComplementariaStatus {
+ id: number,
+ estatus: string
+}
\ No newline at end of file
diff --git a/src/Interfaces/Corresponsales/ICorresponsalCuentasComplementarias.ts b/src/Interfaces/Corresponsales/ICorresponsalCuentasComplementarias.ts
new file mode 100644
index 0000000..70d48ea
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalCuentasComplementarias.ts
@@ -0,0 +1,9 @@
+export default interface ICorresponsalCuentasComplementarias {
+ id: number,
+ idTrafico: number,
+ idXML: number,
+ archivoXML: string,
+ idPDF : number,
+ archivoPDF: string,
+ estatus: number
+}
\ No newline at end of file
diff --git a/src/Interfaces/Corresponsales/ICorresponsalFacturas.ts b/src/Interfaces/Corresponsales/ICorresponsalFacturas.ts
new file mode 100644
index 0000000..7e51e4e
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalFacturas.ts
@@ -0,0 +1,12 @@
+export default interface ICorresponsalFacturas {
+ id: number;
+ factura: string;
+ idTrafico: number;
+ valorFacturaDls: number;
+ proveedor: number;
+ corresponsal?: number;
+ pedido: string;
+ activo?: boolean;
+ code: number;
+ folioGEMCO: string;
+}
diff --git a/src/Interfaces/Corresponsales/ICorresponsalFacturasTerceros.ts b/src/Interfaces/Corresponsales/ICorresponsalFacturasTerceros.ts
new file mode 100644
index 0000000..6da9e52
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalFacturasTerceros.ts
@@ -0,0 +1,7 @@
+export default interface ICorresponsalTerceros {
+ id: number,
+ factura: string,
+ idProveedor: number,
+ idTrafico: number,
+ activo?: boolean
+}
\ No newline at end of file
diff --git a/src/Interfaces/Corresponsales/ICorresponsalPedimento.ts b/src/Interfaces/Corresponsales/ICorresponsalPedimento.ts
new file mode 100644
index 0000000..3d792be
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalPedimento.ts
@@ -0,0 +1,35 @@
+export default interface ICorresponsalPedimento {
+ id : number,
+ idTrafico : number,
+ aduana : number,
+ costoDiario : number,
+ descripcion : string,
+ destino : number,
+ diasCPPagado : number,
+ embalaje : number,
+ estatus : number,
+ fAlmacenajeInicioGastos : string,
+ fDespacho : string,
+ fechaETA : string | undefined,
+ fEntrada : string,
+ fhEntregaPlanta : string,
+ fhInstrucciones : string,
+ fletes : number,
+ fRevalidacionGuia : string,
+ hawb : string,
+ incoterm : string,
+ lineaTransportistaInternacional : string,
+ mawb : string,
+ montoUSA : number,
+ noGuia : string,
+ observaciones : string,
+ origen : string,
+ otros : number,
+ paqueteriaTransportista : string,
+ pesoNeto : number,
+ preferenciaArancelaria : number,
+ seguros : number,
+ tipoEmbarque : number,
+ totalPagar : number,
+ activo: number
+}
\ No newline at end of file
diff --git a/src/Interfaces/Corresponsales/ICorresponsalPedimentoPartidas.ts b/src/Interfaces/Corresponsales/ICorresponsalPedimentoPartidas.ts
new file mode 100644
index 0000000..85af5b3
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalPedimentoPartidas.ts
@@ -0,0 +1,15 @@
+export default interface ICorresponsalPartidas {
+ id: number,
+ idTrafico: number,
+ partida: number,
+ idFactura: number,
+ factura: string,
+ proveedor: string,
+ descripcionMaterial: string,
+ fraccionArancelaria: string,
+ valorAduana: number,
+ dta: number,
+ igi: number,
+ ieps: number,
+ activo: number
+}
\ No newline at end of file
diff --git a/src/Interfaces/Corresponsales/ICorresponsalRazonesRechazo.ts b/src/Interfaces/Corresponsales/ICorresponsalRazonesRechazo.ts
new file mode 100644
index 0000000..19be291
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalRazonesRechazo.ts
@@ -0,0 +1,3 @@
+export default interface ICorresponsalRazonRechazo {
+ razones: string
+}
\ No newline at end of file
diff --git a/src/Interfaces/Corresponsales/ICorresponsalRectificacionHistorico.ts b/src/Interfaces/Corresponsales/ICorresponsalRectificacionHistorico.ts
new file mode 100644
index 0000000..0b330c3
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalRectificacionHistorico.ts
@@ -0,0 +1,12 @@
+export default interface ICorresponsalRectificacionHistorico {
+ id: number
+ usuario: number
+ idTrafico: number
+ aduana: number
+ patente: number
+ pedimento: number
+ clave: string
+ fechaPago: string
+ fhCreacion: string
+ activo: number
+}
diff --git a/src/Interfaces/Corresponsales/ICorresponsalTrafico.ts b/src/Interfaces/Corresponsales/ICorresponsalTrafico.ts
new file mode 100644
index 0000000..d070beb
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalTrafico.ts
@@ -0,0 +1,43 @@
+export default interface ICorresponsalTrafico {
+ id: number
+ folioGemco: string
+ fechaRegistro?: string
+ idUsuario: number
+ idCliente: number
+ tipoOperacion: number
+ opEntrada: number
+ opSalida: number
+ idCorresponsal: number
+ bultos?: number
+ kilos?: number
+ estatus?: number
+ trafico?: string
+ aduana?: number
+ patente?: number
+ pedimento?: number
+ clave?: string
+ fechaPago?: string
+ tipoCambio?: number
+ valorAduanaMN?: number
+ totalPagado?: number
+ valorFacturaMN?: number
+ cantidadFracciones?: number
+ buque?: string
+ valorFacturaDls?: number
+ descripcionMercancia?: string
+ observaciones?: string
+ fechaDesaduanamiento: string
+ semaforoFiscal?: number
+ noCuenta?: string
+ fechaCuenta?: string
+ tipoMercancia?: number
+ ultimaActualizacion?: string
+ zipgemco?: string
+ zipCorresponsales?: string
+ proceso: number
+ rechazado: number,
+ idTabulador: number,
+ noRecti: number,
+ estatusCode: number,
+ activo?: number
+}
diff --git a/src/Interfaces/Corresponsales/ICorresponsalTraficoContabilidad.ts b/src/Interfaces/Corresponsales/ICorresponsalTraficoContabilidad.ts
new file mode 100644
index 0000000..a45cec2
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalTraficoContabilidad.ts
@@ -0,0 +1,9 @@
+export default interface ICorresponsalesTraficoContabilidad {
+ id: number,
+ idUsuario: number,
+ idTrafico: number,
+ statusProceso: number,
+ fechaRegistro: string,
+ razonRechazo: string
+ tipo: number
+}
\ No newline at end of file
diff --git a/src/Interfaces/Corresponsales/ICorresponsalesCatTiposEmbarque.ts b/src/Interfaces/Corresponsales/ICorresponsalesCatTiposEmbarque.ts
new file mode 100644
index 0000000..a3e0099
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalesCatTiposEmbarque.ts
@@ -0,0 +1,5 @@
+export default interface ICorresponsalCatTiposEmbarque {
+ id: number,
+ cliente: number,
+ descripcion: string
+}
\ No newline at end of file
diff --git a/src/Interfaces/Corresponsales/ICorresponsalesCatTraficoEstatus.ts b/src/Interfaces/Corresponsales/ICorresponsalesCatTraficoEstatus.ts
new file mode 100644
index 0000000..84aa882
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalesCatTraficoEstatus.ts
@@ -0,0 +1,5 @@
+export default interface ICorresponsalesCatTraficoEstatus {
+ id: number,
+ estatus: string,
+ activo: number
+}
\ No newline at end of file
diff --git a/src/Interfaces/Corresponsales/ICorresponsalesGuias.ts b/src/Interfaces/Corresponsales/ICorresponsalesGuias.ts
new file mode 100644
index 0000000..97fcf52
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalesGuias.ts
@@ -0,0 +1,6 @@
+export default interface ICorresponsalGuias {
+ id: number,
+ guia: string,
+ idTrafico: number,
+ activo?: boolean
+}
\ No newline at end of file
diff --git a/src/Interfaces/Corresponsales/ICorresponsalesRectificaciones.ts b/src/Interfaces/Corresponsales/ICorresponsalesRectificaciones.ts
new file mode 100644
index 0000000..074ee82
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalesRectificaciones.ts
@@ -0,0 +1,8 @@
+export default interface ICorresponsalesRectificaciones {
+ id: number,
+ folioGemco: string,
+ fechaRegistro: string,
+ prevRecti: number,
+ nextRecti: number,
+ noRecti: number
+}
\ No newline at end of file
diff --git a/src/Interfaces/Corresponsales/ICorresponsalesZips.ts b/src/Interfaces/Corresponsales/ICorresponsalesZips.ts
new file mode 100644
index 0000000..47d8aeb
--- /dev/null
+++ b/src/Interfaces/Corresponsales/ICorresponsalesZips.ts
@@ -0,0 +1,10 @@
+export default interface ICorresponsalesZips {
+ id: number;
+ idUsuario: number;
+ idTrafico: number;
+ archivo: string;
+ registro: string;
+ clasificacion: number;
+ mode: number;
+ activo: boolean;
+}
\ No newline at end of file
diff --git a/src/Interfaces/Dashboard/DashboardCorresponsales.ts b/src/Interfaces/Dashboard/DashboardCorresponsales.ts
new file mode 100644
index 0000000..372549d
--- /dev/null
+++ b/src/Interfaces/Dashboard/DashboardCorresponsales.ts
@@ -0,0 +1,4 @@
+export default interface DashboardCorresponsales {
+ total: number,
+ descripcion: string
+}
\ No newline at end of file
diff --git a/src/Interfaces/Facturacion/Anexo/IAnexoFacturacionAlen.ts b/src/Interfaces/Facturacion/Anexo/IAnexoFacturacionAlen.ts
new file mode 100644
index 0000000..a99b153
--- /dev/null
+++ b/src/Interfaces/Facturacion/Anexo/IAnexoFacturacionAlen.ts
@@ -0,0 +1,22 @@
+import { string } from 'yup'
+
+export default interface IAnexoFacturacionAlen {
+ sReferencia: string
+ remesa: number
+ entrega: string
+ sNumero: string
+ dFecha: string
+ sEDocument: string
+ valorFactura: number
+ sPedimento: string
+ cruce: string
+ semaforo: string
+ fechaCtaCorresponsal: string
+ honorarios: number
+ maniobras: number
+ validacion: number
+ prevalidacion: number
+ coordinacion: number
+ iva: number
+ totalMN: number
+}
diff --git a/src/Interfaces/Facturacion/Anexo/IAnexoFacturacionMission.ts b/src/Interfaces/Facturacion/Anexo/IAnexoFacturacionMission.ts
new file mode 100644
index 0000000..35b96fc
--- /dev/null
+++ b/src/Interfaces/Facturacion/Anexo/IAnexoFacturacionMission.ts
@@ -0,0 +1,15 @@
+export default interface IAnexoFacturacionMission {
+ sRemesa: number
+ sNumPedimento: string
+ sReferencia: string
+ transportista: string
+ numCaja: string
+ contraprestacion: number
+ cruce: number
+ flete: number
+ otrosServicios: number
+ totComp: number
+ honorarios: number
+ iva: number
+ total: number
+}
diff --git a/src/Interfaces/Facturacion/Anexo/IConsolidadosSinCerrar.ts b/src/Interfaces/Facturacion/Anexo/IConsolidadosSinCerrar.ts
new file mode 100644
index 0000000..4cdea18
--- /dev/null
+++ b/src/Interfaces/Facturacion/Anexo/IConsolidadosSinCerrar.ts
@@ -0,0 +1,5 @@
+export default interface IConsolidadosSinCerrar {
+ trafico: string,
+ cliente: string,
+ fechaApertura: string
+}
\ No newline at end of file
diff --git a/src/Interfaces/IArchivoElectronico.ts b/src/Interfaces/IArchivoElectronico.ts
new file mode 100644
index 0000000..a469a38
--- /dev/null
+++ b/src/Interfaces/IArchivoElectronico.ts
@@ -0,0 +1,7 @@
+export default interface IArchivoElectronico {
+ Referencia: string;
+ PedimentoLargo: string;
+ NoCliente: number;
+ IdUsuario: number;
+ Archivo: string;
+}
\ No newline at end of file
diff --git a/src/Interfaces/IDashboardTotal.ts b/src/Interfaces/IDashboardTotal.ts
new file mode 100644
index 0000000..feee989
--- /dev/null
+++ b/src/Interfaces/IDashboardTotal.ts
@@ -0,0 +1,3 @@
+export default interface IDashboardTotal {
+ total: number
+}
\ No newline at end of file
diff --git a/src/Interfaces/IFotosBodega.ts b/src/Interfaces/IFotosBodega.ts
new file mode 100644
index 0000000..6d28bbc
--- /dev/null
+++ b/src/Interfaces/IFotosBodega.ts
@@ -0,0 +1,11 @@
+export default interface IFotosBodega {
+ id: number;
+ nombre: string | null;
+ registrado: string | null;
+ proceso : number | null;
+ referencia: string | null;
+ creado: string | null;
+ usuario: string | null;
+ comentarios: string | null;
+ activo: number | null;
+}
\ No newline at end of file
diff --git a/src/Interfaces/IPerfilesMenu.tsx b/src/Interfaces/IPerfilesMenu.tsx
new file mode 100644
index 0000000..e74ccfd
--- /dev/null
+++ b/src/Interfaces/IPerfilesMenu.tsx
@@ -0,0 +1,12 @@
+export default interface IPerfilesMenu {
+ id: number;
+ idPerfil: number;
+ itemMenu: number;
+ perfil: string;
+ descripcion: string;
+ padreId: number;
+ posicion: number;
+ url: string;
+ habilitado: number;
+ agrupado: number;
+}
diff --git a/src/Interfaces/IRegister.tsx b/src/Interfaces/IRegister.tsx
new file mode 100644
index 0000000..ff3e744
--- /dev/null
+++ b/src/Interfaces/IRegister.tsx
@@ -0,0 +1,32 @@
+export interface IRegister {
+ id: number;
+ usuario: string;
+ nombre: string;
+ contrasena: string;
+ correo: string;
+ tipoUsuario: number;
+ activo: number;
+ fechaAlta: string;
+ usuarioAlta: number;
+ fechaModifico: string;
+ usuarioModifico: number;
+ fechaElimino: string;
+ usuarioElimino: number;
+ motivoElimino: string;
+ idModulo: number;
+ dept: number;
+ tmercancia: number;
+ fechaUltimaVisita: string;
+ visitas: number;
+ internos: number;
+ permisoEspecial: number;
+ estadoConfiguracion: number;
+ fechaValidacionConf: string;
+ realizoEncuesta: string;
+ encuestaActiva: number;
+ fechaLimiteEncuesta: string;
+ codigoAccesoM: string;
+ tokenAccesoM: string;
+ deviceToken: string;
+ idPerfil: number;
+}
diff --git a/src/Interfaces/IRespuesta.ts b/src/Interfaces/IRespuesta.ts
new file mode 100644
index 0000000..9a423b1
--- /dev/null
+++ b/src/Interfaces/IRespuesta.ts
@@ -0,0 +1,3 @@
+export default interface IRespuesta {
+ respuesta: string
+}
\ No newline at end of file
diff --git a/src/Interfaces/ITokenInfo.ts b/src/Interfaces/ITokenInfo.ts
new file mode 100644
index 0000000..1ae6c8a
--- /dev/null
+++ b/src/Interfaces/ITokenInfo.ts
@@ -0,0 +1,12 @@
+import { SpawnSyncOptionsWithBufferEncoding } from "child_process";
+
+export default interface ITokenInfo {
+ UserId: string;
+ Usuario: string;
+ aud: string;
+ exp: number;
+ iat: string;
+ iss: string;
+ jti: string;
+ sub: string;
+}
\ No newline at end of file
diff --git a/src/Interfaces/IjwtStructure.ts b/src/Interfaces/IjwtStructure.ts
new file mode 100644
index 0000000..e356b0d
--- /dev/null
+++ b/src/Interfaces/IjwtStructure.ts
@@ -0,0 +1,10 @@
+export default interface IjwtStructure {
+ sub: string;
+ jti: string;
+ iat: string;
+ UserId: number;
+ Usuario: string;
+ Departamento: string;
+ UserType: number,
+ Perfil: string
+}
\ No newline at end of file
diff --git a/src/Interfaces/Ilogin.ts b/src/Interfaces/Ilogin.ts
new file mode 100644
index 0000000..da88e08
--- /dev/null
+++ b/src/Interfaces/Ilogin.ts
@@ -0,0 +1,4 @@
+export default interface ILogin {
+ Usuario: string;
+ Contrasena: string;
+}
diff --git a/src/Interfaces/Reportes/IRptArchivoElectronicoOficial.ts b/src/Interfaces/Reportes/IRptArchivoElectronicoOficial.ts
new file mode 100644
index 0000000..5e65574
--- /dev/null
+++ b/src/Interfaces/Reportes/IRptArchivoElectronicoOficial.ts
@@ -0,0 +1,7 @@
+export default interface IRpArchivoElectronicoOficial {
+ referencia: string
+ aduana: number
+ patente: number
+ pedimento: number
+ fechaPago: string
+ }
\ No newline at end of file
diff --git a/src/Interfaces/Reportes/IRptBattery.ts b/src/Interfaces/Reportes/IRptBattery.ts
new file mode 100644
index 0000000..3a38f29
--- /dev/null
+++ b/src/Interfaces/Reportes/IRptBattery.ts
@@ -0,0 +1,7 @@
+export default interface IRptBattery {
+ trailer: string
+ entryDT: string
+ idPallete: string
+ weight: number
+ status: number
+}
\ No newline at end of file
diff --git a/src/Interfaces/Reportes/IRptOperaciones.ts b/src/Interfaces/Reportes/IRptOperaciones.ts
new file mode 100644
index 0000000..6ba05e5
--- /dev/null
+++ b/src/Interfaces/Reportes/IRptOperaciones.ts
@@ -0,0 +1,19 @@
+export default interface RptOperaciones {
+ noCliente: number;
+ trafico: string;
+ fechaAltaTrafico: string;
+ fechaRecepcionFactura: string;
+ patioNuevoLaredo: string;
+ numeroCaja: string;
+ referencia: string;
+ pedimento: string;
+ factura: string;
+ uuid: string;
+ pedido:string;
+ fechaPagoPedimento: string;
+ descripcionMercancia: string;
+ fechaEnvioDODA: string;
+ fechaModulacion: string;
+ resultadoModulacion: string;
+ observaciones: string;
+}
\ No newline at end of file
diff --git a/src/Interfaces/Reportes/IRptOperacionesConsolidadas.ts b/src/Interfaces/Reportes/IRptOperacionesConsolidadas.ts
new file mode 100644
index 0000000..b6cbd18
--- /dev/null
+++ b/src/Interfaces/Reportes/IRptOperacionesConsolidadas.ts
@@ -0,0 +1,32 @@
+export default interface IRptOperacionesConsolidadas {
+ sReferencia: string,
+ sPedimento: string,
+ sClave: string,
+ fechaPago: string,
+ nTipoCambio: number,
+ nPesoBruto: number,
+ paisVendedor: string,
+ paisOrigen: string,
+ numFacturas: string,
+ factura: string,
+ valorFactura: number,
+ fraccion: string,
+ descripcion: string,
+ nClave: string,
+ cantFacturas: number,
+ valorAduana: number,
+ incrementables: number,
+ adValorem: number,
+ dta: number,
+ iva: number,
+ efectivo: number,
+ total: number,
+ destino: number,
+ cruce: string,
+ remitente: string,
+ caja: string,
+ valorComercial: number,
+ aduana: number,
+ patente: number,
+ incotern: string
+}
\ No newline at end of file
diff --git a/src/Interfaces/Reportes/IRptOperacionesDiarias.ts b/src/Interfaces/Reportes/IRptOperacionesDiarias.ts
new file mode 100644
index 0000000..b1e8a70
--- /dev/null
+++ b/src/Interfaces/Reportes/IRptOperacionesDiarias.ts
@@ -0,0 +1,16 @@
+export default interface IRptOperacionesDiarias {
+ sReferencia : string,
+ remesa : number,
+ aduana : number,
+ sNumPedido : string,
+ recidoFact : string,
+ sTransporte : string,
+ sInfoTransp : string,
+ previo : string,
+ sNumeroLargo : string,
+ dFechaFirmaBanco : string,
+ dFechaFinPrimSel : string,
+ nPrimeraSel : string,
+ sNumPedimento : string,
+ sObservaciones : string
+}
\ No newline at end of file
diff --git a/src/Interfaces/Reportes/IRptPedimentosConsolidados.ts b/src/Interfaces/Reportes/IRptPedimentosConsolidados.ts
new file mode 100644
index 0000000..ca6cf86
--- /dev/null
+++ b/src/Interfaces/Reportes/IRptPedimentosConsolidados.ts
@@ -0,0 +1,37 @@
+export default interface IRptPedimentosConsolidados {
+ numeroDeReferencia : string;
+ pedimento: number;
+ fechaPago : string;
+ valorDolares : number;
+ valorAduana : number;
+ claveCliente : number;
+ cliente : string;
+ claveImex : number;
+ imex : string;
+ numeroDeRemesa : number;
+ fechaDeRemesa : string;
+ fechaDeEntrada : string;
+ pesoBruto : number;
+ cantBL : number;
+ pesoGuias : number;
+ pesoMercancia : number;
+ totalBruto : number;
+ eDocument : string;
+ observacion : string;
+ numeroDeFactura : string;
+ valorDolaresFact : number;
+ cantidadFactura : number;
+ patente : number;
+ operacion : string;
+ tipoDeTransporte : string;
+ fechaDeCruce : string;
+ aduanaSeccion : number;
+ fechaPrimeraSeleccion : string;
+ primeraSeleccion : string;
+ descripcionDeMercancia : string;
+ descripcionDelContenedor : string;
+ tipoContenedor : string;
+ numeroDelContenedor : string;
+ umt : string;
+ cantidadTarifa : number;
+}
\ No newline at end of file
diff --git a/src/Interfaces/Reportes/IRptPedimentosPagados.tsx b/src/Interfaces/Reportes/IRptPedimentosPagados.tsx
new file mode 100644
index 0000000..e92afb1
--- /dev/null
+++ b/src/Interfaces/Reportes/IRptPedimentosPagados.tsx
@@ -0,0 +1,50 @@
+export interface IRptPedimentosPagados {
+ referencia: string
+ pedimentoLargo: string
+ aduanaSeccionEntrada: string
+ aduanaSeccionDespacho: string
+ clavePedimento: string
+ regimen: string
+ tipoOperacionDesc: string
+ fechaEntradaPresentacion: string
+ fechadePago: string
+ pesoBruto: number
+ tipodeCambiodePedimento: number
+ valorFacturaME: number
+ valorFacturaDolares: number
+ valorFacturaMonedaNacional: number
+ valorAduana: number
+ embalajes: number
+ fletes: number
+ seguros: number
+ otros: number
+ decrementables: number
+ fletesFactura: number
+ segurosFactura: number
+ embalajesFactura: number
+ otrosFactura: number
+ importeDTAFP1: number
+ importeDTAFP2: number
+ importeADV1: number
+ aDVFP1: number
+ importeADV2: number
+ aDVFP2: number
+ importeIVA1: number
+ iVAFP1: number
+ importeIVA2: number
+ iVAFP2: number
+ importeCC: number
+ importePRV: number
+ ivaprv: number
+ totalPagado: number
+ fechaprimeraSeleccion: string
+ primeraSeleccion: string
+ contenedores: string
+ tipoContenedor: string
+ facturas: string
+ pedidos: string
+ numIntegracionDODA: string
+ numTransaccionDODA: string
+ lineaCaptura: string
+ covesFactura: string
+}
diff --git a/src/Interfaces/Reportes/IRptPedimentosPagadosImpuestos.ts b/src/Interfaces/Reportes/IRptPedimentosPagadosImpuestos.ts
new file mode 100644
index 0000000..a482a88
--- /dev/null
+++ b/src/Interfaces/Reportes/IRptPedimentosPagadosImpuestos.ts
@@ -0,0 +1,29 @@
+export interface IRptPedimentosPagadosImpuestos {
+ referencia: string,
+ pedimentoLargo: string,
+ aduanaSeccionEntrada: string,
+ aduanaSeccionDespacho: string,
+ clavePedimento: string,
+ regimen: string,
+ fechadePago: string,
+ tipodeCambiodePedimento: string,
+ valorFacturaME: string,
+ valorFacturaDolares: number,
+ valorFacturaMonedaNacional: number,
+ valorAduana: number,
+ embalajes: number,
+ fletes: number,
+ seguros: number,
+ otros: number,
+ importeDTAFP1: number,
+ importeDTAFP2: number,
+ importeIGI: number,
+ importeIVA: number,
+ importeCC: number,
+ importePRV: number,
+ ivaprv: number,
+ totalFPEfectivo: number,
+ totalFPOtros: number,
+ totalPagado: number,
+ lineaCaptura: string
+ }
\ No newline at end of file
diff --git a/src/Interfaces/Reportes/RptDetalleAnexo24.tsx b/src/Interfaces/Reportes/RptDetalleAnexo24.tsx
new file mode 100644
index 0000000..82a3785
--- /dev/null
+++ b/src/Interfaces/Reportes/RptDetalleAnexo24.tsx
@@ -0,0 +1,53 @@
+export interface IRptDetalleAnexo24 {
+ // id: number;
+ aduanaSeccionDespacho: string
+ patente: number
+ referencia: string
+ pedimento: string
+ fechaPago: string
+ fechaEntradaPresentacion: string
+ claveDocto: string
+ esRectificacion: string
+ tipoCambio: number
+ valorDls: number
+ valorAduana: number
+ numeroFactura: string
+ fechaFactura: string
+ proveedorFactura: string
+ incrementablesFact: string
+ fraccion: number
+ subdivNICO: string
+ descripcion: string
+ paisOrigen: string
+ paisVendedor: string
+ //paisComprador: string
+ //prevFraccion: string
+ tasaDTA: string
+ tadaIGI: string
+ /*tasaiva: string
+ tasaCC: string
+ valorDTA: string
+ valorIGI: string
+ valorIVA: string
+ valorCC: string
+ vAduanaFracc: string
+ vDlsFracc: string*/
+ numeroParte: string
+ cantidadComercial: string
+ tlPais: string
+ tipoTasa: string
+ unidadComercial: string
+ //secuencial: number
+ valorFacturaItem: number
+ valorComercialPed: number
+ valorFacturaItemMn: number
+ /*totalIncrementables: number
+ referenciaIdSeuPAtAduana: number
+ referenciaIdCliente: number
+ referenciaIdImpExp: number
+ tipo_Operacion: number
+ pedimentoNumero: number
+ pedimentosPagados: number
+ referenciaFechaApertura: string
+ pedimentoFechaPago: string*/
+}
diff --git a/src/Interfaces/Reportes/RptOperacionesRemesa.tsx b/src/Interfaces/Reportes/RptOperacionesRemesa.tsx
new file mode 100644
index 0000000..dda5af3
--- /dev/null
+++ b/src/Interfaces/Reportes/RptOperacionesRemesa.tsx
@@ -0,0 +1,99 @@
+export interface IRptOperacionesRemesa {
+ vinculacion: string;
+ vin: string;
+ valorDolares: number;
+ valorComercialUSDFactura: number;
+ valorComercialUSD: number;
+ valorComercialMNFactura: number;
+ valorAduana: number;
+ umt: string;
+ umc: string;
+ totalBultos: string;
+ tLC: string;
+ tipoOperación: string;
+ tipoOperacion: string;
+ tipodeCambio: string;
+ taxid: string;
+ seguros: string;
+ regimen: string;
+ referenciaIdSucPAtAduana: number;
+ referenciaIdImpExp: number;
+ referenciaIdCliente: number;
+ referenciaFechaApertura: string;
+ referencia: string;
+ rec: string;
+ proveedor: string;
+ prosec: string;
+ preva: string;
+ precioUnitario: string;
+ pesoBruto: string;
+ pedimentosPagados: string;
+ pedimentoNumero: string;
+ pedimentoFechaPago: string;
+ patente: string;
+ paisVendedor: string;
+ paisOrigen: string;
+ pagoennoEfectivo: string;
+ pagoenEfectivo: string;
+ otros: string;
+ observaciones: string;
+ numPedimento: string;
+ numAduana: string;
+ mult: string;
+ monedaFactura: string;
+ mercancía: string;
+ iva: string;
+ isan: string;
+ incrementablesUSD: string;
+ incrementablesMN: string;
+ incoterm: string;
+ impuestos: string;
+ impotros: string;
+ igi: string;
+ ieps: string;
+ id: number;
+ guías: string;
+ fueConsolidado: string;
+ fraccion: string;
+ formaPagoREC: string;
+ formaPagoPREVA: string;
+ formaPagoOTROS: string;
+ formaPagoMULT: string;
+ formaPagoIVA: string;
+ formaPagoISAN: string;
+ formaPagoIGI: string;
+ formaPagoIEPS: string;
+ formaPagoDTI: string;
+ formaPagoDTA: string;
+ formaPagoCNT: string;
+ formaPagoCC: string;
+ fletes: string;
+ firmaElectronica: string;
+ fechaPago: string;
+ fechaFactura: string;
+ fechaEntrada: string;
+ fechadeRevalidacion: string;
+ fechadePrevio: string;
+ fechadeDesaduanamiento: string;
+ factura: string;
+ factorMonedaExtranjera: string;
+ embalajes: string;
+ ejecutivo: string;
+ dti: string;
+ dta: string;
+ direccionProveedor: string;
+ descripcion: string;
+ contenedores: string;
+ cnt: string;
+ cliente: string;
+ clave: string;
+ cc: string;
+ cantidadUMT: number;
+ cantidadUMC: number;
+ cantidaddeUnidades: number;
+ bPagado: string;
+ anticipo: number;
+ agente: string;
+ r1PedimentoOriginal: string;
+ r1ClaveAnterior: string;
+}
diff --git a/src/Interfaces/Utils/IFileManager.ts b/src/Interfaces/Utils/IFileManager.ts
new file mode 100644
index 0000000..5186c25
--- /dev/null
+++ b/src/Interfaces/Utils/IFileManager.ts
@@ -0,0 +1,9 @@
+export default interface IFileManager {
+ id: number,
+ idUsuario: number,
+ proceso: number,
+ nombreArchivo: string,
+ fechaRegistro: string,
+ tags: string,
+ size: number,
+}
\ No newline at end of file
diff --git a/src/Interfaces/Utils/INotificacionesConceptos.ts b/src/Interfaces/Utils/INotificacionesConceptos.ts
new file mode 100644
index 0000000..2562a86
--- /dev/null
+++ b/src/Interfaces/Utils/INotificacionesConceptos.ts
@@ -0,0 +1,5 @@
+export default interface INotificacionesConceptos {
+ id: number,
+ concepto: string,
+ activo: number
+}
\ No newline at end of file
diff --git a/src/Interfaces/Utils/INotificacionesContactos.ts b/src/Interfaces/Utils/INotificacionesContactos.ts
new file mode 100644
index 0000000..1417613
--- /dev/null
+++ b/src/Interfaces/Utils/INotificacionesContactos.ts
@@ -0,0 +1,9 @@
+export default interface INotificacionesContactos {
+ id: number
+ nombre: string
+ puesto: string
+ pais: string
+ celular: string
+ empresa: string
+ activo: number
+}
diff --git a/src/Interfaces/Utils/INotificacionesContactosGrupos.ts b/src/Interfaces/Utils/INotificacionesContactosGrupos.ts
new file mode 100644
index 0000000..de5209b
--- /dev/null
+++ b/src/Interfaces/Utils/INotificacionesContactosGrupos.ts
@@ -0,0 +1,5 @@
+export default interface INotificacionesContactosGrupos {
+ id: number
+ IdContacto: number
+ IdGrupo: number
+}
diff --git a/src/Interfaces/Utils/INotificacionesGrupos.ts b/src/Interfaces/Utils/INotificacionesGrupos.ts
new file mode 100644
index 0000000..66ec55a
--- /dev/null
+++ b/src/Interfaces/Utils/INotificacionesGrupos.ts
@@ -0,0 +1,5 @@
+export default interface INotificacionesGrupos {
+ id: number
+ grupo: string
+ activo?: number
+}
diff --git a/src/Interfaces/Utils/INotificacionesLog.ts b/src/Interfaces/Utils/INotificacionesLog.ts
new file mode 100644
index 0000000..384f6e1
--- /dev/null
+++ b/src/Interfaces/Utils/INotificacionesLog.ts
@@ -0,0 +1,7 @@
+export default interface INotificacionesLog {
+ id: number,
+ envia: string,
+ concepto: string,
+ contactos: string,
+ fhCreacion: string
+}
\ No newline at end of file
diff --git a/src/Interfaces/registroPermisoClientes.tsx b/src/Interfaces/registroPermisoClientes.tsx
new file mode 100644
index 0000000..f7e6e1e
--- /dev/null
+++ b/src/Interfaces/registroPermisoClientes.tsx
@@ -0,0 +1,8 @@
+export interface IregistroPermisoClientes {
+ id: number;
+ IdUsuario: number;
+ ModuloCliente: number;
+ IoE: number;
+ Aduana: number;
+ Patente: number;
+}
diff --git a/src/Interfaces/token.ts b/src/Interfaces/token.ts
new file mode 100644
index 0000000..7b39d28
--- /dev/null
+++ b/src/Interfaces/token.ts
@@ -0,0 +1,3 @@
+export default interface token {
+ token: string;
+}
\ No newline at end of file
diff --git a/src/Services/Auth/Auth.Service.ts b/src/Services/Auth/Auth.Service.ts
new file mode 100644
index 0000000..19b62cb
--- /dev/null
+++ b/src/Services/Auth/Auth.Service.ts
@@ -0,0 +1,39 @@
+import http from "../common/http-common";
+import ILogin from "../../Interfaces/Ilogin"
+import ItemMenuData from "../../Interfaces/Catalogos/IItemMenu";
+import Token from '../../Interfaces/token'
+
+class authDataService {
+ /**
+ *
+ */
+ constructor() {
+ // super();
+ type token = string;
+ type returnData = [ItemMenuData[], Token]
+ }
+
+ /*getAll() {
+ return http.get>("/tutorials");
+ }
+ get(id: string) {
+ return http.get(`/tutorials/${id}`);
+ }*/
+ create(data: ILogin) {
+ return http.post<[ItemMenuData[], Token]>("/Auth", data);
+ }
+ /*
+ update(data: ITutorialData, id: any) {
+ return http.put(`/tutorials/${id}`, data);
+ }
+ delete(id: any) {
+ return http.delete(`/tutorials/${id}`);
+ }
+ deleteAll() {
+ return http.delete(`/tutorials`);
+ }
+ findByTitle(title: string) {
+ return http.get>(`/tutorials?title=${title}`);
+ }*/
+}
+export default new authDataService();
\ No newline at end of file
diff --git a/src/Services/Catalogos/ArchivoElectronico.Services.ts b/src/Services/Catalogos/ArchivoElectronico.Services.ts
new file mode 100644
index 0000000..b24b781
--- /dev/null
+++ b/src/Services/Catalogos/ArchivoElectronico.Services.ts
@@ -0,0 +1,60 @@
+import DTOAEPeriodo from "../../DTO/DTOAEPeriodo";
+import DTOgetArchivosPorReferencia from "../../DTO/DTOgetArchivosPorReferencia";
+import DTOgetThesePedimentos from "../../DTO/DTOgetThesePedimentos";
+import IArchivoElectronico from "../../Interfaces/IArchivoElectronico";
+import IFotosBodega from "../../Interfaces/IFotosBodega";
+import IRpArchivoElectronicoOficial from "../../Interfaces/Reportes/IRptArchivoElectronicoOficial";
+import http from "../common/http-common";
+
+
+class ArchivoElectronicoDataService {
+ getFile(data: IArchivoElectronico) {
+ return http.get(`/ArchivoElectronico/getFile`, { params: data })
+ }
+ getFileList(data: IArchivoElectronico) {
+ return http.get(`/ArchivoElectronico/getFileList`, { params: data })
+ }
+ getInfoPicturesFromWarehouse(data: IFotosBodega) {
+ return http.get>(`/ArchivoElectronico/getLogFotosBodega?Referencia=${data.referencia}`);
+ }
+ getPictureContent(Archivo : string) {
+ return http.get>(`/ArchivoElectronico/getPictureContent?Nombre=${Archivo}`);
+ }
+ getTheseReferencesByPeriod(data : DTOAEPeriodo) {
+ return http.post("/ArchivoElectronico/downloadReferencesByPeriod", data, {responseType: 'arraybuffer'})
+ .then(function (response) {
+ return response
+ })
+ .catch(function (error) {
+ console.log(error)
+ })
+ }
+ getTheseFilesByReferences(data : DTOgetArchivosPorReferencia) {
+ return http.post("/ArchivoElectronico/getFilesByReference", data, {responseType: 'arraybuffer'})
+ .then(function (response) {
+ return response
+ })
+ .catch(function (error) {
+ console.log(error)
+ })
+ }
+ getThesePDFs(data : DTOgetThesePedimentos) {
+ return http.post("/ArchivoElectronico/downloadPDFs", data, {responseType: 'arraybuffer'})
+ .then(function (response) {
+ return response
+ })
+ .catch(function (error) {
+ console.log(error)
+ })
+ }
+ getPDF(data: IArchivoElectronico) {
+ return http.get(`/ArchivoElectronico/getFile?Referencia=${data.Referencia}&PedimentoLargo=${data.PedimentoLargo}&NoCliente=${data.NoCliente}&IdUsuario=${data.IdUsuario}`, {responseType: 'arraybuffer'})
+ .then(function (response) {
+ return response
+ })
+ .catch(function (error) {
+ console.log(error)
+ })
+ }
+ }
+ export default new ArchivoElectronicoDataService();
\ No newline at end of file
diff --git a/src/Services/Catalogos/Clientes.Services.ts b/src/Services/Catalogos/Clientes.Services.ts
new file mode 100644
index 0000000..4aeadd9
--- /dev/null
+++ b/src/Services/Catalogos/Clientes.Services.ts
@@ -0,0 +1,35 @@
+import http from "../common/http-common";
+import IClientes from "../../Interfaces/Catalogos/IClientes";
+import { IPerfil } from "../../Interfaces/Catalogos/IPerfiles";
+import ITransportistas from '../../Interfaces/Catalogos/ITransportitas'
+import DTOUsuarioCliente from '../../DTO/DTOUsuarioCliente'
+import DTOasignaClienteProveedor from "../../DTO/DTOasignaClienteProveedor";
+import DTOClienteTransportista from "../../DTO/DTOClienteTransportita";
+import { IRegister } from "../../Interfaces/IRegister";
+
+
+class ClientesDataService {
+ /**
+ *
+ */
+ constructor() {
+ type returnData = [IClientes[]]
+ }
+
+ getAllClientes(id:number) {
+ return http.get(`/Clientes/getAllClientes?id=${id}`);
+ }
+ getUsuariosAsignados(id: number) {
+ return http.get(`/Clientes/getClientesAsignados?id=${id}`);
+ }
+ create(data: DTOUsuarioCliente) {
+ return http.post("/Clientes/addCliente", data);
+ }
+ asignaClienteProveedor(data:DTOasignaClienteProveedor) {
+ return http.post("/Clientes/asignaClienteProveedor", data);
+ }
+ asignaClienteTransportista(data:DTOClienteTransportista) {
+ return http.post("/Clientes/asignaClienteTransportista", data);
+ }
+}
+export default new ClientesDataService();
\ No newline at end of file
diff --git a/src/Services/Catalogos/Corresponsales.Services.ts b/src/Services/Catalogos/Corresponsales.Services.ts
new file mode 100644
index 0000000..d86653e
--- /dev/null
+++ b/src/Services/Catalogos/Corresponsales.Services.ts
@@ -0,0 +1,43 @@
+import http from "../common/http-common";
+import ICatCorresponsales from '../../Interfaces/Catalogos/ICatCorresponsales'
+import ICorresponsalFacturas from "../../Interfaces/Corresponsales/ICorresponsalFacturas";
+import ICorresponsalesZips from "../../Interfaces/Corresponsales/ICorresponsalesZips";
+
+
+class CorresponsalesDataService {
+ // Catalogo de Corresponsales
+ getAll() {
+ return http.get(`/Catalogos/Corresponsales/getAll`);
+ }
+ getAllFormated() {
+ return http.get(`/Catalogos/Corresponsales/getAllFormated`);
+ }
+ Append(data: ICatCorresponsales) {
+ return http.post("/Catalogos/Corresponsales/Append", data);
+ }
+ Delete(id: number) {
+ return http.delete(`/Catalogos/Corresponsales/Delete/${id}`);
+ }
+
+ /* // Corresponales: Archivos ZIP
+ CorresponsalesZipLog(data: ICorresponsalesZips) {
+ return http.post("/Corresponsales/CorresponsalesZipLog", data);
+ }
+ getCorresponsalesZipFiles(idTrafico: number) {
+ return http.get(`/Corresponsales/getCorresponsalesZipFiles?idTrafico=${idTrafico}`);
+ }
+ getZIPContent(data : ICorresponsalesZips) {
+ return http.get(`/Corresponsales/getCorresponsalesZipFileContent?Archivo=${data.archivo}`, {responseType: 'arraybuffer'})
+ .then(function (response) {
+ return response
+ })
+ .catch(function (error) {
+ console.log(error)
+ })
+ }
+ DeleteCorresponsalesZipFile(id: number) {
+ return http.delete(`/Corresponsales/DeleteCorresponsalesZipFile/${id}`);
+ } */
+
+}
+export default new CorresponsalesDataService();
\ No newline at end of file
diff --git a/src/Services/Catalogos/PerfilesMenu.Services.ts b/src/Services/Catalogos/PerfilesMenu.Services.ts
new file mode 100644
index 0000000..6f3d70b
--- /dev/null
+++ b/src/Services/Catalogos/PerfilesMenu.Services.ts
@@ -0,0 +1,51 @@
+import http from '../common/http-common'
+import ILogin from '../../Interfaces/Ilogin'
+import ItemMenuData from '../../Interfaces/Catalogos/IItemMenu'
+import IPerfilesMenu from '../../Interfaces/IPerfilesMenu'
+import { IPerfil } from '../../Interfaces/Catalogos/IPerfiles'
+import ITransportista from '../../Interfaces/Catalogos/ITransportitas'
+import IProveedores from '../../Interfaces/Catalogos/IProveedores'
+import DTOPerfilCreate from '../../DTO/DTOPerfilCreate'
+import DTOItemMenuPerfil from '../../DTO/DTOItemMenuPerfil'
+import IItemMenu from '../../Interfaces/Catalogos/IItemMenu'
+//import DTOasignaClienteProveedor from '../DTO/DTOasignaClienteProveedor'
+
+class PerfilesMenuService {
+ /**
+ *
+ */
+ constructor() {
+ // super();
+ type token = string
+ type returnData = [IPerfilesMenu[]]
+ }
+
+ getAllPerfiles() {
+ return http.get('/Perfiles/getPerfiles')
+ }
+ getMenu() {
+ return http.get('/Perfiles/getMenu')
+ }
+ getPerfilMenuById(id: number) {
+ return http.get(`/Perfiles/getPerfilMenuById?id=${id}`)
+ }
+ getAllPerfilesMenu() {
+ return http.get('/Perfiles/getAllPerfilesMenu')
+ }
+ getAllTransportitas(id: number) {
+ return http.get(`/Perfiles/getAllTransportistas?id=${id}`)
+ }
+ getAllProveedores(id: number) {
+ return http.get(`/Perfiles/getAllProveedores/?id=${id}`)
+ }
+ createItemMenu(data: IItemMenu) {
+ return http.post<[IItemMenu]>('/Perfiles/createItemMenu', data)
+ }
+ createPerfil(data: DTOPerfilCreate) {
+ return http.post<[DTOPerfilCreate[]]>('/Perfiles/createPerfil', data)
+ }
+ toggleItemMenu(data: DTOItemMenuPerfil) {
+ return http.post<[DTOItemMenuPerfil[]]>('/Perfiles/asignaItemMenu', data)
+ }
+}
+export default new PerfilesMenuService()
diff --git a/src/Services/Catalogos/Proveedores.Services.ts b/src/Services/Catalogos/Proveedores.Services.ts
new file mode 100644
index 0000000..f73888d
--- /dev/null
+++ b/src/Services/Catalogos/Proveedores.Services.ts
@@ -0,0 +1,18 @@
+import http from "../common/http-common";
+import ICatProveedores from "../../Interfaces/Catalogos/ICatProveedores";
+
+
+class ProveedoresDataService {
+
+ getAll(Clasificacion: number) {
+ return http.get(`/Catalogos/Corresponsales/Proveedores/getAll?Clasificacion=${Clasificacion}`);
+ }
+ Append(data: ICatProveedores) {
+ return http.post("/Catalogos/Corresponsales/Proveedores/Append", data);
+ }
+ Delete(id: number) {
+ return http.delete(`/Catalogos/Corresponsales/Proveedores/Delete/${id}`);
+ }
+
+}
+export default new ProveedoresDataService();
\ No newline at end of file
diff --git a/src/Services/Catalogos/Usuarios.Services.ts b/src/Services/Catalogos/Usuarios.Services.ts
new file mode 100644
index 0000000..ed0559c
--- /dev/null
+++ b/src/Services/Catalogos/Usuarios.Services.ts
@@ -0,0 +1,49 @@
+import http from "../common/http-common";
+import { IRegister } from "../../Interfaces/IRegister";
+import DTOUsuariosShort from "../../DTO/DTOUsuariosShort";
+import DTOClonarUsuario from "../../DTO/DTOClonarUsuario";
+import DTOUsuario from "../../DTO/DTOUsuario";
+
+
+class usuariosService {
+ constructor() {
+ }
+ validate() {
+ return http.get("/Auth/validate");
+ }
+ getAllUsuarios() {
+ return http.get("/Usuarios/getAllUsuarios");
+ }
+ getAllUsuariosShort() {
+ return http.get("/Usuarios/getAllUsuariosShort");
+ }
+ create(data: IRegister) {
+ return http.post<[IRegister[]]>("/Usuarios/createUser", data);
+ }
+ clonarUsuario(data: DTOClonarUsuario) {
+ return http.post<[DTOClonarUsuario[]]>("/Usuarios/clonarUsuario", data);
+ }
+ resetPassword(data: DTOUsuario) {
+ return http.post("/Usuarios/resetPassword", data);
+ }
+
+ /* get(id: string) {
+ return http.get(`/tutorials/${id}`);
+ }
+ create(data: ILogin) {
+ return http.post<[ItemMenuData[]]>("/Auth", data);
+ }
+ update(data: ITutorialData, id: any) {
+ return http.put(`/tutorials/${id}`, data);
+ }
+ delete(id: any) {
+ return http.delete(`/tutorials/${id}`);
+ }
+ deleteAll() {
+ return http.delete(`/tutorials`);
+ }
+ findByTitle(title: string) {
+ return http.get>(`/tutorials?title=${title}`);
+ }*/
+}
+export default new usuariosService();
\ No newline at end of file
diff --git a/src/Services/Contabilidad/Contabilidad.Corresponsalias.Services.ts b/src/Services/Contabilidad/Contabilidad.Corresponsalias.Services.ts
new file mode 100644
index 0000000..39ab5de
--- /dev/null
+++ b/src/Services/Contabilidad/Contabilidad.Corresponsalias.Services.ts
@@ -0,0 +1,18 @@
+import http from '../common/http-common'
+import ICorresponsalesTraficoContabilidad from '../../Interfaces/Corresponsales/ICorresponsalTraficoContabilidad'
+import ICorresponsalRazonRechazo from '../../Interfaces/Corresponsales/ICorresponsalRazonesRechazo'
+
+class Contabilidad_Corresponsales_DataService {
+ Get(idTrafico: number, tipo: number) {
+ return http.get(
+ `/Contabilidad/Corresponsales/ContabilidadTrafico/Get?idTrafico=${idTrafico}&tipo=${tipo}`
+ )
+ }
+ Append(data: ICorresponsalesTraficoContabilidad) {
+ return http.post(
+ '/Contabilidad/Corresponsales/ContabilidadTrafico/Validacion',
+ data
+ )
+ }
+}
+export default new Contabilidad_Corresponsales_DataService()
diff --git a/src/Services/Corresponsalias/Corresponsales.Anticipos.Services.ts b/src/Services/Corresponsalias/Corresponsales.Anticipos.Services.ts
new file mode 100644
index 0000000..6948adf
--- /dev/null
+++ b/src/Services/Corresponsalias/Corresponsales.Anticipos.Services.ts
@@ -0,0 +1,22 @@
+import http from "../common/http-common";
+import ICorresponsalAnticipos from "../../Interfaces/Corresponsales/ICorresponsalAnticipos";
+import DTOAnticiposAutoriza from "../../DTO/Corresponsales/DTOAnticiposAutoriza";
+
+class CorresponsalesDataService {
+
+ Append(data: ICorresponsalAnticipos) {
+ return http.post("/Corresponsalias/Anticipos/Append", data);
+ }
+ getAll(idTrafico: number) {
+ return http.get(`/Corresponsalias/Anticipos/get?idTrafico=${idTrafico}`);
+ }
+ Delete(id: number) {
+ return http.delete(`/Corresponsalias/Anticipos/Delete/${id}`);
+ }
+ Autoriza(data: DTOAnticiposAutoriza) {
+ return http.post("/Corresponsalias/Anticipos/Autoriza", data);
+ }
+
+
+}
+export default new CorresponsalesDataService();
\ No newline at end of file
diff --git a/src/Services/Corresponsalias/Corresponsales.CatAduanas.Services.ts b/src/Services/Corresponsalias/Corresponsales.CatAduanas.Services.ts
new file mode 100644
index 0000000..e98d437
--- /dev/null
+++ b/src/Services/Corresponsalias/Corresponsales.CatAduanas.Services.ts
@@ -0,0 +1,11 @@
+import http from "../common/http-common";
+import ICorresponsalCatAduanas from "../../Interfaces/Corresponsales/ICorresponsalCatAduanas";
+
+class CorresponsalesDataService {
+
+ getAll(idCliente: number) {
+ return http.get(`/Corresponsalias/CatAduanas/GetAll?idCliente=${idCliente}`);
+ }
+
+}
+export default new CorresponsalesDataService();
\ No newline at end of file
diff --git a/src/Services/Corresponsalias/Corresponsales.CatDestinos.Services.ts b/src/Services/Corresponsalias/Corresponsales.CatDestinos.Services.ts
new file mode 100644
index 0000000..a67c1be
--- /dev/null
+++ b/src/Services/Corresponsalias/Corresponsales.CatDestinos.Services.ts
@@ -0,0 +1,11 @@
+import http from "../common/http-common";
+import ICorresponsalCatDestinos from "../../Interfaces/Corresponsales/ICorresponsalCatDestinos";
+
+class CorresponsalesDataService {
+
+ getAll(idCliente: number) {
+ return http.get(`/Corresponsalias/CatDestinos/GetAll?idCliente=${idCliente}`);
+ }
+
+}
+export default new CorresponsalesDataService();
\ No newline at end of file
diff --git a/src/Services/Corresponsalias/Corresponsales.CatMediosEmbarque.Services.ts b/src/Services/Corresponsalias/Corresponsales.CatMediosEmbarque.Services.ts
new file mode 100644
index 0000000..7e05bd2
--- /dev/null
+++ b/src/Services/Corresponsalias/Corresponsales.CatMediosEmbarque.Services.ts
@@ -0,0 +1,11 @@
+import http from "../common/http-common";
+import ICorresponsalCatMediosEmbarque from "../../Interfaces/Corresponsales/ICorresponsalCatMediosEmbarque";
+
+class CorresponsalesDataService {
+
+ getAll() {
+ return http.get(`/Corresponsalias/CatMediosEmbarques/GetAll`);
+ }
+
+}
+export default new CorresponsalesDataService();
\ No newline at end of file
diff --git a/src/Services/Corresponsalias/Corresponsales.CatTiposEmbarque.Services.ts b/src/Services/Corresponsalias/Corresponsales.CatTiposEmbarque.Services.ts
new file mode 100644
index 0000000..354a23b
--- /dev/null
+++ b/src/Services/Corresponsalias/Corresponsales.CatTiposEmbarque.Services.ts
@@ -0,0 +1,11 @@
+import http from "../common/http-common";
+import ICorresponsalCatTiposEmbarque from "../../Interfaces/Corresponsales/ICorresponsalesCatTiposEmbarque";
+
+class CorresponsalesDataService {
+
+ getAll() {
+ return http.get(`/Corresponsalias/CatTiposEmbarque/GetAll`);
+ }
+
+}
+export default new CorresponsalesDataService();
\ No newline at end of file
diff --git a/src/Services/Corresponsalias/Corresponsales.Contenedores.Services.ts b/src/Services/Corresponsalias/Corresponsales.Contenedores.Services.ts
new file mode 100644
index 0000000..d37462f
--- /dev/null
+++ b/src/Services/Corresponsalias/Corresponsales.Contenedores.Services.ts
@@ -0,0 +1,16 @@
+import http from "../common/http-common";
+import ICorresponsalContenedores from "../../Interfaces/Corresponsales/ICorresponsalContenedores";
+import IRespuesta from "../../Interfaces/IRespuesta";
+
+class CorresponsalesDataService {
+ getAll(idTrafico: number) {
+ return http.get(`/Corresponsalias/Contenedores/getAll?idTrafico=${idTrafico}`);
+ }
+ Append(data: ICorresponsalContenedores) {
+ return http.post("/Corresponsalias/Contenedores/Append", data);
+ }
+ Delete(id: number) {
+ return http.delete(`/Corresponsalias/Contenedores/Delete/${id}`);
+ }
+}
+export default new CorresponsalesDataService();
\ No newline at end of file
diff --git a/src/Services/Corresponsalias/Corresponsales.CuentasComplementarias.Services.ts b/src/Services/Corresponsalias/Corresponsales.CuentasComplementarias.Services.ts
new file mode 100644
index 0000000..30896cb
--- /dev/null
+++ b/src/Services/Corresponsalias/Corresponsales.CuentasComplementarias.Services.ts
@@ -0,0 +1,36 @@
+import http from "../common/http-common";
+import ICorresponsalCuentasComplementarias from "../../Interfaces/Corresponsales/ICorresponsalCuentasComplementarias";
+import ICorresponsalCuentasComplementariasEstatus from "../../Interfaces/Corresponsales/ICorresponsalCuentaComplementariaEstatus";
+import DTOCorresponsalCuentaComplementaria from "../../DTO/Corresponsales/DTOCuentaComplementaria";
+import DTOCuentaComplementariaEstatus from "../../DTO/Corresponsales/DTOCuentaComplementariaEstatus";
+import DTOLogCorresponsalComplementariaEstatus from "../../DTO/Corresponsales/DTOLogCorresponsalComplementariaEstatus";
+
+class CorresponsalesDataService {
+ url = '/Corresponsalias/CuentasComplementarias/'
+
+ Append(data: DTOCorresponsalCuentaComplementaria) {
+ return http.post(this.url+"Append", data);
+ }
+ Get(idTrafico: number) {
+ return http.get(this.url+`Get?idTrafico=${idTrafico}`);
+ }
+ AppendEstatus(data: ICorresponsalCuentasComplementariasEstatus) {
+ return http.post(this.url+"AppendEstatus", data);
+ }
+ GetAllEstatus() {
+ return http.get(this.url+`GetEstatus`);
+ }
+ /* Delete(id: number) {
+ return http.delete(`/Corresponsalias/Anticipos/Delete/${id}`);
+ } */
+ ChangeStatus(data: DTOCuentaComplementariaEstatus) {
+ return http.post(this.url+"ChangeEstatus", data);
+ }
+ GetLogEstatus(id: number) {
+ return http.get(this.url+`GetLogEstatus?id=${id}`);
+ }
+ ClearFile(idCuenta: number, witchFile: number) {
+ return http.put(this.url+`ClearFile/${idCuenta}/${witchFile}`);
+ }
+}
+export default new CorresponsalesDataService();
\ No newline at end of file
diff --git a/src/Services/Corresponsalias/Corresponsales.Facturas.Services.ts b/src/Services/Corresponsalias/Corresponsales.Facturas.Services.ts
new file mode 100644
index 0000000..f112cb3
--- /dev/null
+++ b/src/Services/Corresponsalias/Corresponsales.Facturas.Services.ts
@@ -0,0 +1,16 @@
+import http from "../common/http-common";
+import ICorresponsalFacturas from "../../Interfaces/Corresponsales/ICorresponsalFacturas";
+import IRespuesta from "../../Interfaces/IRespuesta";
+
+class Corresponsales_Facturas_DataService {
+ getAll(idTrafico: number) {
+ return http.get(`/Corresponsalias/Facturas/getAll/?idTrafico=${idTrafico}`);
+ }
+ Append(data: ICorresponsalFacturas) {
+ return http.post("/Corresponsalias/Facturas/Append", data);
+ }
+ Delete(id: number) {
+ return http.delete(`/Corresponsalias/Facturas/Delete/${id}`);
+ }
+}
+export default new Corresponsales_Facturas_DataService();
\ No newline at end of file
diff --git a/src/Services/Corresponsalias/Corresponsales.FacturasTerceros.services.ts b/src/Services/Corresponsalias/Corresponsales.FacturasTerceros.services.ts
new file mode 100644
index 0000000..e6b58a0
--- /dev/null
+++ b/src/Services/Corresponsalias/Corresponsales.FacturasTerceros.services.ts
@@ -0,0 +1,17 @@
+import http from "../common/http-common";
+import ICorresponsalFacturasTerceros from "../../Interfaces/Corresponsales/ICorresponsalFacturasTerceros";
+import IRespuesta from "../../Interfaces/IRespuesta";
+import DTOCorresponsalFacturasTerceros from "../../DTO/Corresponsales/DTOCorresponsalFacturasTerceros";
+
+class Corresponsales_FacturasTerceros_DataService {
+ getAll(idTrafico: number) {
+ return http.get(`/Corresponsalias/FacturasTerceros/getAll?idTrafico=${idTrafico}`);
+ }
+ Append(data: ICorresponsalFacturasTerceros) {
+ return http.post("/Corresponsalias/FacturasTerceros/Append", data);
+ }
+ Delete(id: number) {
+ return http.delete(`/Corresponsalias/FacturasTerceros/Delete/${id}`);
+ }
+}
+export default new Corresponsales_FacturasTerceros_DataService();
\ No newline at end of file
diff --git a/src/Services/Corresponsalias/Corresponsales.Guias.Services.ts b/src/Services/Corresponsalias/Corresponsales.Guias.Services.ts
new file mode 100644
index 0000000..af92617
--- /dev/null
+++ b/src/Services/Corresponsalias/Corresponsales.Guias.Services.ts
@@ -0,0 +1,16 @@
+import http from "../common/http-common";
+import ICorresponsalesGuias from "../../Interfaces/Corresponsales/ICorresponsalesGuias";
+import IRespuesta from "../../Interfaces/IRespuesta";
+
+class CorresponsalesGuiasDataService {
+ getAll(idTrafico: number) {
+ return http.get(`/Corresponsalias/Guias/getAll?idTrafico=${idTrafico}`);
+ }
+ Append(data: ICorresponsalesGuias) {
+ return http.post("/Corresponsalias/Guias/Append", data);
+ }
+ Delete(id: number) {
+ return http.delete(`/Corresponsalias/Guias/Delete/${id}`);
+ }
+}
+export default new CorresponsalesGuiasDataService();
\ No newline at end of file
diff --git a/src/Services/Corresponsalias/Corresponsales.Precuenta.Services.ts b/src/Services/Corresponsalias/Corresponsales.Precuenta.Services.ts
new file mode 100644
index 0000000..3eff6ac
--- /dev/null
+++ b/src/Services/Corresponsalias/Corresponsales.Precuenta.Services.ts
@@ -0,0 +1,16 @@
+import http from "../common/http-common";
+import IRespuesta from "../../Interfaces/IRespuesta";
+import ITabuladorConceptos from "../../Interfaces/Catalogos/ITabuladorConceptos";
+
+class Corresponsales_Precuenta_DataService {
+ GetAll(id: number, IdTrafico: number) {
+ return http.get(`/Corresponsalias/Precuenta/getAll?id=${id}&idTrafico=${IdTrafico}`);
+ }
+ ChangeStatus(id: number) {
+ return http.delete(`/Corresponsalias/Precuenta/ChangeStatus/${id}`);
+ }
+ Append(id: number, IdTrafico: number) {
+ return http.put(`/Corresponsalias/Precuenta/Append/${id}/${IdTrafico}`);
+ }
+}
+export default new Corresponsales_Precuenta_DataService();
\ No newline at end of file
diff --git a/src/Services/Corresponsalias/Corresponsales.Tabuladores.Detalle.Sevices.ts b/src/Services/Corresponsalias/Corresponsales.Tabuladores.Detalle.Sevices.ts
new file mode 100644
index 0000000..1527a15
--- /dev/null
+++ b/src/Services/Corresponsalias/Corresponsales.Tabuladores.Detalle.Sevices.ts
@@ -0,0 +1,20 @@
+import http from "../common/http-common";
+import IRespuesta from "../../Interfaces/IRespuesta";
+import DTOConceptos from "../../DTO/Utils/DTOConceptos";
+import ITabuladorConceptos from "../../Interfaces/Catalogos/ITabuladorConceptos";
+
+class Corresponsales_Tabuladores_Detalles_DataService {
+ GetDetailByIdTab(id: number) {
+ return http.get(`/Catalogos/TabuladorDetalle/getDetailByIdTab?id=${id}`);
+ }
+ Append(data: ITabuladorConceptos) {
+ return http.post("/Catalogos/TabuladorDetalle/Append", data);
+ }
+ Delete(id: number) {
+ return http.delete(`/Catalogos/TabuladorDetalle/Delete/${id}`);
+ }
+ getAllConcepts() {
+ return http.get(`/Catalogos/TabuladorDetalle/Conceptos/getAllConcepts`);
+ }
+}
+export default new Corresponsales_Tabuladores_Detalles_DataService();
\ No newline at end of file
diff --git a/src/Services/Corresponsalias/Corresponsales.Tabuladores.Services.ts b/src/Services/Corresponsalias/Corresponsales.Tabuladores.Services.ts
new file mode 100644
index 0000000..a0473c9
--- /dev/null
+++ b/src/Services/Corresponsalias/Corresponsales.Tabuladores.Services.ts
@@ -0,0 +1,23 @@
+import http from "../common/http-common";
+import ITabulador from "../../Interfaces/Catalogos/ITabulador";
+import IRespuesta from "../../Interfaces/IRespuesta";
+
+
+class Corresponsales_Tabuladores_DataService {
+ Get(id: number) {
+ return http.get(`/Catalogos/Tabulador/get?id=${id}`);
+ }
+ GetAll() {
+ return http.get(`/Catalogos/Tabulador/getAll?id=0&IdCliente=0`);
+ }
+ GetByCustomer(IdCliente: number) {
+ return http.get(`/Catalogos/Tabulador/getAll?IdCliente=${IdCliente}`);
+ }
+ Append(data: ITabulador) {
+ return http.post("/Catalogos/Tabulador/Append", data);
+ }
+ Delete(id: number) {
+ return http.delete(`/Catalogos/Tabulador/Delete/${id}`);
+ }
+}
+export default new Corresponsales_Tabuladores_DataService();
\ No newline at end of file
diff --git a/src/Services/Corresponsalias/Corresponsales.Trafico.Pedimento.Partidas.Services.ts b/src/Services/Corresponsalias/Corresponsales.Trafico.Pedimento.Partidas.Services.ts
new file mode 100644
index 0000000..d76cf6c
--- /dev/null
+++ b/src/Services/Corresponsalias/Corresponsales.Trafico.Pedimento.Partidas.Services.ts
@@ -0,0 +1,18 @@
+import http from "../common/http-common";
+import ICorresponsalPartidas from "../../Interfaces/Corresponsales/ICorresponsalPedimentoPartidas";
+import IRespuesta from "../../Interfaces/IRespuesta";
+
+class CorresponsalesDataService {
+
+ Append(data: ICorresponsalPartidas) {
+ return http.post("/Corresponsalias/PedimentoPartida/Append", data);
+ }
+ GetAll(idTrafico: number) {
+ return http.get(`/Corresponsalias/PedimentoPartida/GetAll?idTrafico=${idTrafico}`);
+ }
+ Delete(id: number) {
+ return http.delete(`/Corresponsalias/PedimentoPartida/Delete/${id}`);
+ }
+
+}
+export default new CorresponsalesDataService();
\ No newline at end of file
diff --git a/src/Services/Corresponsalias/Corresponsales.Trafico.Pedimento.Services.ts b/src/Services/Corresponsalias/Corresponsales.Trafico.Pedimento.Services.ts
new file mode 100644
index 0000000..e1fee98
--- /dev/null
+++ b/src/Services/Corresponsalias/Corresponsales.Trafico.Pedimento.Services.ts
@@ -0,0 +1,17 @@
+import http from "../common/http-common";
+import ICorresponsalPedimento from "../../Interfaces/Corresponsales/ICorresponsalPedimento";
+
+class CorresponsalesDataService {
+
+ Append(data: ICorresponsalPedimento) {
+ return http.post("/Corresponsalias/Pedimento/Append", data);
+ }
+ Get(idTrafico: number) {
+ return http.get(`/Corresponsalias/Pedimento/Get?IdTrafico=${idTrafico}`);
+ }
+ Delete(id: number) {
+ return http.delete(`/Corresponsalias/Pedimento/Delete/${id}`);
+ }
+
+}
+export default new CorresponsalesDataService();
\ No newline at end of file
diff --git a/src/Services/Corresponsalias/Corresponsales.Trafico.Services.ts b/src/Services/Corresponsalias/Corresponsales.Trafico.Services.ts
new file mode 100644
index 0000000..75b3649
--- /dev/null
+++ b/src/Services/Corresponsalias/Corresponsales.Trafico.Services.ts
@@ -0,0 +1,36 @@
+import http from "../common/http-common";
+import ICorresponsalTrafico from "../../Interfaces/Corresponsales/ICorresponsalTrafico";
+import ICorresponsalesRectificaciones from "../../Interfaces/Corresponsales/ICorresponsalesRectificaciones";
+import ICorresponsalesCatTraficoEstatus from "../../Interfaces/Corresponsales/ICorresponsalesCatTraficoEstatus";
+import DTOTraficoCompleto from "../../DTO/Corresponsales/DTOTraficoCompleto";
+import IRespuesta from "../../Interfaces/IRespuesta";
+import ICorresponsalRectificacionHistorico from "../../Interfaces/Corresponsales/ICorresponsalRectificacionHistorico";
+import DTORectificacionHistorico from "../../DTO/Corresponsales/DTORectificacionHistorico";
+
+class Corresponsales_Trafico_DataService {
+ GetAll(id: number) {
+ return http.get(`/Corresponsalias/Traficos/Get?id=${id}`);
+ }
+ Append(data: ICorresponsalTrafico) {
+ return http.post("/Corresponsalias/Traficos/Append", data);
+ }
+ GetRectificaciones(id: number) {
+ return http.get(`/Corresponsalias/Traficos/GetRectificaciones?id=${id}`);
+ }
+ AddRectificacion(id: number) {
+ return http.put(`/Corresponsalias/Traficos/AddRectificacion/${id}`);
+ }
+ GetCorresponsalesTraficoEstatus() {
+ return http.get(`/Corresponsalias/Traficos/GetCorTraficoEstatus`);
+ }
+ ValidateComplete(data: DTOTraficoCompleto) {
+ return http.put(`/Corresponsalias/Traficos/ValidateComplete/${data.id}`,data);
+ }
+ AppendRectificacionHistorico(data: DTORectificacionHistorico) {
+ return http.post(`Corresponsalias/Traficos/Rectificacion/Historico/Append`,data);
+ }
+ GetRectificacionHistorico(IdTrafico: number) {
+ return http.get(`Corresponsalias/Traficos/Rectificacion/Historico/Get?IdTrafico=${IdTrafico}`);
+ }
+}
+export default new Corresponsales_Trafico_DataService();
\ No newline at end of file
diff --git a/src/Services/Corresponsalias/Corresponsalias.CatTiposDocumentos.Services.ts b/src/Services/Corresponsalias/Corresponsalias.CatTiposDocumentos.Services.ts
new file mode 100644
index 0000000..abf396b
--- /dev/null
+++ b/src/Services/Corresponsalias/Corresponsalias.CatTiposDocumentos.Services.ts
@@ -0,0 +1,10 @@
+import http from "../common/http-common";
+import ICorresponsalCatTipoDocumento from "../../Interfaces/Corresponsales/ICorresponsalCatTipoDocumento";
+
+class CorresponsalesDataService {
+ getAll(Cliente: number, Clasificacion: number) {
+ return http.get(`/Corresponsalias/CatTiposDocumento/Get?cliente=${Cliente}&clasificacion=${Clasificacion}`);
+ }
+}
+
+export default new CorresponsalesDataService();
\ No newline at end of file
diff --git a/src/Services/Dashboard/Dashboard.Clasificacion.Services.ts b/src/Services/Dashboard/Dashboard.Clasificacion.Services.ts
new file mode 100644
index 0000000..08bdd6b
--- /dev/null
+++ b/src/Services/Dashboard/Dashboard.Clasificacion.Services.ts
@@ -0,0 +1,9 @@
+import http from "../common/http-common";
+import IDashboardTotal from "../../Interfaces/IDashboardTotal";
+
+class Dashboard$Clasificacion$DataService {
+ DashboardInvoices(Mode: number) {
+ return http.get(`/AmazonInvoice/DashboardInvoices?Mode=${Mode}`);
+ }
+}
+export default new Dashboard$Clasificacion$DataService();
\ No newline at end of file
diff --git a/src/Services/Dashboard/Dashboard.Contabilidad.Service.ts b/src/Services/Dashboard/Dashboard.Contabilidad.Service.ts
new file mode 100644
index 0000000..149f96e
--- /dev/null
+++ b/src/Services/Dashboard/Dashboard.Contabilidad.Service.ts
@@ -0,0 +1,15 @@
+import http from "../common/http-common";
+import IDashboardTotal from "../../Interfaces/IDashboardTotal";
+
+class Dashboard_Contabilidad_DataService {
+ getTotalTraficosPendientesAutorizar(mode: number) {
+ return http.get(`/Corresponsalias/Traficos/getTotal?mode=${mode}`);
+ }
+ getTotalAnticiposPendientes() {
+ return http.get(`/Corresponsalias/Anticipos/getPendientesAutorizar`);
+ }
+ getTotalCuentasComplementariasPedientes() {
+ return http.get(`/Corresponsalias/CuentasComplementarias/GetPendientes`);
+ }
+}
+export default new Dashboard_Contabilidad_DataService();
\ No newline at end of file
diff --git a/src/Services/Dashboard/Dashboard.Corresponsales.Services.ts b/src/Services/Dashboard/Dashboard.Corresponsales.Services.ts
new file mode 100644
index 0000000..41235da
--- /dev/null
+++ b/src/Services/Dashboard/Dashboard.Corresponsales.Services.ts
@@ -0,0 +1,12 @@
+import http from "../common/http-common";
+import DashboardCorresponsales from "../../Interfaces/Dashboard/DashboardCorresponsales";
+
+class Dashboard_Corresponsales_DataService {
+ getCorresponsales() {
+ return http.get(`/Dashboard/Corresponsales/Get`);
+ }
+ getTipoCambio(Fecha: string) {
+ return http.get(`/Dashboard/Corresponsales/GetTipoCambio?Fecha=${Fecha}`);
+ }
+}
+export default new Dashboard_Corresponsales_DataService();
\ No newline at end of file
diff --git a/src/Services/Facturacion/Anexo/Anexo.Facturacion.Services.ts b/src/Services/Facturacion/Anexo/Anexo.Facturacion.Services.ts
new file mode 100644
index 0000000..cc15dec
--- /dev/null
+++ b/src/Services/Facturacion/Anexo/Anexo.Facturacion.Services.ts
@@ -0,0 +1,21 @@
+import http from '../../common/http-common'
+import IAnexoFacturacionMission from '../../../Interfaces/Facturacion/Anexo/IAnexoFacturacionMission'
+import DTOAnexoFacturacionMission from '../../../DTO/Facturacion/Anexo/DTOAnexoFacturacionMission'
+import IAnexoFacturacionAlen from '../../../Interfaces/Facturacion/Anexo/IAnexoFacturacionAlen'
+import DTOAnexoFacturacionAlen from '../../../DTO/Facturacion/Anexo/DTOAnexoFacturacionAlen'
+
+class AnexoFacturacionDataService {
+ GetMission(data: DTOAnexoFacturacionMission) {
+ return http.post(
+ `/AnexoFacturacion/GetRptAnexoFacturacionMission`,
+ data
+ )
+ }
+ GetAlen(data: DTOAnexoFacturacionAlen) {
+ return http.post(
+ `/AnexoFacturacion/GetRptAnexoFacturacionAlen`,
+ data
+ )
+ }
+}
+export default new AnexoFacturacionDataService()
diff --git a/src/Services/Operaciones/Operaciones.Services.ts b/src/Services/Operaciones/Operaciones.Services.ts
new file mode 100644
index 0000000..6a89488
--- /dev/null
+++ b/src/Services/Operaciones/Operaciones.Services.ts
@@ -0,0 +1,12 @@
+import http from '../common/http-common'
+import IConsolidadosSinCerrar from '../../Interfaces/Facturacion/Anexo/IConsolidadosSinCerrar'
+import DTOAnexoFacturacionMission from '../../DTO/Facturacion/Anexo/DTOAnexoFacturacionMission'
+
+class OperacionesDataService {
+ Get() {
+ return http.post(
+ `/AnexoFacturacion/GetRptConsolidadosSinCerrar`
+ )
+ }
+}
+export default new OperacionesDataService()
diff --git a/src/Services/Reportes/reportes.services.ts b/src/Services/Reportes/reportes.services.ts
new file mode 100644
index 0000000..8b8894c
--- /dev/null
+++ b/src/Services/Reportes/reportes.services.ts
@@ -0,0 +1,71 @@
+import http from "../common/http-common";
+import { IRptPedimentosPagados } from "../../Interfaces/Reportes/IRptPedimentosPagados";
+import { IRptPedimentosPagadosImpuestos } from "../../Interfaces/Reportes/IRptPedimentosPagadosImpuestos";
+import { IRptDetalleAnexo24 } from "../../Interfaces/Reportes/RptDetalleAnexo24";
+import { IRptOperacionesRemesa } from "../../Interfaces/Reportes/RptOperacionesRemesa";
+import IRptBattery from "../../Interfaces/Reportes/IRptBattery";
+import DTOReporte from "../../DTO/DTOReporte";
+import DTOAEPeriodo from "../../DTO/DTOAEPeriodo";
+import IRpArchivoElectronicoOficial from "../../Interfaces/Reportes/IRptArchivoElectronicoOficial";
+import IRptPedimentosConsolidados from "../../Interfaces/Reportes/IRptPedimentosConsolidados";
+import DTOCorresponsalTrafico from "../../DTO/Corresponsales/DTOCorresponsalTrafico";
+import DTORptCorresponsalesTraficos from "../../DTO/Corresponsales/DTORptCorresponsalesTraficos";
+import ICorresponsalTrafico from "../../Interfaces/Corresponsales/ICorresponsalTrafico";
+import IRptOperaciones from "../../Interfaces/Reportes/IRptOperaciones";
+import IRptOperacionesConsolidadas from "../../Interfaces/Reportes/IRptOperacionesConsolidadas";
+import IRptOperacionesDiarias from "../../Interfaces/Reportes/IRptOperacionesDiarias";
+
+class reportsDataService {
+ getRptPedimentosPagados(data: DTOReporte) {
+ return http.post>("/reportes/RptPedimentosPagados", data);
+ }
+ getRptPedimentosPagadosImpuestos(data: DTOReporte) {
+ return http.post>("/reportes/RptPedimentosPagadosImpuestos", data);
+ }
+ getRptDetalleAnexo24(data: DTOReporte) {
+ return http.post