Simplifica el proceso de guardado y rechazo de un trafico, generar el txt de facturación en el sevidor

feature/TxtFacturacion_SendMailOnError_20240119
Felix Morales 8 months ago
parent c5077576fc
commit e493bef165
  1. 150
      src/Components/Corresponsales/TraficoCorresponsales.tsx

@ -524,9 +524,6 @@ export default function TraficoCorresponsales (props:IProps) {
setHeader('Informativo') setHeader('Informativo')
setMsg('La informacion se guardo correctamente') setMsg('La informacion se guardo correctamente')
setShowMsg(true) setShowMsg(true)
setTimeout(() => {
setIsDisabled(false)
}, 5000);
} }
return return
} else if (response.data.estatusCode === 409.1) { } else if (response.data.estatusCode === 409.1) {
@ -549,7 +546,6 @@ export default function TraficoCorresponsales (props:IProps) {
}) })
.catch((e: Error) => { .catch((e: Error) => {
setTimeout(() => { setTimeout(() => {
setIsDisabled(false)
}, 5000); }, 5000);
setHeader('Error') setHeader('Error')
setMsg('Ocurrio un error: ' + e) setMsg('Ocurrio un error: ' + e)
@ -1162,74 +1158,30 @@ export default function TraficoCorresponsales (props:IProps) {
) )
} }
const saveCurrentStep = () => {
if(Depto === 'Corresponsalias') saveCorresponsaliasStep()
else if(Depto === 'Contabilidad') saveContabilidadAndFacturacionSteps()
}
const saveFinalStep = async (data: DTOTraficoCompleto) => {
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
})
}
const saveCorresponsaliasStep = () => { const saveCorresponsaliasStep = () => {
if(ComentariosRechazo === ''){ let data: DTOTraficoCompleto = {
let data: DTOTraficoCompleto = { id: IDTrafico,
id: IDTrafico, idUsuario: UserId,
idUsuario: UserId, estatus: TerminaProceso,
estatus: TerminaProceso, comentarios: 'Todo Correcto'
comentarios: 'Todo Correcto'
}
saveFinalStep(data)
}else{
let data: ICorresponsalesTraficoContabilidad = {
id: 0,
idUsuario: UserId,
idTrafico: IDTrafico,
statusProceso: 0,
fechaRegistro: '',
razonRechazo: ComentariosRechazo,
tipo: 0
}
rejectCurrentStep(data)
} }
updateProceso(data)
} }
const saveContabilidadAndFacturacionSteps = async () => { const validateSelectedRejectOption = async () => {
if(IDRazonRechazo === 0){ if(IDRazonRechazo === 0){
setHeader('Informativo') setHeader('Informativo')
setMsg('Debe aceptar el tráfico o seleccionar un motivo de rechazo.') setMsg('Debe autorizar el tráfico o seleccionar un motivo de rechazo.')
setShowMsg(true) setShowMsg(true)
return return
} }
let arrStatus = mCCCEstatus.filter((a) => { let selectedOption = mCCCEstatus.filter((a) => {
if (a.id === IDRazonRechazo) { if (a.id === IDRazonRechazo) {
return a return a
} }
}); });
if(IDRazonRechazo === 7){ if(IDRazonRechazo === 7){//Si el trafico se autoriza
let data: DTOTraficoCompleto = { generateFacturacionTxt(selectedOption[0].estatus);
id: IDTrafico,
idUsuario: UserId,
estatus: Proceso === 2 ? 3 : 4,
comentarios: arrStatus[0].estatus
}
await saveFinalStep(data).then(async (r) => {
if(Proceso === 2) await generateFacturacionTxt();
setIsDisabled(false)
});
}else{ }else{
let data: ICorresponsalesTraficoContabilidad = { let data: ICorresponsalesTraficoContabilidad = {
id: 0, id: 0,
@ -1237,18 +1189,47 @@ export default function TraficoCorresponsales (props:IProps) {
idTrafico: IDTrafico, idTrafico: IDTrafico,
statusProceso: 0, statusProceso: 0,
fechaRegistro: '', fechaRegistro: '',
razonRechazo: arrStatus[0].estatus, razonRechazo: selectedOption[0].estatus,
tipo: Proceso === 2 ? 2 : 3 tipo: Proceso === 2 ? 2 : 3
} }
rejectCurrentStep(data) rejectCurrentStep(data)
} }
} }
const updateProceso = (dto: DTOTraficoCompleto) => {
//Aqui va la peticion al servidor para actualizar el proceso
CTrafDataService.ValidateComplete(dto)
.then((response)=>{
//Aqui se actualiza el estado del proceso del trafico
setHeader('Informativo')
if(Proceso === 1){
setMsg('Tráfico guardado correctamente.')
setProceso(2)
}else if(Proceso === 2){
setMsg('Tráfico autorizado correctamente.')
setProceso(3)
}else if(Proceso === 3){
setMsg('Cuenta Cerrada correctamente.')
setProceso(4)
}else{
return
}
setShowMsg(true)
}).catch((error) => {
//Aqui se muestra un mensaje en caso de error
setHeader('Error')
setMsg('Ocurrió un error. Favor de revisar la información e intentarlo nuevamente.')
setShowMsg(true)
return
})
}
const rejectCurrentStep = (data:ICorresponsalesTraficoContabilidad) => { const rejectCurrentStep = (data:ICorresponsalesTraficoContabilidad) => {
CContaDataService.Append(data) CContaDataService.Append(data)
.then( () => { .then( () => {
setHeader('Informativo') setHeader('Informativo')
setMsg('Tráfico rechazado con éxito') setMsg('Tráfico rechazado con éxito')
setProceso(Proceso-1)
setShowMsg(true) setShowMsg(true)
return return
}) })
@ -1315,8 +1296,8 @@ export default function TraficoCorresponsales (props:IProps) {
}) })
} }
const generateFacturacionTxt = async () => { const generateFacturacionTxt = async (comentarios: string) => {
let cliente = Clientes?.filter(x => x.sClave === IDCliente)[0]; /* let cliente = Clientes?.filter(x => x.sClave === IDCliente)[0];
let tipoMercancia = TiposMercancia.filter(x => x.id === IDTipoMercancia)[0]; let tipoMercancia = TiposMercancia.filter(x => x.id === IDTipoMercancia)[0];
let facturas = mCFacturas.filter(factura => factura.id > 0); let facturas = mCFacturas.filter(factura => factura.id > 0);
let nombreProveedor = ""; let nombreProveedor = "";
@ -1350,13 +1331,29 @@ export default function TraficoCorresponsales (props:IProps) {
headers:{ headers:{
'Authorization': 'Bearer ' + token 'Authorization': 'Bearer ' + token
} }
} */
await axios.get(URL.get() + `/FileManager/CreateFacturacionTxt?folioTrafico=${FolioTrafico}&idTrafico=${IDTrafico}&idUsuario=${UserId}`,{
headers:{
'Authorization': 'Bearer ' + token
} }
); }
/*const url = URL.createObjectURL(blob); ).then(resp => {
const link = document.createElement("a"); console.log(resp);
link.download = `${FolioTrafico}_${Date.now()}.txt`; //Si se crea exitosamente el archivo de texto se manda a actualizar el proceso
link.href = url; let data: DTOTraficoCompleto = {
link.click();*/ id: IDTrafico,
idUsuario: UserId,
estatus: 3,
comentarios: comentarios
}
updateProceso(data)
}).catch((error) => {
//Si hay algun error aquí se mostrará un mensaje indicando que algo no ocurrió como se esperaba.
setHeader('Error')
setMsg('Ocurrió un error favor de revisar la información del tráfico e intentarlo de nuevo.')
setShowMsg(true)
return
});
} }
const concatFacturasPedidos = (facturas: ICorresponsalFacturas[]) => { const concatFacturasPedidos = (facturas: ICorresponsalFacturas[]) => {
@ -1411,7 +1408,8 @@ export default function TraficoCorresponsales (props:IProps) {
saveForm(); saveForm();
FileManagerServices.GetClientesZip(IDTrafico) FileManagerServices.GetClientesZip(IDTrafico)
.then(response => { .then(response => {
CTrafDataService.ValidateComplete({id: IDTrafico, idUsuario:UserId, estatus: 4, comentarios:'Todo Correcto'}) updateProceso({id: IDTrafico, idUsuario:UserId, estatus: 4, comentarios:'Todo Correcto'})
/* CTrafDataService.ValidateComplete({id: IDTrafico, idUsuario:UserId, estatus: 4, comentarios:'Todo Correcto'})
.then(resp => { .then(resp => {
setProceso(4); setProceso(4);
setHeader('Informativo') setHeader('Informativo')
@ -1421,7 +1419,7 @@ export default function TraficoCorresponsales (props:IProps) {
setHeader('Error') setHeader('Error')
setMsg('Ocurrio un error al cerrar la cuenta. Favor de intentarlo nuevamente') setMsg('Ocurrio un error al cerrar la cuenta. Favor de intentarlo nuevamente')
setShowMsg(true) setShowMsg(true)
}); }); */
}).catch(error => { }).catch(error => {
setHeader('Error') setHeader('Error')
setMsg('No se han encontrado uno o más de los archivos obligatorios para cerrar la cuenta.') setMsg('No se han encontrado uno o más de los archivos obligatorios para cerrar la cuenta.')
@ -1781,7 +1779,7 @@ export default function TraficoCorresponsales (props:IProps) {
</Row> </Row>
<Row style={{padding: "5px 0"}}> <Row style={{padding: "5px 0"}}>
<Col sm={11} md={11} lg={11} <Col sm={11} md={11} lg={11}
style={{ visibility: Proceso < 2 ? 'visible' : 'hidden', textAlign: 'end'}} style={{ visibility: Proceso < 2 && Depto === 'Corresponsalias' ? 'visible' : 'hidden', textAlign: 'end'}}
> >
{IDTrafico > 0 && IDCliente === 1896? ( {IDTrafico > 0 && IDCliente === 1896? (
<> <>
@ -1810,7 +1808,6 @@ export default function TraficoCorresponsales (props:IProps) {
size="sm" size="sm"
style={{ paddingLeft: '20px', paddingRight: '20px' }} style={{ paddingLeft: '20px', paddingRight: '20px' }}
onClick={() => { onClick={() => {
setIsDisabled(true)
saveForm() saveForm()
}} }}
disabled = {IsDisabled} disabled = {IsDisabled}
@ -2819,7 +2816,6 @@ export default function TraficoCorresponsales (props:IProps) {
}} }}
disabled = {IsDisabled} disabled = {IsDisabled}
onClick={() => { onClick={() => {
setIsDisabled(true);
saveForm() saveForm()
}} }}
> >
@ -2851,9 +2847,10 @@ export default function TraficoCorresponsales (props:IProps) {
{mCCCEstatus {mCCCEstatus
? mCCCEstatus.map((item, index) => { ? mCCCEstatus.map((item, index) => {
return ( return (
Depto === 'Contabilidad' || item.id < 7 ?
<option key={item.id} value={item.id}> <option key={item.id} value={item.id}>
{item.estatus} {item.estatus}
</option> </option> : ''
) )
}) })
: ''} : ''}
@ -2869,8 +2866,7 @@ export default function TraficoCorresponsales (props:IProps) {
paddingRight: '25px' paddingRight: '25px'
}} }}
onClick={() => { onClick={() => {
setIsDisabled(true) validateSelectedRejectOption()
saveContabilidadAndFacturacionSteps()
}} }}
disabled = {IsDisabled} disabled = {IsDisabled}
> >
@ -4315,7 +4311,7 @@ export default function TraficoCorresponsales (props:IProps) {
<Modal.Body>{nextStepModalBody}</Modal.Body> <Modal.Body>{nextStepModalBody}</Modal.Body>
<Modal.Footer> <Modal.Footer>
<Button variant='danger' onClick={() => {setShowNexStepModal(false); props.onClose(true)}}>Cancelar</Button> <Button variant='danger' onClick={() => {setShowNexStepModal(false); props.onClose(true)}}>Cancelar</Button>
<Button variant='primary' onClick={() => {saveCurrentStep(); setShowNexStepModal(false); props.onClose(true)}}>Continuar</Button> <Button variant='primary' onClick={() => {saveCorresponsaliasStep(); setShowNexStepModal(false); props.onClose(true)}}>Continuar</Button>
</Modal.Footer> </Modal.Footer>
</Modal> </Modal>
</div> </div>

Loading…
Cancel
Save