Se modifica el front end primer proceso de Amazon para que se puedan editar los combos

AmazonRelease1.1
unknown 2 years ago
parent 8c13d4e741
commit 254395f066
  1. 4
      src/Components/Clientes/Amazon/Components/ComboSelect/ComboDescripcion.tsx
  2. 66
      src/Components/Clientes/Amazon/Components/ComboSelect/ComboFraccion.tsx
  3. 11
      src/Components/Clientes/Amazon/Reportes/Clasification/Pending/RptAmazonPendingClasificationInvoicesDetail.tsx
  4. 1
      src/Components/Clientes/Amazon/Reportes/Clasification/WaitingAnswer/RptPendingAnswerFromAmazon.tsx
  5. 12
      src/Components/Clientes/Amazon/Reportes/Clasification/WaitingAnswer/RptPendingAnswerFromAmazonDetail.tsx
  6. 12
      src/Components/Clientes/Amazon/Reportes/Traffic/Linking/RptAmazonLinkInvoice2Traffic.tsx
  7. 27
      src/Components/Clientes/Amazon/Reportes/Traffic/Linking/RptAmazonLinkInvoice2TrafficDetail.tsx
  8. 1
      src/Components/Clientes/ZincInternacional/DTO/DTO1868ReporteFactura.ts
  9. 5
      src/Components/Clientes/ZincInternacional/DTO/DTO1868Transportista.ts
  10. 29
      src/Components/Clientes/ZincInternacional/Rpt1868Facturas.tsx
  11. 74
      src/Components/Clientes/ZincInternacional/Transportistas/Rtp1868Transportista.tsx

@ -152,8 +152,8 @@ export function ComboDescripcion(props: IComboDescripcionProps) {
onChange={(e) => changeValidacion(parseInt(e.target.value))}
value={Validacion}
>
{props.Detail.validaFraccionOriginal===0 ? <option value="0"> </option> : '' }
{props.Detail.validaFraccionOriginal===0 ? <option value="1"> = </option> : ''}
{props.Detail.validaFraccionOriginal===1 ? <option value="0"> </option> : '' }
{props.Detail.validaFraccionOriginal===1 ? <option value="1"> = </option> : ''}
<option value="2"> != </option>
{props.Detail.validaFraccionOriginal===3 ? <option value="3"> Ok </option> : ''}
</Form.Control>

@ -3,9 +3,7 @@ import { Button, Col, Form, Modal, Row } from 'react-bootstrap'
import * as CurrencyFormat from 'react-currency-format'
import { MsgInformativo } from '../../../../Utils/Toast/msgInformativo'
import { RootState } from '../../../../../store/store'
import {
updateInvoice,
} from '../../../../../store/features/Clientes/2096/AmazonInvoices'
import { updateInvoice } from '../../../../../store/features/Clientes/2096/AmazonInvoices'
// Redux
import { useDispatch, useSelector } from 'react-redux'
import DTO2096Fraccion from '../../DTO/DTO2096Fraccion'
@ -33,13 +31,13 @@ export function ComboFraccion(props: IComboFraccionProps) {
const [showModal, setShowModal] = useState(false)
const [Fraccion, setFraccion] = useState(props.FraccionOriginal)
const [header, setHeader] = useState('')
const [DescripcionGEMCO, setDescripcionGEMCO] = useState(props.Detail.pedimentoDescription)
const [DescripcionGEMCO, setDescripcionGEMCO] = useState(
props.Detail.pedimentoDescription
)
const [show, setShowMsg] = useState(false)
const [msg, setMsg] = useState('')
const [CumplimientoNormativo, setCumplimientoNormativo] = useState(
props.Detail.cumplimientoNormativo
? props.Detail.cumplimientoNormativo
: ''
props.Detail.cumplimientoNormativo ? props.Detail.cumplimientoNormativo : ''
)
const [Comentarios, setComentarios] = useState(
props.Detail.comentarios
@ -116,7 +114,7 @@ export function ComboFraccion(props: IComboFraccionProps) {
if (Validacion === 2) {
setShowModal(true)
} else if (Validacion === 1) {
/* setFraccion(props.Detail.destinationHTSCode)
/* setFraccion(props.Detail.destinationHTSCode)
const data: DTO2096Fraccion = {
id: props.IDDetail,
fraccion: Fraccion,
@ -130,13 +128,39 @@ export function ComboFraccion(props: IComboFraccionProps) {
.catch((e: Error) => {
alert('Ocurrio un error' + e.message.toString())
}) */
setFraccion(props.Detail.destinationHTSCode)
saveFraccion()
setFraccion(props.Detail.destinationHTSCode)
saveFraccion()
}
}
}, [Validacion, UserChanged])
const saveFraccion = () => {
if (Validacion === 2) {
if (CumplimientoNormativo.length === 0) {
setHeader('Error')
setMsg(
'Antes de poder guardar la informacion es necesario que proporcione el cumplimiento normativo'
)
setShowMsg(true)
return
}
if (Comentarios.length === 0) {
setHeader('Error')
setMsg(
'Antes de poder guardar la informacion es necesario que proporcione los comentarios'
)
setShowMsg(true)
return
}
if (DescripcionGEMCO.length === 0) {
setHeader('Error')
setMsg(
'Antes de poder guardar la informacion es necesario que proporcione la descripcion GEMCO'
)
setShowMsg(true)
return
}
}
DSAmazon.ValidaFraccionGET(Fraccion)
.then((response) => {
if (response.data.respuesta === 'Si') {
@ -178,10 +202,22 @@ export function ComboFraccion(props: IComboFraccionProps) {
onChange={(e) => changeValidacion(parseInt(e.target.value))}
value={Validacion}
>
{props.Detail.validaFraccionOriginal===0 ? <option value="0"> </option> : '' }
{props.Detail.validaFraccionOriginal===0 ? <option value="1"> = </option> : ''}
{props.Detail.validaFraccionOriginal === 0 ? (
<option value="0"> </option>
) : (
''
)}
{props.Detail.validaFraccionOriginal === 1 ? (
<option value="1"> = </option>
) : (
''
)}
<option value="2"> != </option>
{props.Detail.validaFraccionOriginal===3 ? <option value="3"> Ok </option> : ''}
{props.Detail.validaFraccionOriginal === 3 ? (
<option value="3"> Ok </option>
) : (
''
)}
</Form.Control>
<Modal
show={showModal}
@ -253,9 +289,7 @@ export function ComboFraccion(props: IComboFraccionProps) {
as="textarea"
id="PedimentoDescripcion"
size="sm"
value={
DescripcionGEMCO
}
value={DescripcionGEMCO}
/>
</Col>
</Row>

@ -277,8 +277,8 @@ export default function RtpAmazonPendingInvoivesDetail(
IDDetail={props.detail.id}
FraccionOriginal={props.detail.destinationHTSCode}
ConfirmaFraccion={props.detail.confirmaFraccion}
/* Deshabilitado={props.Deshabilitado} <= Asi estaba el dia 25/Ene/2023 */
Deshabilitado={props.detail.validaFraccionOriginal === 1}
Deshabilitado={false}
/* Deshabilitado={props.detail.validaFraccionOriginal === 1} Lo cqambie el 23/Feb/2023 porque estaba deshabilitando el combo desde un principio*/
Detail={props.detail}
/>
</td>
@ -291,8 +291,8 @@ export default function RtpAmazonPendingInvoivesDetail(
>
<CurrencyFormat
value={props.detail.fraccionGEMCO ? props.detail.fraccionGEMCO : ''}
disabled={true}
format={'######## ##'}
disabled={true}
format={'######## ##'}
displayType={'input'}
style={{
fontSize: '18px',
@ -317,7 +317,8 @@ export default function RtpAmazonPendingInvoivesDetail(
IDDetail={props.detail.id}
DescripcionOriginal={props.detail.pedimentoDescription}
ConfirmaDescripcion={props.detail.confirmaDescripcion}
Deshabilitado={props.detail.validaFraccionOriginal === 1}
/* Deshabilitado={props.detail.validaFraccionOriginal === 1} Lo cambie por que en el primer estatus estaba deshabilitando el combo de lqa fraccion*/
Deshabilitado={false}
Detail={props.detail}
/>
</td>

@ -636,6 +636,7 @@ export default function RptPendingAnswerFromAmazon(
</div>
</Card.Body>
</Card>
<Modal
show={ShowModal}
onHide={() => {

@ -342,7 +342,7 @@ export default function RptPendingAnswerFromAmazonDetail(
IDDetail={props.detail.id}
DescripcionOriginal={props.detail.pedimentoDescription}
ConfirmaDescripcion={props.detail.confirmaDescripcion}
Deshabilitado={true}
Deshabilitado={false}
Detail={props.detail}
/>
</td>
@ -525,7 +525,10 @@ export default function RptPendingAnswerFromAmazonDetail(
<Row style={{ paddingTop: '15px' }}>
<Col xs={12}>
<Alert key={'danger'} variant={'danger'}>
¿Esta seguro que esta fraccion ya la autorizo Amazon?
<Row>
<Col xs={3} style={{fontWeight:'bold', cursor: 'pointer'}} onClick={() => openLink(props.detail.itemId)}>({props.detail.itemId})</Col>
<Col xs={9}>¿Esta seguro que esta fraccion ya la autorizo Amazon?</Col>
</Row>
</Alert>
</Col>
</Row>
@ -576,9 +579,7 @@ export default function RptPendingAnswerFromAmazonDetail(
id="Comentarios"
size="sm"
value={
Comentarios.length
? Comentarios
: 'Clasificacion incorrecta.'
Comentarios
}
onChange={(e) => setComentarios(e.target.value)}
/>
@ -601,6 +602,7 @@ export default function RptPendingAnswerFromAmazonDetail(
<Button
variant="secondary"
onClick={() => {
setEstatusSwitch(!EstatusSwith)
setShowModal(false)
}}
>

@ -97,7 +97,7 @@ export function RptAmazonLinkInvoice2Traffic(
const url = window.URL.createObjectURL(new Blob([response.data]))
const link = document.createElement('a')
link.href = url
link.setAttribute('download', Referencia+'_FACTURAS_MODIFICA.xlsx')
link.setAttribute('download', Referencia+'_FACTURAS_MODIFICA.xls')
document.body.appendChild(link)
link.click()
loadReport()
@ -119,7 +119,7 @@ export function RptAmazonLinkInvoice2Traffic(
const url = window.URL.createObjectURL(new Blob([response.data]))
const link = document.createElement('a')
link.href = url
link.setAttribute('download', Referencia+'_PARTIDAS_MODIFICA.xlsx')
link.setAttribute('download', Referencia+'_PARTIDAS_MODIFICA.xls')
document.body.appendChild(link)
link.click()
loadReport()
@ -542,6 +542,14 @@ export function RptAmazonLinkInvoice2Traffic(
}}
>
</th>
<th
style={{
width: '70px',
backgroundColor: '#D3E0EA',
color: '#346288'
}}
>
</th>
</tr>
</thead>
<tbody>

@ -27,7 +27,7 @@ import { RootState } from '../../../../../../store/store'
import { useDispatch, useSelector } from 'react-redux'
import { updateInvoice } from '../../../../../../store/features/Clientes/2096/AmazonInvoices'
import * as CurrencyFormat from 'react-currency-format'
import { AiOutlineFileSearch } from 'react-icons/ai'
import { AiOutlineFileSearch, AiTwotoneEdit } from 'react-icons/ai'
import { BsFillChatRightTextFill } from 'react-icons/bs'
import DTO2096SightLine from '../../../DTO/DTO2096SightLine'
@ -305,21 +305,6 @@ export default function RtpAmazonInvoice2TrafficDetail(
}}
className="DetailData"
>
{/* <FormCheck
className="form-check form-switch form-control-lg"
id="switchEnabled"
type="switch"
disabled={
props.detail.fraccionGEMCO ===
props.detail.destinationHTSCode.replaceAll('.', '')
}
checked={EstatusSwith && props.detail.autorizado}
onChange={() => {
setEstatusSwitch(!EstatusSwith)
setUserChanged(true)
setShowModal(!EstatusSwith)
}}
label="" */}
<FormCheck
className="form-check form-switch form-control-lg"
id="switchEnabled"
@ -386,6 +371,16 @@ export default function RtpAmazonInvoice2TrafficDetail(
)}
</OverlayTrigger>
</td>
<td>
<IconContext.Provider
value={{
color: 'green',
size: '25px'
}}
>
<AiTwotoneEdit />
</IconContext.Provider>
</td>
</tr>
{/* <Modal

@ -29,6 +29,7 @@ export default interface DTO1868ReporteFactura {
idpdf: number,
idDoda: number,
idPrefile: number,
idbl: number,
scac: string,
caat: string,
fRegistro: string,

@ -20,7 +20,10 @@ export default interface DTO1868Transportista {
folioReferencia: string,
aduana: string,
idxml: number,
idpdf: number,
idpdf: number,
idDoda:number,
idPrefile:number,
idbl:number,
fRegistro: string,
fActualizacion: string,
activo: number

@ -608,6 +608,7 @@ export const Rpt1868Facturas: FC<IProps> = (props) => {
<th style={{ width: '50px', textAlign: 'center' }}>XML</th>
<th style={{ width: '50px', textAlign: 'center' }}>DODA</th>
<th style={{ width: '50px', textAlign: 'center' }}>Prefile</th>
<th style={{ width: '50px', textAlign: 'center' }}>BL</th>
<th style={{ width: '100px', textAlign: 'center' }}>Fecha factura</th>
<th style={{ width: '100px' }}>Invoice #</th>
<th style={{ width: '70px' }}>Ruta</th>
@ -701,7 +702,6 @@ export const Rpt1868Facturas: FC<IProps> = (props) => {
style={{ textAlign: 'center', cursor: 'pointer' }}
onClick={() => {
showPDF(MasterData.idPrefile)
//downloadFile(MasterData.idDoda, 24)
}}
>
<IconContext.Provider value={{ color: 'red', size: '20px' }}>
@ -724,6 +724,33 @@ export const Rpt1868Facturas: FC<IProps> = (props) => {
</div>
)}
</td>
<td>
{MasterData.idbl > 0 ? (
<div
style={{ textAlign: 'center', cursor: 'pointer' }}
onClick={() => {
showPDF(MasterData.idbl)
}}
>
<IconContext.Provider value={{ color: 'red', size: '20px' }}>
<BsFilePdfFill />
</IconContext.Provider>
</div>
) : (
<div
style={{ textAlign: 'center', cursor: 'pointer' }}
onClick={() => {
setID(MasterData.id)
setProceso(29)
setModalFileManager(true)
}}
>
<IconContext.Provider value={{ color: 'green', size: '25px' }}>
<MdCloudUpload />
</IconContext.Provider>
</div>
)}
</td>
<td style={{ textAlign: 'center' }}>
{MasterData.fechaFactura ? MasterData.fechaFactura.substring(0, 10) : ''}
</td>

@ -43,13 +43,61 @@ export const Rpt1868Transportista: FC<IProps> = (props) => {
const [msgColor, setMsgColor] = useState('primary')
const columnsConcepts = [
{
name: 'PDF',
width: '55px',
name: 'Factura',
width: '85px',
cell: (row: DTO1868Transportista) => (
<div
style={{ textAlign: 'center', cursor: 'pointer' }}
onClick={() => {
choosePDF(row)
showPDF(row.idpdf,8)
}}
>
<IconContext.Provider value={{ color: 'red', size: '25px' }}>
<BsFilePdfFill />
</IconContext.Provider>
</div>
),
},
{
name: 'DODA',
width: '70px',
cell: (row: DTO1868Transportista) => (
<div
style={{ textAlign: 'center', cursor: 'pointer' }}
onClick={() => {
showPDF(row.idDoda, 23)
}}
>
<IconContext.Provider value={{ color: 'red', size: '25px' }}>
<BsFilePdfFill />
</IconContext.Provider>
</div>
),
},
{
name: 'Prefile',
width: '70px',
cell: (row: DTO1868Transportista) => (
<div
style={{ textAlign: 'center', cursor: 'pointer' }}
onClick={() => {
showPDF(row.idPrefile, 24)
}}
>
<IconContext.Provider value={{ color: 'red', size: '25px' }}>
<BsFilePdfFill />
</IconContext.Provider>
</div>
),
},
{
name: 'BL',
width: '70px',
cell: (row: DTO1868Transportista) => (
<div
style={{ textAlign: 'center', cursor: 'pointer' }}
onClick={() => {
showPDF(row.idbl, 29)
}}
>
<IconContext.Provider value={{ color: 'red', size: '25px' }}>
@ -179,6 +227,26 @@ export const Rpt1868Transportista: FC<IProps> = (props) => {
},
]
const showPDF = (id: number, Proceso: number) => {
FService.getFileContent(id, Proceso)
.then((response: any) => {
if (response.status === 200) {
console.log(response.data)
const blob = new Blob([response.data], { type: 'application/pdf' })
const url = window.URL.createObjectURL(blob)
window.open(url)
}
})
.catch((e: Error) => {
setHeader('Error')
setMsg('A esta factura no se le ha anexado PDF')
setShowMsg(true)
return
})
}
const choosePDF = (row: DTO1868Transportista) => {
setID(row.id)
FileManagerDS.getFileContent(row.id, Process)

Loading…
Cancel
Save