feature cargar archivo txt de Alen para llenar el formulario

feature/ConsolidarPedimentos_20231229
Felix Morales 1 year ago
parent 5f10358840
commit b39d16a606
  1. 125
      src/Components/Corresponsales/TraficoCorresponsales.tsx
  2. 6
      src/store/features/Corresponsales/CorresponsalesContenedoresSlice.ts
  3. 6
      src/store/features/Corresponsales/CorresponsalesFacturasSlice.ts

@ -1,4 +1,4 @@
import React, { FC, useEffect, useState } from 'react' import React, { FC, useEffect, useRef, useState } from 'react'
// Bootstrap // Bootstrap
import { import {
Alert, Alert,
@ -37,7 +37,8 @@ import { useDispatch, useSelector } from 'react-redux'
import { populateCatProveedores } from '../../store/features/CatProveedores/CatProveedoresSlice' import { populateCatProveedores } from '../../store/features/CatProveedores/CatProveedoresSlice'
import { import {
addCorresponsalesFacturas, addCorresponsalesFacturas,
InitCorresponsalesFacturas addTxtFacturas,
InitCorresponsalesFacturas,
} from '../../store/features/Corresponsales/CorresponsalesFacturasSlice' } from '../../store/features/Corresponsales/CorresponsalesFacturasSlice'
import { import {
addCorresponsalesFacturasTerceros, addCorresponsalesFacturasTerceros,
@ -45,8 +46,10 @@ import {
} from '../../store/features/Corresponsales/CorresponsalesFacturasTercerosSlice' } from '../../store/features/Corresponsales/CorresponsalesFacturasTercerosSlice'
import { import {
addCorresponsalesContenedores, addCorresponsalesContenedores,
addTxtContenedores,
CorresponsalesContenedoresSlice, CorresponsalesContenedoresSlice,
InitCorresponsalesContenedores InitCorresponsalesContenedores,
updateCorresponsalesContenedores
} from '../../store/features/Corresponsales/CorresponsalesContenedoresSlice' } from '../../store/features/Corresponsales/CorresponsalesContenedoresSlice'
import { populateCorresponsalesAnticipos } from '../../store/features/Corresponsales/CorresponsalesAnticiposSlice' import { populateCorresponsalesAnticipos } from '../../store/features/Corresponsales/CorresponsalesAnticiposSlice'
import { RootState } from '../../store/store' import { RootState } from '../../store/store'
@ -106,6 +109,8 @@ import { CuentasComplementarias } from './CuentasComplementarias/CuentasCompleme
import DTOTraficoCompleto from '../../DTO/Corresponsales/DTOTraficoCompleto' import DTOTraficoCompleto from '../../DTO/Corresponsales/DTOTraficoCompleto'
import DTORectificacionHistorico from '../../DTO/Corresponsales/DTORectificacionHistorico' import DTORectificacionHistorico from '../../DTO/Corresponsales/DTORectificacionHistorico'
import moment from 'moment' import moment from 'moment'
import ICorresponsalContenedores from '../../Interfaces/Corresponsales/ICorresponsalContenedores'
import ICorresponsalFacturas from '../../Interfaces/Corresponsales/ICorresponsalFacturas'
interface IProps { interface IProps {
IDTrafico: number IDTrafico: number
@ -159,6 +164,8 @@ export default function TraficoCorresponsales (props:IProps) {
(state: RootState) => (state: RootState) =>
state.CCueCompEstatus.CorresponsalesCuentasComplementariasEstatus state.CCueCompEstatus.CorresponsalesCuentasComplementariasEstatus
) )
const mCProveedores = useSelector((state:RootState) => state.CatProveedores.CatalogoProveedores)
const [ModalSize, setModalSize] = useState('sm') const [ModalSize, setModalSize] = useState('sm')
const [showModal, setShowModal] = useState(false) const [showModal, setShowModal] = useState(false)
const [LoadComponent, setLoadComponent] = useState(0) const [LoadComponent, setLoadComponent] = useState(0)
@ -294,6 +301,9 @@ export default function TraficoCorresponsales (props:IProps) {
const FechaRegistro = currentDate() const FechaRegistro = currentDate()
const msgColor = 'primary' const msgColor = 'primary'
const hiddenFileInputRef = useRef<HTMLInputElement>(null);
var txtContenedores: ICorresponsalContenedores[] = [];
var txtFacturas: ICorresponsalFacturas[] = [];
const itemsTrafico = [ const itemsTrafico = [
{ {
key: 1, key: 1,
@ -944,12 +954,12 @@ export default function TraficoCorresponsales (props:IProps) {
} }
}, [IDCliente]) }, [IDCliente])
useEffect(() => { /*useEffect(() => {
let cont = let cont =
mCContenedores.length > 0 mCContenedores.length > 0
? mCContenedores.length - 1 ? mCContenedores.length - 1
: mCContenedores.length : mCContenedores.length
}, [mCContenedores]) }, [mCContenedores])*/
useEffect(() => { useEffect(() => {
let ant = 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<Array<string>> = []
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 ( return (
<div> <div>
<Card className="labelSize13px"> <Card className="labelSize13px">
@ -1418,19 +1501,39 @@ export default function TraficoCorresponsales (props:IProps) {
</Col> </Col>
</Row> </Row>
<Row style={{padding: "5px 0"}}> <Row style={{padding: "5px 0"}}>
<Col sm={12} md={12} lg={12} <Col sm={11} md={11} lg={11}
style={{ visibility: Proceso < 2 ? 'visible' : 'hidden', textAlign: 'end'}}
>
{IDTrafico > 0 && IDCliente === 1896? (
<>
<Form.Control type="file" style={{display:'none'}} onChange={readFile} ref={hiddenFileInputRef}/>
<Button
id="BtnLoadTxt"
variant="success"
size="sm"
style={{ paddingLeft: '20px', paddingRight: '20px' }}
onClick={() => hiddenFileInputRef.current?.click()}
>
Cargar TXT
</Button>
</>
) : (
''
)}
</Col>
<Col sm={1} md={1} lg={1}
style={{ visibility: Proceso < 2 ? 'visible' : 'hidden', textAlign: 'end'}} style={{ visibility: Proceso < 2 ? 'visible' : 'hidden', textAlign: 'end'}}
> >
{ChangePermission ? ( {ChangePermission ? (
<Button <Button
id="BtnSave1" id="BtnSave1"
variant="primary" variant="primary"
size="sm" size="sm"
style={{ paddingLeft: '25px', paddingRight: '25px' }} style={{ paddingLeft: '20px', paddingRight: '20px' }}
onClick={() => saveForm()} onClick={() => saveForm()}
> >
Guardar Guardar
</Button> </Button>
) : ( ) : (
'' ''
)} )}

@ -28,6 +28,10 @@ export const CorresponsalesContenedoresSlice = createSlice({
//state.CorresponsalesContenedores.splice(0,state.CorresponsalesContenedores.length-1) //state.CorresponsalesContenedores.splice(0,state.CorresponsalesContenedores.length-1)
state.CorresponsalesContenedores=[{id:0, contenedor:'-Seleccione-', idTrafico:0, fSemaforo:'', semaforo:0}] state.CorresponsalesContenedores=[{id:0, contenedor:'-Seleccione-', idTrafico:0, fSemaforo:'', semaforo:0}]
}, },
addTxtContenedores: (state, action: PayloadAction<ICorresponsalContenedores[]>) => {
const newArr = [...state.CorresponsalesContenedores, ...action.payload]
state.CorresponsalesContenedores=newArr
}
}, },
}) })
@ -35,5 +39,5 @@ export const { addCorresponsalesContenedores,
populateCorresponsalesContenedores, populateCorresponsalesContenedores,
updateCorresponsalesContenedores, updateCorresponsalesContenedores,
deleteCorresponsalesContenedores, deleteCorresponsalesContenedores,
InitCorresponsalesContenedores } = CorresponsalesContenedoresSlice.actions; InitCorresponsalesContenedores, addTxtContenedores } = CorresponsalesContenedoresSlice.actions;
export default CorresponsalesContenedoresSlice.reducer; export default CorresponsalesContenedoresSlice.reducer;

@ -76,6 +76,10 @@ export const CorresponsalesFacturasSlice = createSlice({
}, },
]; ];
}, },
addTxtFacturas: (state, action: PayloadAction<ICorresponsalFacturas[]>) =>{
const newArr = [...state.CorresponsalesFacturas, ...action.payload]
state.CorresponsalesFacturas=newArr
}
}, },
}); });
@ -84,6 +88,6 @@ export const {
populateCorresponsalesFacturas, populateCorresponsalesFacturas,
updateCorresponsalesFacturas, updateCorresponsalesFacturas,
deleteCorresponsalesFacturas, deleteCorresponsalesFacturas,
InitCorresponsalesFacturas, InitCorresponsalesFacturas, addTxtFacturas
} = CorresponsalesFacturasSlice.actions; } = CorresponsalesFacturasSlice.actions;
export default CorresponsalesFacturasSlice.reducer; export default CorresponsalesFacturasSlice.reducer;

Loading…
Cancel
Save