diff --git a/src/Components/Corresponsales/TraficoCorresponsales.tsx b/src/Components/Corresponsales/TraficoCorresponsales.tsx index 3005b36..479d572 100644 --- a/src/Components/Corresponsales/TraficoCorresponsales.tsx +++ b/src/Components/Corresponsales/TraficoCorresponsales.tsx @@ -1,4 +1,4 @@ -import React, { FC, useEffect, useState } from 'react' +import React, { FC, useEffect, useRef, useState } from 'react' // Bootstrap import { Alert, @@ -37,7 +37,8 @@ import { useDispatch, useSelector } from 'react-redux' import { populateCatProveedores } from '../../store/features/CatProveedores/CatProveedoresSlice' import { addCorresponsalesFacturas, - InitCorresponsalesFacturas + addTxtFacturas, + InitCorresponsalesFacturas, } from '../../store/features/Corresponsales/CorresponsalesFacturasSlice' import { addCorresponsalesFacturasTerceros, @@ -45,8 +46,10 @@ import { } from '../../store/features/Corresponsales/CorresponsalesFacturasTercerosSlice' import { addCorresponsalesContenedores, + addTxtContenedores, CorresponsalesContenedoresSlice, - InitCorresponsalesContenedores + InitCorresponsalesContenedores, + updateCorresponsalesContenedores } from '../../store/features/Corresponsales/CorresponsalesContenedoresSlice' import { populateCorresponsalesAnticipos } from '../../store/features/Corresponsales/CorresponsalesAnticiposSlice' import { RootState } from '../../store/store' @@ -106,6 +109,8 @@ import { CuentasComplementarias } from './CuentasComplementarias/CuentasCompleme import DTOTraficoCompleto from '../../DTO/Corresponsales/DTOTraficoCompleto' import DTORectificacionHistorico from '../../DTO/Corresponsales/DTORectificacionHistorico' import moment from 'moment' +import ICorresponsalContenedores from '../../Interfaces/Corresponsales/ICorresponsalContenedores' +import ICorresponsalFacturas from '../../Interfaces/Corresponsales/ICorresponsalFacturas' interface IProps { IDTrafico: number @@ -159,6 +164,8 @@ export default function TraficoCorresponsales (props:IProps) { (state: RootState) => state.CCueCompEstatus.CorresponsalesCuentasComplementariasEstatus ) + const mCProveedores = useSelector((state:RootState) => state.CatProveedores.CatalogoProveedores) + const [ModalSize, setModalSize] = useState('sm') const [showModal, setShowModal] = useState(false) const [LoadComponent, setLoadComponent] = useState(0) @@ -294,6 +301,9 @@ export default function TraficoCorresponsales (props:IProps) { const FechaRegistro = currentDate() const msgColor = 'primary' + const hiddenFileInputRef = useRef(null); + var txtContenedores: ICorresponsalContenedores[] = []; + var txtFacturas: ICorresponsalFacturas[] = []; const itemsTrafico = [ { key: 1, @@ -944,12 +954,12 @@ export default function TraficoCorresponsales (props:IProps) { } }, [IDCliente]) - useEffect(() => { + /*useEffect(() => { let cont = mCContenedores.length > 0 ? mCContenedores.length - 1 : mCContenedores.length - }, [mCContenedores]) + }, [mCContenedores])*/ useEffect(() => { let ant = @@ -1150,6 +1160,79 @@ export default function TraficoCorresponsales (props:IProps) { } } + const readFile = (event: any) => { + const fileUploaded = event.target.files[0]; + if(!fileUploaded) return; + const fileReader = new FileReader(); + fileReader.readAsText(fileUploaded); + + fileReader.onload = async () => { + let Gcs = fileReader.result?.toString().split("\r\n") + let facturas: Array> = [] + Gcs?.forEach(Gc => { + facturas.push(Gc.split("|")) + }) + console.log(facturas) + if(hiddenFileInputRef.current !== null ) hiddenFileInputRef.current.value = ""; + patchForm(facturas[0]) + await saveTxtContenedores(facturas) + await saveFacturasTxt(facturas) + setTimeout(()=> {dispatch(addTxtContenedores(txtContenedores));dispatch(addTxtFacturas(txtFacturas))}, 2000) + }; + + fileReader.onerror = () => {} + }; + + const patchForm = (factura: string[]) => { + setPedimento(+factura[6]); + setFechaPago(setDate(factura[7])); + setClavePedimento(factura[8]) + setTipoCambio(+factura[15]) + setCantidadFracciones(+factura[21]) + setDescripcionMercancia(factura[14]) + setObservaciones(factura[48]) + } + + const saveTxtContenedores = async (facturas: string[][]) => { + facturas.forEach(async (factura) => { + await CContDataService.Append( + {id: 0, contenedor: factura[32], idTrafico: IDTrafico , fSemaforo: factura[22], semaforo: factura[45] === 'VERDE' ? 2 : 1,} + ) + .then((response) => { + if (response.status === 200) { + txtContenedores.push(response.data) + } + }) + .catch((e: Error) => { + return + }) + }) + } + + const saveFacturasTxt = async(facturas: string[][]) => { + facturas.forEach(async (factura) => { + let proveedor = mCProveedores.filter(x => x.nombre === factura[10])[0] + await CFacDataService.Append({ + id: 0, + factura: factura[13], + idTrafico: IDTrafico, + valorFacturaDls: +factura[16], + proveedor: proveedor.id, + corresponsal: IDCorresponsal, + pedido: factura[29], + code: 0, + folioGEMCO: '' + }).then((response) => { + if (response.status === 200) { + txtFacturas.push(response.data) + } + }) + .catch((e: Error) => { + return + }) + }); + } + return (
@@ -1418,19 +1501,39 @@ export default function TraficoCorresponsales (props:IProps) { - + {IDTrafico > 0 && IDCliente === 1896? ( + <> + + + + ) : ( + '' + )} + + {ChangePermission ? ( - + > + Guardar + ) : ( '' )} diff --git a/src/store/features/Corresponsales/CorresponsalesContenedoresSlice.ts b/src/store/features/Corresponsales/CorresponsalesContenedoresSlice.ts index 1ada465..b2a78a0 100644 --- a/src/store/features/Corresponsales/CorresponsalesContenedoresSlice.ts +++ b/src/store/features/Corresponsales/CorresponsalesContenedoresSlice.ts @@ -28,6 +28,10 @@ export const CorresponsalesContenedoresSlice = createSlice({ //state.CorresponsalesContenedores.splice(0,state.CorresponsalesContenedores.length-1) state.CorresponsalesContenedores=[{id:0, contenedor:'-Seleccione-', idTrafico:0, fSemaforo:'', semaforo:0}] }, + addTxtContenedores: (state, action: PayloadAction) => { + const newArr = [...state.CorresponsalesContenedores, ...action.payload] + state.CorresponsalesContenedores=newArr + } }, }) @@ -35,5 +39,5 @@ export const { addCorresponsalesContenedores, populateCorresponsalesContenedores, updateCorresponsalesContenedores, deleteCorresponsalesContenedores, - InitCorresponsalesContenedores } = CorresponsalesContenedoresSlice.actions; + InitCorresponsalesContenedores, addTxtContenedores } = CorresponsalesContenedoresSlice.actions; export default CorresponsalesContenedoresSlice.reducer; diff --git a/src/store/features/Corresponsales/CorresponsalesFacturasSlice.ts b/src/store/features/Corresponsales/CorresponsalesFacturasSlice.ts index 6bdc00e..61ad566 100644 --- a/src/store/features/Corresponsales/CorresponsalesFacturasSlice.ts +++ b/src/store/features/Corresponsales/CorresponsalesFacturasSlice.ts @@ -76,6 +76,10 @@ export const CorresponsalesFacturasSlice = createSlice({ }, ]; }, + addTxtFacturas: (state, action: PayloadAction) =>{ + const newArr = [...state.CorresponsalesFacturas, ...action.payload] + state.CorresponsalesFacturas=newArr + } }, }); @@ -84,6 +88,6 @@ export const { populateCorresponsalesFacturas, updateCorresponsalesFacturas, deleteCorresponsalesFacturas, - InitCorresponsalesFacturas, + InitCorresponsalesFacturas, addTxtFacturas } = CorresponsalesFacturasSlice.actions; export default CorresponsalesFacturasSlice.reducer;