|
|
@ -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,7 +1501,27 @@ 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 ? ( |
|
|
@ -1426,7 +1529,7 @@ export default function TraficoCorresponsales (props:IProps) { |
|
|
|
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 |
|
|
|