|
|
@ -80,7 +80,7 @@ import CPedimentoService from '../../Services/Corresponsalias/Corresponsales.Tra |
|
|
|
import DashboardService from '../../Services/Dashboard/Dashboard.Corresponsales.Services' |
|
|
|
import DashboardService from '../../Services/Dashboard/Dashboard.Corresponsales.Services' |
|
|
|
import CCueCompService from '../../Services/Corresponsalias/Corresponsales.CuentasComplementarias.Services' |
|
|
|
import CCueCompService from '../../Services/Corresponsalias/Corresponsales.CuentasComplementarias.Services' |
|
|
|
import FileManService from '../../Services/Utils/FileManager.Services' |
|
|
|
import FileManService from '../../Services/Utils/FileManager.Services' |
|
|
|
|
|
|
|
import TiposMercanciaService from '../../Services/Catalogos/TiposMercancia.Services' |
|
|
|
// Componentes
|
|
|
|
// Componentes
|
|
|
|
import CurrencyFormat from 'react-currency-format' |
|
|
|
import CurrencyFormat from 'react-currency-format' |
|
|
|
import MaskedInput from 'react-text-mask' |
|
|
|
import MaskedInput from 'react-text-mask' |
|
|
@ -111,6 +111,7 @@ import DTORectificacionHistorico from '../../DTO/Corresponsales/DTORectificacion |
|
|
|
import moment from 'moment' |
|
|
|
import moment from 'moment' |
|
|
|
import ICorresponsalContenedores from '../../Interfaces/Corresponsales/ICorresponsalContenedores' |
|
|
|
import ICorresponsalContenedores from '../../Interfaces/Corresponsales/ICorresponsalContenedores' |
|
|
|
import ICorresponsalFacturas from '../../Interfaces/Corresponsales/ICorresponsalFacturas' |
|
|
|
import ICorresponsalFacturas from '../../Interfaces/Corresponsales/ICorresponsalFacturas' |
|
|
|
|
|
|
|
import { ITiposMercancias } from '../../Interfaces/Catalogos/ICatTiposMercancias' |
|
|
|
|
|
|
|
|
|
|
|
interface IProps { |
|
|
|
interface IProps { |
|
|
|
IDTrafico: number |
|
|
|
IDTrafico: number |
|
|
@ -246,6 +247,8 @@ export default function TraficoCorresponsales (props:IProps) { |
|
|
|
const [DataCatEstatus, setDataCatEstatus] = useState< |
|
|
|
const [DataCatEstatus, setDataCatEstatus] = useState< |
|
|
|
ICorresponsalesCatTraficoEstatus[] |
|
|
|
ICorresponsalesCatTraficoEstatus[] |
|
|
|
>([]) |
|
|
|
>([]) |
|
|
|
|
|
|
|
const [TiposMercancia, setTiposMercancia] = useState<ITiposMercancias[]>([]) |
|
|
|
|
|
|
|
const [IDTipoMercancia, setIDTipoMercancia] = useState<number>(0) |
|
|
|
const [Aduanas, setAduanas] = useState<IAduanas[]>([ |
|
|
|
const [Aduanas, setAduanas] = useState<IAduanas[]>([ |
|
|
|
{ id: 440, descripcion: 'CD. ACUNA, COAH.' }, |
|
|
|
{ id: 440, descripcion: 'CD. ACUNA, COAH.' }, |
|
|
|
{ id: 810, descripcion: 'ALTAMIRA, TAMPS.' } |
|
|
|
{ id: 810, descripcion: 'ALTAMIRA, TAMPS.' } |
|
|
@ -387,6 +390,7 @@ export default function TraficoCorresponsales (props:IProps) { |
|
|
|
data.noCuenta = NoCuenta |
|
|
|
data.noCuenta = NoCuenta |
|
|
|
data.fechaCuenta = FechaCuenta |
|
|
|
data.fechaCuenta = FechaCuenta |
|
|
|
data.idTabulador = IDTabulador |
|
|
|
data.idTabulador = IDTabulador |
|
|
|
|
|
|
|
data.idTipoMercancia = IDTipoMercancia |
|
|
|
CTrafDataService.Append(data) |
|
|
|
CTrafDataService.Append(data) |
|
|
|
.then((response) => { |
|
|
|
.then((response) => { |
|
|
|
if (response.data.estatusCode === 0) { |
|
|
|
if (response.data.estatusCode === 0) { |
|
|
@ -521,6 +525,17 @@ export default function TraficoCorresponsales (props:IProps) { |
|
|
|
return |
|
|
|
return |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TiposMercanciaService.GetAll() |
|
|
|
|
|
|
|
.then((response) => { |
|
|
|
|
|
|
|
setTiposMercancia(response.data); |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
.catch((e: Error) => { |
|
|
|
|
|
|
|
setHeader('Error') |
|
|
|
|
|
|
|
setMsg('Ocurrio un error: ' + e) |
|
|
|
|
|
|
|
setShowMsg(true) |
|
|
|
|
|
|
|
return |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
CFacDataService.getAll(IDTrafico) |
|
|
|
CFacDataService.getAll(IDTrafico) |
|
|
|
.then((response) => { |
|
|
|
.then((response) => { |
|
|
|
dispatch(InitCorresponsalesFacturas(IDTrafico)) |
|
|
|
dispatch(InitCorresponsalesFacturas(IDTrafico)) |
|
|
@ -664,6 +679,7 @@ export default function TraficoCorresponsales (props:IProps) { |
|
|
|
setSemaforoFiscal(response.data.semaforoFiscal) |
|
|
|
setSemaforoFiscal(response.data.semaforoFiscal) |
|
|
|
setNoCuenta(response.data.noCuenta) |
|
|
|
setNoCuenta(response.data.noCuenta) |
|
|
|
setFechaCuenta(setDate(response.data.fechaCuenta)) |
|
|
|
setFechaCuenta(setDate(response.data.fechaCuenta)) |
|
|
|
|
|
|
|
setIDTipoMercancia(response.data.idTipoMercancia); |
|
|
|
}) |
|
|
|
}) |
|
|
|
.catch((e: Error) => { |
|
|
|
.catch((e: Error) => { |
|
|
|
setHeader('Error') |
|
|
|
setHeader('Error') |
|
|
@ -1102,7 +1118,7 @@ export default function TraficoCorresponsales (props:IProps) { |
|
|
|
idTrafico: IDTrafico, |
|
|
|
idTrafico: IDTrafico, |
|
|
|
statusProceso: 0, |
|
|
|
statusProceso: 0, |
|
|
|
fechaRegistro: '', |
|
|
|
fechaRegistro: '', |
|
|
|
razonRechazo: arrStatus[0].estatus, |
|
|
|
razonRechazo: arrStatus[0]?.estatus ? arrStatus[0]?.estatus : "", |
|
|
|
tipo: 0 |
|
|
|
tipo: 0 |
|
|
|
} |
|
|
|
} |
|
|
|
rejectCurrentStep(data) |
|
|
|
rejectCurrentStep(data) |
|
|
@ -1233,6 +1249,51 @@ export default function TraficoCorresponsales (props:IProps) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const generateFacturacionTxt = () => { |
|
|
|
|
|
|
|
let cliente = Clientes?.filter(x => x.sClave === IDCliente)[0]; |
|
|
|
|
|
|
|
let tipoMercancia = TiposMercancia.filter(x => x.id === IDTipoMercancia)[0]; |
|
|
|
|
|
|
|
let facturas = mCFacturas.filter(factura => factura.id > 0); |
|
|
|
|
|
|
|
let nombreProveedor = ""; |
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
let fileData = `"${FolioTrafico}"|${IDCliente}|${Patente}|${Pedimento}|${TipoCambio}|${FechaPago}|0|0|0|0|0|0|0.00|"${Aduana}"|"${ClavePedimento}"|${TipoOperacion}|`; |
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
fileData += `"C"|${ValorFacturasDls}|${ValorFacturasDls! * TipoCambio!}|${ValorAduanaMN}|"${Descripcion}"|${Kilos}|${Kilos! * 2.20462}|${CantidadFracciones}|"${SemafoFiscal === 0 ? "R" : "V"}"|`; |
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
if(facturas.length > 0){ |
|
|
|
|
|
|
|
nombreProveedor = mCProveedores.filter(p => p.id === facturas[0].proveedor)[0].nombre; |
|
|
|
|
|
|
|
fileData += `${facturas.length}|"${facturas.map(factura => {return factura.factura}).join(",")}"|0|"${nombreProveedor}"|"${concatFacturasPedidos(facturas)}"|`; |
|
|
|
|
|
|
|
}else |
|
|
|
|
|
|
|
fileData += `0|""|0|""|""|`; |
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
fileData += `${Bultos}|${0}|${0}|${moment(FechaDesaduanamiento).format('MM/DD/YYYY')}|0|0|""|${moment(FechaDesaduanamiento).format('MM/DD/YYYY')}|${tipoMercancia?.clave ? tipoMercancia?.clave : '""'}|0|0|""|""|""|""|/ /|F|F|F|F|0|0|F|0.00|F|0|""|""|`; |
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
fileData += `${FechaPagoH !== "" ? FechaPagoH : FechaPago}|""|""|0|"${cliente!.sRazonSocial.split('|')[0].trim()}"|${cliente!.sRFC}|""|""|""|""|""|""|""|"${nombreProveedor}"|`; |
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
fileData += `0|""|""|""|""|""|""|""|""|${ValorFacturasDls}|""|""|336|""|/ / : :|${moment().format("MM/DD/YYYY hh:mm:ss")}|${moment().format("MM/DD/YYYY hh:mm:ss")}|`; |
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
fileData += `0|""|""|""|0|0|0|F|""|0|""|""|0|0|0|0|""|"1-9999"`; |
|
|
|
|
|
|
|
const blob = new Blob([fileData], { type: "text/plain" }); |
|
|
|
|
|
|
|
const url = URL.createObjectURL(blob); |
|
|
|
|
|
|
|
const link = document.createElement("a"); |
|
|
|
|
|
|
|
link.download = `${FolioTrafico}_${Date.now()}.txt`; |
|
|
|
|
|
|
|
link.href = url; |
|
|
|
|
|
|
|
link.click(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const concatFacturasPedidos = (facturas: ICorresponsalFacturas[]) => { |
|
|
|
|
|
|
|
let pedidos = ""; |
|
|
|
|
|
|
|
facturas.forEach((factura, index) => { |
|
|
|
|
|
|
|
if(factura.pedido !== ''){ |
|
|
|
|
|
|
|
if(index <= facturas.length){ |
|
|
|
|
|
|
|
pedidos += `${factura.pedido},`; |
|
|
|
|
|
|
|
}else{ |
|
|
|
|
|
|
|
pedidos += factura.pedido; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
return pedidos; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return ( |
|
|
|
return ( |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<Card className="labelSize13px"> |
|
|
|
<Card className="labelSize13px"> |
|
|
@ -1561,96 +1622,96 @@ export default function TraficoCorresponsales (props:IProps) { |
|
|
|
<Card.Text> |
|
|
|
<Card.Text> |
|
|
|
<Container fluid="md"> |
|
|
|
<Container fluid="md"> |
|
|
|
<Row style={{padding: "5px 0"}}> |
|
|
|
<Row style={{padding: "5px 0"}}> |
|
|
|
<Col sm={6} md={6} lg={2}> |
|
|
|
<Col sm={12} md={12} lg={6}> |
|
|
|
<Row> |
|
|
|
<Row style={{alignItems:'baseline'}}> |
|
|
|
<Col xs={12}> |
|
|
|
<Col xs={6}> |
|
|
|
<SelectGuias |
|
|
|
<SelectGuias |
|
|
|
IDTrafico={IDTrafico} |
|
|
|
IDTrafico={IDTrafico} |
|
|
|
Editable={Depto === 'Corresponsalias'} |
|
|
|
Editable={Depto === 'Corresponsalias'} |
|
|
|
/> |
|
|
|
/> |
|
|
|
</Col> |
|
|
|
</Col> |
|
|
|
</Row>
|
|
|
|
<Col xs={3}> |
|
|
|
</Col> |
|
|
|
<Form.Label> |
|
|
|
<Col sm={6} md={6} lg={6}> |
|
|
|
Bultos |
|
|
|
<Row className='justify-content-around'> |
|
|
|
|
|
|
|
<Col lg={1} md={2} sm={2}> |
|
|
|
|
|
|
|
<Form.Label>Bultos</Form.Label> |
|
|
|
|
|
|
|
</Col> |
|
|
|
|
|
|
|
<Col lg={2} md={4} sm={4}> |
|
|
|
|
|
|
|
<CurrencyFormat |
|
|
|
<CurrencyFormat |
|
|
|
value={Bultos} |
|
|
|
value={Bultos} |
|
|
|
displayType={ |
|
|
|
displayType='input' |
|
|
|
Depto === 'Corresponsalias' ? 'input' : 'text' |
|
|
|
readOnly= {Depto !== 'Corresponsalias' ? true : false} |
|
|
|
} |
|
|
|
|
|
|
|
thousandSeparator={true} |
|
|
|
thousandSeparator={true} |
|
|
|
onValueChange={(values: any) => { |
|
|
|
onValueChange={(values: any) => { |
|
|
|
const { value } = values |
|
|
|
const { value } = values |
|
|
|
setBultos(value) |
|
|
|
setBultos(value) |
|
|
|
}} |
|
|
|
}} |
|
|
|
style={ |
|
|
|
style={{ |
|
|
|
Depto === 'Corresponsalias' |
|
|
|
|
|
|
|
? { |
|
|
|
|
|
|
|
fontSize: '15px', |
|
|
|
|
|
|
|
backgroundColor: '#FFFFFF', |
|
|
|
|
|
|
|
border: '1px solid #000000', |
|
|
|
|
|
|
|
width: '70px', |
|
|
|
|
|
|
|
borderRadius: '3px' |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
: { |
|
|
|
|
|
|
|
fontSize: '15px', |
|
|
|
fontSize: '15px', |
|
|
|
backgroundColor: '#FFFFFF', |
|
|
|
backgroundColor: '#FFFFFF', |
|
|
|
paddingLeft: '20px', |
|
|
|
|
|
|
|
paddingRight: '5px', |
|
|
|
|
|
|
|
border: '1px solid #000000', |
|
|
|
border: '1px solid #000000', |
|
|
|
width: '70px', |
|
|
|
width: '100%', |
|
|
|
borderRadius: '3px' |
|
|
|
borderRadius: '3px', |
|
|
|
} |
|
|
|
textAlign: 'end', |
|
|
|
} |
|
|
|
padding: '0 5px' |
|
|
|
|
|
|
|
}} |
|
|
|
/> |
|
|
|
/> |
|
|
|
|
|
|
|
</Form.Label> |
|
|
|
</Col> |
|
|
|
</Col> |
|
|
|
<Col lg={1} md={2} sm={2}> |
|
|
|
<Col xs={3}> |
|
|
|
<Form.Label>Kilos</Form.Label> |
|
|
|
<Form.Label> |
|
|
|
</Col> |
|
|
|
Kilos |
|
|
|
<Col lg={2} md={4} sm={4}> |
|
|
|
|
|
|
|
<CurrencyFormat |
|
|
|
<CurrencyFormat |
|
|
|
value={Kilos} |
|
|
|
value={Kilos} |
|
|
|
displayType={ |
|
|
|
displayType='input' |
|
|
|
Depto === 'Corresponsalias' ? 'input' : 'text' |
|
|
|
readOnly= {Depto !== 'Corresponsalias' ? true : false} |
|
|
|
} |
|
|
|
|
|
|
|
thousandSeparator={true} |
|
|
|
thousandSeparator={true} |
|
|
|
onValueChange={(values: any) => { |
|
|
|
onValueChange={(values: any) => { |
|
|
|
const { value } = values |
|
|
|
const { value } = values |
|
|
|
setKilos(value) |
|
|
|
setKilos(value) |
|
|
|
}} |
|
|
|
}} |
|
|
|
style={ |
|
|
|
style={{ |
|
|
|
Depto === 'Corresponsalias' |
|
|
|
|
|
|
|
? { |
|
|
|
|
|
|
|
fontSize: '15px', |
|
|
|
|
|
|
|
backgroundColor: '#FFFFFF', |
|
|
|
|
|
|
|
border: '1px solid #000000', |
|
|
|
|
|
|
|
width: '100%', |
|
|
|
|
|
|
|
borderRadius: '3px' |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
: { |
|
|
|
|
|
|
|
fontSize: '15px', |
|
|
|
fontSize: '15px', |
|
|
|
backgroundColor: '#FFFFFF', |
|
|
|
backgroundColor: '#FFFFFF', |
|
|
|
paddingLeft: '20px', |
|
|
|
|
|
|
|
paddingRight: '5px', |
|
|
|
|
|
|
|
border: '1px solid #000000', |
|
|
|
border: '1px solid #000000', |
|
|
|
width: '100%', |
|
|
|
width: '100%', |
|
|
|
borderRadius: '3px' |
|
|
|
borderRadius: '3px', |
|
|
|
} |
|
|
|
textAlign: 'end', |
|
|
|
} |
|
|
|
padding: '0 5px' |
|
|
|
|
|
|
|
}} |
|
|
|
/> |
|
|
|
/> |
|
|
|
|
|
|
|
</Form.Label> |
|
|
|
</Col> |
|
|
|
</Col> |
|
|
|
</Row>
|
|
|
|
</Row>
|
|
|
|
</Col> |
|
|
|
</Col> |
|
|
|
<Col sm={12} md={12} lg={4}> |
|
|
|
<Col sm={12} md={12} lg={6}> |
|
|
|
<Row className='justify-content-around'> |
|
|
|
<Row> |
|
|
|
<Col> |
|
|
|
<Col xs={6}> |
|
|
|
<Form.Label>Estatus</Form.Label> |
|
|
|
<Form.Label style={{width:'100%'}}> |
|
|
|
|
|
|
|
Tipo de Mercancia |
|
|
|
|
|
|
|
<Form.Control |
|
|
|
|
|
|
|
as="select" |
|
|
|
|
|
|
|
className="form-select form-select-sm" |
|
|
|
|
|
|
|
value={IDTipoMercancia} |
|
|
|
|
|
|
|
disabled={ |
|
|
|
|
|
|
|
Depto !== 'Corresponsalias' ? true : false |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
onChange={(e) => { |
|
|
|
|
|
|
|
setIDTipoMercancia(parseInt(e.target.value)) |
|
|
|
|
|
|
|
}} |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<option value="0">-SELECCIONE-</option> |
|
|
|
|
|
|
|
{TiposMercancia |
|
|
|
|
|
|
|
? TiposMercancia.map((t) => { |
|
|
|
|
|
|
|
return ( |
|
|
|
|
|
|
|
<option key={t.id} value={t.id}> |
|
|
|
|
|
|
|
{t.descripcion} |
|
|
|
|
|
|
|
</option> |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
: null} |
|
|
|
|
|
|
|
</Form.Control> |
|
|
|
|
|
|
|
</Form.Label> |
|
|
|
</Col> |
|
|
|
</Col> |
|
|
|
<Col sm={8}> |
|
|
|
<Col xs={6}> |
|
|
|
|
|
|
|
<Form.Label> |
|
|
|
|
|
|
|
Estatus |
|
|
|
<Form.Control |
|
|
|
<Form.Control |
|
|
|
as="select" |
|
|
|
as="select" |
|
|
|
className="form-select form-select-sm" |
|
|
|
className="form-select form-select-sm" |
|
|
@ -1673,6 +1734,7 @@ export default function TraficoCorresponsales (props:IProps) { |
|
|
|
}) |
|
|
|
}) |
|
|
|
: null} |
|
|
|
: null} |
|
|
|
</Form.Control> |
|
|
|
</Form.Control> |
|
|
|
|
|
|
|
</Form.Label> |
|
|
|
</Col> |
|
|
|
</Col> |
|
|
|
</Row> |
|
|
|
</Row> |
|
|
|
</Col> |
|
|
|
</Col> |
|
|
@ -2588,6 +2650,23 @@ export default function TraficoCorresponsales (props:IProps) { |
|
|
|
)} |
|
|
|
)} |
|
|
|
</Col> |
|
|
|
</Col> |
|
|
|
</Row> |
|
|
|
</Row> |
|
|
|
|
|
|
|
<Row style={{display: Depto === 'Facturacion' ? 'flex': 'none'}}> |
|
|
|
|
|
|
|
<Col xs={12} style={{textAlign:'end'}}> |
|
|
|
|
|
|
|
<Button |
|
|
|
|
|
|
|
variant="primary" |
|
|
|
|
|
|
|
size="sm" |
|
|
|
|
|
|
|
style={{ |
|
|
|
|
|
|
|
paddingLeft: '25px', |
|
|
|
|
|
|
|
paddingRight: '25px' |
|
|
|
|
|
|
|
}} |
|
|
|
|
|
|
|
onClick={() => { |
|
|
|
|
|
|
|
generateFacturacionTxt(); |
|
|
|
|
|
|
|
}} |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
Generar TXT |
|
|
|
|
|
|
|
</Button> |
|
|
|
|
|
|
|
</Col> |
|
|
|
|
|
|
|
</Row> |
|
|
|
<Row style={{padding: "5px 0"}}> |
|
|
|
<Row style={{padding: "5px 0"}}> |
|
|
|
<Col xs={6} style={{ textAlign: 'center' }}> |
|
|
|
<Col xs={6} style={{ textAlign: 'center' }}> |
|
|
|
Trafico Corresponsales: Rechazo(s) |
|
|
|
Trafico Corresponsales: Rechazo(s) |
|
|
|