Unchecks Amazon Invoice Details

AmazonRelease1.1
unknown 1 year ago
parent fb1a79ae3f
commit 86c390f343
  1. 9
      src/Components/Clientes/Amazon/DTO/DTO2096NoParteVerificacion.ts
  2. 2
      src/Components/Clientes/Amazon/Interfaces/I2096NoParte.ts
  3. 138
      src/Components/Clientes/Amazon/Reportes/AmazonNoPartes.tsx
  4. 302
      src/Components/Clientes/Amazon/Reportes/Clasification/Pending/RptAmazonPendingClasificationInvoices.tsx
  5. 14
      src/Components/Clientes/Amazon/Reportes/Clasification/WaitingAnswerFromAmazon/RptPendingAnswerFromAmazon.tsx
  6. 22
      src/Components/Clientes/Amazon/Services/Amazon.Services.ts
  7. 2
      src/Components/Dashboard/DashboardClasificacion.tsx
  8. 2
      src/store/features/Clientes/2096/AmazonNoPartes.ts

@ -0,0 +1,9 @@
export default interface DTO2096NoParteVerificacion {
factura: string,
fFactura: string,
referencia: string,
patente: string,
aduana: string,
pedimento: string,
fPago: string
}

@ -12,7 +12,7 @@ export default interface I2096NoParte {
paisOrigen: string paisOrigen: string
unidadMedidaFactura: string unidadMedidaFactura: string
unidadMedidaCOVE: string unidadMedidaCOVE: string
FHActualizacion: string fhActualizacion: string
usuarioActualizacion: number usuarioActualizacion: number
activo: number activo: number
} }

@ -12,12 +12,15 @@ import { useDispatch, useSelector } from 'react-redux'
import { useEffect, useState } from 'react' import { useEffect, useState } from 'react'
import { MsgInformativo } from '../../../Utils/Toast/msgInformativo' import { MsgInformativo } from '../../../Utils/Toast/msgInformativo'
import { IconContext } from 'react-icons' import { IconContext } from 'react-icons'
import { BsFillPencilFill, BsFillTrashFill } from 'react-icons/bs' import { BsFillPencilFill } from 'react-icons/bs'
import I2096PaisClave from '../Interfaces/I2096PaisClave' import I2096PaisClave from '../Interfaces/I2096PaisClave'
import DTO2096PerfilesParecidos from '../DTO/DTO2096PerfilesParecidos' import DTO2096PerfilesParecidos from '../DTO/DTO2096PerfilesParecidos'
import DSAmazon from '../Services/Amazon.Services' import DSAmazon from '../Services/Amazon.Services'
import DTO2096NoParte from '../DTO/DTO2096NoParte' import DTO2096NoParte from '../DTO/DTO2096NoParte'
import I2096NoParteLog from '../Interfaces/I2096NoParteLog' import I2096NoParteLog from '../Interfaces/I2096NoParteLog'
import { HiClipboardCheck } from 'react-icons/hi'
import DTO2096NoParteVerificacion from '../DTO/DTO2096NoParteVerificacion'
export interface IAmazonNoPartesProps {} export interface IAmazonNoPartesProps {}
export default function AmazonNoPartes(props: IAmazonNoPartesProps) { export default function AmazonNoPartes(props: IAmazonNoPartesProps) {
@ -32,8 +35,10 @@ export default function AmazonNoPartes(props: IAmazonNoPartesProps) {
const [NoParteLOG, setNoParteLOG] = useState<I2096NoParteLog[]>([]) const [NoParteLOG, setNoParteLOG] = useState<I2096NoParteLog[]>([])
const [PaisClaves, setPaisClaves] = useState<I2096PaisClave[]>([]) const [PaisClaves, setPaisClaves] = useState<I2096PaisClave[]>([])
const [Data, setData] = useState<DTO2096PerfilesParecidos[]>([]) const [Data, setData] = useState<DTO2096PerfilesParecidos[]>([])
const [DataNoParteVerificacion, setDataNoParteVeriifcacion] = useState<DTO2096NoParteVerificacion[]>([])
const [ShowModal, setShowModal] = useState(false) const [ShowModal, setShowModal] = useState(false)
const [ShowModalLog, setShowModalLog] = useState(false) const [ShowModalLog, setShowModalLog] = useState(false)
const [ShowModalNoParteVerificacion, setShowModalNoParteVerificacion] = useState(false)
const [header, setHeader] = useState('') const [header, setHeader] = useState('')
const [msgColor, setMsgColor] = useState('primary') const [msgColor, setMsgColor] = useState('primary')
const [show, setShowMsg] = useState(false) const [show, setShowMsg] = useState(false)
@ -68,6 +73,31 @@ export default function AmazonNoPartes(props: IAmazonNoPartesProps) {
), ),
sortable: true sortable: true
}, },
{
name: '',
width: '60px',
cell: (row: I2096NoParte) => (
<Row>
<Col>
<div
style={{
cursor: 'pointer',
}}
onClick={() => {
loadDataNoParteVerificacion(row)
setShowModalNoParteVerificacion(true)
}}
>
<IconContext.Provider value={{ color: '#60DD0E', size: '30px' }}>
<HiClipboardCheck />
</IconContext.Provider>
</div>
</Col>
</Row>
),
sortable: true
},
{ {
name: '', name: '',
width: '50px', width: '50px',
@ -136,13 +166,13 @@ export default function AmazonNoPartes(props: IAmazonNoPartesProps) {
{ {
name: 'UMF', name: 'UMF',
width: '80px', width: '80px',
selector: (row: I2096NoParte) => row.unidadMedidaFactura, selector: (row: I2096NoParte) => row.unidadMedidaFactura ? row.unidadMedidaFactura : '',
sortable: true sortable: true
}, },
{ {
name: 'UMC', name: 'UMC',
width: '80px', width: '80px',
selector: (row: I2096NoParte) => row.unidadMedidaCOVE, selector: (row: I2096NoParte) => row.unidadMedidaCOVE ? row.unidadMedidaCOVE : '',
sortable: true sortable: true
}, },
{ {
@ -161,8 +191,8 @@ export default function AmazonNoPartes(props: IAmazonNoPartesProps) {
}, },
{ {
name: 'Fecha / Hora', name: 'Fecha / Hora',
width: '200px', width: '220px',
selector: (row: I2096NoParte) => row.fechaConfirmacion, selector: (row: I2096NoParte) => row.fhActualizacion,
wrap: true, wrap: true,
sortable: true sortable: true
}, },
@ -232,6 +262,50 @@ export default function AmazonNoPartes(props: IAmazonNoPartesProps) {
} }
] ]
const colsNoPartesVerificacion = [
{
name: 'Factura',
width: '350px',
cell: (row: DTO2096NoParteVerificacion) => row.factura,
sortable: true
},
{
name: 'Fecha factura',
width: '130px',
cell: (row: DTO2096NoParteVerificacion) => row.fFactura,
sortable: true
},
{
name: 'Referencia',
width: '140px',
cell: (row: DTO2096NoParteVerificacion) => row.referencia,
sortable: true,
center: true
},
{
name: 'Patente',
width: '110px',
cell: (row: DTO2096NoParteVerificacion) => row.patente,
sortable: true,
center: true
},
{
name: 'Aduana',
width: '100px',
cell: (row: DTO2096NoParteVerificacion) => row.aduana,
wrap: true,
sortable: true,
},
{
name: 'Pedimento',
width: '150px',
cell: (row: DTO2096NoParteVerificacion) => row.pedimento,
wrap: true,
sorteable: true
}
]
const openLink = (item: string) => { const openLink = (item: string) => {
window.open('https://www.amazon.com/dp/' + item) window.open('https://www.amazon.com/dp/' + item)
} }
@ -274,14 +348,27 @@ export default function AmazonNoPartes(props: IAmazonNoPartesProps) {
setTipoOperacion(row.tipoOperacion) setTipoOperacion(row.tipoOperacion)
setFraccion(row.fraccion.substring(0, 8)) setFraccion(row.fraccion.substring(0, 8))
setSubdivision(row.subdivision) setSubdivision(row.subdivision)
setPaisOrigen(row.paisOrigen) setPaisOrigen(row.paisOrigen ? row.paisOrigen : '')
setDescripcionFactura(row.descripcionFactura) setDescripcionFactura(row.descripcionFactura)
setDescripcionAgenteAduanal(row.descripcionAgenteAduanal) setDescripcionAgenteAduanal(row.descripcionAgenteAduanal)
setUMF(row.unidadMedidaFactura) setUMF(row.unidadMedidaFactura ? row.unidadMedidaFactura : '')
setFechaInsercion(row.FHActualizacion) setFechaInsercion(row.fhActualizacion)
setClasificador(getUser(row.usuarioActualizacion)) setClasificador(getUser(row.usuarioActualizacion))
} }
const loadDataNoParteVerificacion = (row: I2096NoParte) => {
AmazonDS.NoParteVerificacionGET(row.parte)
.then((response) => {
setDataNoParteVeriifcacion(response.data)
})
.catch((e: Error) => {
setHeader('Error')
setMsg('Ocurrio un error: ' + e)
setShowMsg(true)
return
})
}
const loadPaisesClaves = () => { const loadPaisesClaves = () => {
AmazonDS.PaisClavesGET() AmazonDS.PaisClavesGET()
.then((response) => { .then((response) => {
@ -309,7 +396,6 @@ export default function AmazonNoPartes(props: IAmazonNoPartesProps) {
} }
AmazonDS.NoPartesGet(Search) AmazonDS.NoPartesGet(Search)
.then((response) => { .then((response) => {
//console.log(JSON.stringify(response.data))
dispatch(populateNoPartes(response.data)) dispatch(populateNoPartes(response.data))
}) })
.catch((e: Error) => { .catch((e: Error) => {
@ -552,6 +638,40 @@ export default function AmazonNoPartes(props: IAmazonNoPartesProps) {
{/* </div> */} {/* </div> */}
</Modal.Body> </Modal.Body>
</Modal> </Modal>
<Modal
show={ShowModalNoParteVerificacion}
onHide={() => {
setShowModalNoParteVerificacion(false)
}}
size={'sm'}
dialogClassName={'modal-90w'}
>
<Modal.Header closeButton>
<Modal.Title>No Parte: {Search}</Modal.Title>
</Modal.Header>
<Modal.Body>
<Row style={{ paddingTop: '15px' }}>
<Col xs={12}>
<DataTable
noHeader
fixedHeaderScrollHeight="400px"
defaultSortFieldId={'id'}
defaultSortAsc={true}
pagination
highlightOnHover
striped={true}
dense={true}
columns={colsNoPartesVerificacion}
data={DataNoParteVerificacion.filter(function (el) {
return el
})}
/>
</Col>
</Row>
{/* </div> */}
</Modal.Body>
</Modal>
<MsgInformativo <MsgInformativo
show={show} show={show}
msg={msg} msg={msg}

@ -10,7 +10,11 @@ import {
Table Table
} from 'react-bootstrap' } from 'react-bootstrap'
import { IconContext } from 'react-icons' import { IconContext } from 'react-icons'
import { BsChevronDown, BsChevronRight } from 'react-icons/bs' import {
BsChevronDown,
BsChevronRight,
BsFillXCircleFill
} from 'react-icons/bs'
import { FaAmazon } from 'react-icons/fa' import { FaAmazon } from 'react-icons/fa'
import I2096Headers from '../../../Interfaces/I2096Header' import I2096Headers from '../../../Interfaces/I2096Header'
import DSAmazon from '../../../Services/Amazon.Services' import DSAmazon from '../../../Services/Amazon.Services'
@ -26,6 +30,9 @@ import loadingImg from '../../../../../../images/ajaxloader.gif'
import { useDispatch, useSelector } from 'react-redux' import { useDispatch, useSelector } from 'react-redux'
import RtpAmazonPendingClasificationInvoicesDetail from './RptAmazonPendingClasificationInvoicesDetail' import RtpAmazonPendingClasificationInvoicesDetail from './RptAmazonPendingClasificationInvoicesDetail'
import ClasificatorAssign from './ClasificatorAssign' import ClasificatorAssign from './ClasificatorAssign'
import { FcQuestions, FcSettings } from 'react-icons/fc'
import { MFileManager } from '../../../../../Utils/MFileManager/MFileManager'
import CorresponsalesTabuladoresServices from '../../../../../../Services/Corresponsalias/Corresponsales.Tabuladores.Services'
export interface IRtpAmazonPendingInvoicesProps {} export interface IRtpAmazonPendingInvoicesProps {}
export default function RtpAmazonPendingInvoices( export default function RtpAmazonPendingInvoices(
@ -47,6 +54,9 @@ export default function RtpAmazonPendingInvoices(
const [IDFactura, setIDFactura] = useState(0) const [IDFactura, setIDFactura] = useState(0)
const [Factura, setFactura] = useState('') const [Factura, setFactura] = useState('')
const [show, setShowMsg] = useState(false) const [show, setShowMsg] = useState(false)
const [ShowModalDeleteInvoice, setShowModalDeleteInvoice] = useState(false)
const [ShowModalInvoiceFile, setShowModalInvoiceFile] = useState(false)
const [IDProcess, setIDProcess] = useState(30)
const [WaitingDialog, setWaitingDialog] = useState(false) const [WaitingDialog, setWaitingDialog] = useState(false)
const [WaitingMessage, setWaitingMessage] = useState('') const [WaitingMessage, setWaitingMessage] = useState('')
const [ShowModal, setShowModal] = useState(false) const [ShowModal, setShowModal] = useState(false)
@ -75,6 +85,33 @@ export default function RtpAmazonPendingInvoices(
const Obj = { ...Invoice[0] } const Obj = { ...Invoice[0] }
Obj.max = !Obj.max Obj.max = !Obj.max
dispatch(updateInvoice(Obj)) dispatch(updateInvoice(Obj))
DSAmazon.SETInvoiceDetail2Unchecked(row.id)
.then((response) => {
DSAmazon.AmazonInvoiceGET(row.id)
.then((response) => {
if (response.data) {
//dispatch(updateInvoice(response.data[0]))
const Obj = { ...response.data[0] }
console.log(JSON.stringify(Obj))
Obj.max = !Obj.max
dispatch(updateInvoice(Obj))
return
}
})
.catch((e: Error) => {
setHeader('Error')
setMsg('Ocurrio un error')
setShowModalDeleteInvoice(false)
return
})
})
.catch((e: Error) => {
setHeader('Error')
setMsg('Ocurrio un error')
setShowModalDeleteInvoice(false)
return
})
} }
const descargaArchivoExcepciones = () => { const descargaArchivoExcepciones = () => {
@ -84,12 +121,12 @@ export default function RtpAmazonPendingInvoices(
DSAmazon.ExceptionsFileAmazonGET(IDFactura) DSAmazon.ExceptionsFileAmazonGET(IDFactura)
.then((response: any) => { .then((response: any) => {
if (response.status === 200) { if (response.status === 200) {
const url = window.URL.createObjectURL(new Blob([response.data])) /* const url = window.URL.createObjectURL(new Blob([response.data]))
const link = document.createElement('a') const link = document.createElement('a')
link.href = url link.href = url
link.setAttribute('download', 'Excepciones ' + Factura + '.xlsx') link.setAttribute('download', 'Excepciones ' + Factura + '.xlsx')
document.body.appendChild(link) document.body.appendChild(link)
link.click() link.click() */
DSAmazon.EnviaEsperaRespuestaAmazon(IDFactura) DSAmazon.EnviaEsperaRespuestaAmazon(IDFactura)
.then((response) => { .then((response) => {
loadReport() loadReport()
@ -104,7 +141,6 @@ export default function RtpAmazonPendingInvoices(
setShowMsg(true) setShowMsg(true)
return return
}) })
} }
}) })
.catch((e: Error) => { .catch((e: Error) => {
@ -116,9 +152,13 @@ export default function RtpAmazonPendingInvoices(
} }
const descargaPantillaPartes = () => { const descargaPantillaPartes = () => {
let Invoice: I2096Headers[] = mInvoices.filter((item) => item.id === IDFactura) let Invoice: I2096Headers[] = mInvoices.filter(
(item) => item.id === IDFactura
)
let TotalPartidas = Invoice[0].detail.length let TotalPartidas = Invoice[0].detail.length
let TotalFraccionesPreviamenteRegistradas = Invoice[0].detail.filter((item) => item.confirmaFraccion === 3).length let TotalFraccionesPreviamenteRegistradas = Invoice[0].detail.filter(
(item) => item.confirmaFraccion === 3
).length
if (TotalPartidas === TotalFraccionesPreviamenteRegistradas) { if (TotalPartidas === TotalFraccionesPreviamenteRegistradas) {
setShowModal(false) setShowModal(false)
DSAmazon.TerminaClasificarFactura(IDFactura) DSAmazon.TerminaClasificarFactura(IDFactura)
@ -145,7 +185,10 @@ export default function RtpAmazonPendingInvoices(
const url = window.URL.createObjectURL(new Blob([response.data])) const url = window.URL.createObjectURL(new Blob([response.data]))
const link = document.createElement('a') const link = document.createElement('a')
link.href = url link.href = url
link.setAttribute('download', 'Plantilla de partes '+Factura+'.xls') link.setAttribute(
'download',
'Plantilla de partes ' + Factura + '.xls'
)
document.body.appendChild(link) document.body.appendChild(link)
link.click() link.click()
DSAmazon.TerminaClasificarFactura(IDFactura) DSAmazon.TerminaClasificarFactura(IDFactura)
@ -194,6 +237,69 @@ export default function RtpAmazonPendingInvoices(
}) })
} }
const eliminaFactura = () => {
DSAmazon.EliminaFactura(IDFactura)
.then((response) => {
if (response.data) {
setIDFactura(0)
setFactura('')
setShowModalDeleteInvoice(false)
loadReport()
return
}
})
.catch((e: Error) => {
setHeader('Error')
setMsg('Ocurrio un error')
setShowModalDeleteInvoice(false)
return
})
}
const syncInvoicesInFilePath = () => {
setWaitingDialog(true)
DSAmazon.UploadAndSyncAmazonInvoicesInFilePath()
.then((response) => {
if (response.data) {
setIDFactura(0)
setFactura('')
setShowModalInvoiceFile(false)
setWaitingDialog(false)
loadReport()
return
}
})
.catch((e: Error) => {
setHeader('Error')
setMsg('Ocurrio un error')
setShowModalDeleteInvoice(false)
setWaitingDialog(false)
return
})
}
const syncInvoicesByFTP = () => {
setWaitingDialog(true)
DSAmazon.UploadAndSyncAmazonInvoicesByFTP()
.then((response) => {
if (response.data) {
setIDFactura(0)
setFactura('')
setShowModalInvoiceFile(false)
setWaitingDialog(false)
loadReport()
return
}
})
.catch((e: Error) => {
setHeader('Error')
setMsg('Ocurrio un error')
setShowModalDeleteInvoice(false)
setWaitingDialog(false)
return
})
}
return ( return (
<div> <div>
<Card> <Card>
@ -203,11 +309,53 @@ export default function RtpAmazonPendingInvoices(
<Card.Title> <Card.Title>
<IconContext.Provider value={{ color: '#F6C34F', size: '8%' }}> <IconContext.Provider value={{ color: '#F6C34F', size: '8%' }}>
<FaAmazon /> <FaAmazon />
</IconContext.Provider>{' '} </IconContext.Provider>
CLASIFICACION : facturas pendientes CLASIFICACION : facturas pendientes
</Card.Title> </Card.Title>
</Col> </Col>
<Col xs={4}></Col> <Col xs={5}></Col>
<Col xs={2}>
<Alert
variant="primary"
style={{
visibility: [
'Clasificador lider',
'Administrador',
'Sistemas'
].includes(Perfil)
? 'visible'
: 'hidden'
}}
>
<span
style={{ cursor: 'pointer' }}
title="Sube facturas enviadas por correo electronico"
onClick={() => {
setShowModalInvoiceFile(true)
}}
>
<IconContext.Provider value={{ color: 'blue', size: '35px' }}>
<FcQuestions />
</IconContext.Provider>
</span>
<span
style={{
cursor: 'pointer',
paddingLeft: '40px',
visibility: 'hidden'
}}
title="Descarga y sincroniza facturas en este momento"
onClick={() => {
syncInvoicesByFTP()
}}
>
<IconContext.Provider value={{ color: 'blue', size: '35px' }}>
<FcSettings />
</IconContext.Provider>
</span>
</Alert>
</Col>
</Row> </Row>
</Card.Body> </Card.Body>
</Card> </Card>
@ -251,9 +399,11 @@ export default function RtpAmazonPendingInvoices(
) { ) {
return a return a
} else if ( } else if (
['Clasificador lider', 'Administrador', 'Clasificador'].includes( [
Perfil 'Clasificador lider',
) 'Administrador',
'Sistemas'
].includes(Perfil)
) { ) {
return a return a
} }
@ -315,6 +465,29 @@ export default function RtpAmazonPendingInvoices(
</td> </td>
<td style={{ width: '150px' }}> <td style={{ width: '150px' }}>
{MasterData.invoiceNumber} {MasterData.invoiceNumber}
<span
style={{
paddingLeft: '5px',
visibility: [
'Clasificador lider',
'Administrador',
'Sistemas'
].includes(Perfil)
? 'visible'
: 'hidden'
}}
onClick={() => {
setIDFactura(MasterData.id)
setFactura(MasterData.invoiceNumber)
setShowModalDeleteInvoice(true)
}}
>
<IconContext.Provider
value={{ color: '#DD0E0E' }}
>
<BsFillXCircleFill />
</IconContext.Provider>
</span>
</td> </td>
<td <td
style={{ width: '50px', textAlign: 'center' }} style={{ width: '50px', textAlign: 'center' }}
@ -549,7 +722,6 @@ export default function RtpAmazonPendingInvoices(
> >
Unit Net Weight Unit Net Weight
</th> </th>
<th <th
style={{ style={{
width: '70px', width: '70px',
@ -736,9 +908,9 @@ export default function RtpAmazonPendingInvoices(
onHide={() => { onHide={() => {
setWaitingDialog(false) setWaitingDialog(false)
}} }}
backdrop='static' backdrop="static"
keyboard={false} keyboard={false}
size='sm' size="sm"
dialogClassName={'modal-50w'} dialogClassName={'modal-50w'}
centered centered
> >
@ -746,11 +918,109 @@ export default function RtpAmazonPendingInvoices(
<Modal.Title></Modal.Title> <Modal.Title></Modal.Title>
</Modal.Header> </Modal.Header>
<Modal.Body> <Modal.Body>
<img src={loadingImg} style={{ height: '150px' }} alt='proccessing' /> <img src={loadingImg} style={{ height: '150px' }} alt="proccessing" />
Generando {WaitingMessage}... Generando {WaitingMessage}...
</Modal.Body> </Modal.Body>
<Modal.Footer></Modal.Footer> <Modal.Footer></Modal.Footer>
</Modal> </Modal>
<Modal
show={ShowModalDeleteInvoice}
onHide={() => {
setShowModal(false)
}}
size={'sm'}
dialogClassName={'modal-50w'}
>
<Modal.Body>
<div style={{ height: '180px' }}>
<Row style={{ paddingTop: '15px' }}>
<Col xs={1}></Col>
<Col xs={10}>
<Alert key={'danger'} variant={'danger'}>
¿Esta seguro de eliminar esta factura: <b>{Factura}</b>?
</Alert>
</Col>
<Col xs={1}></Col>
</Row>
<Row style={{ paddingTop: '15px' }}>
<Col xs={6} style={{ textAlign: 'center' }}>
<Button
variant="secondary"
onClick={() => {
setShowModalDeleteInvoice(false)
}}
>
&nbsp;&nbsp;Cerrar&nbsp;&nbsp;
</Button>
</Col>
<Col xs={6} style={{ textAlign: 'center' }}>
<Button
variant="danger"
onClick={() => {
eliminaFactura()
}}
>
&nbsp;&nbsp;Elimina factura&nbsp;&nbsp;
</Button>
</Col>
</Row>
</div>
</Modal.Body>
</Modal>
<Modal
show={ShowModalInvoiceFile}
onHide={() => {
setShowModalInvoiceFile(false)
}}
size={'sm'}
dialogClassName={'modal-50w'}
>
<Modal.Body>
<div style={{ height: '330px' }}>
<Row style={{ paddingTop: '15px' }}>
<Col xs={12}>
<Alert
key={'danger'}
variant={'danger'}
style={{ textAlign: 'center' }}
>
Proporcione la(facturas) que llegaron por correo en el proceso
de Amazon
</Alert>
</Col>
</Row>
<Row style={{ paddingTop: '15px' }}>
<Col></Col>
<Col xs={10} style={{ textAlign: 'center' }}>
<MFileManager
IDTrafico={IDFactura}
Proceso={IDProcess}
showPreview={0}
canEdit={true}
Leyenda="Seleccione las facturas de Amazon"
/>
</Col>
<Col></Col>
</Row>
<Row style={{ paddingTop: '80px' }}>
<Col xs={10}></Col>
<Col xs={2}>
<Button
variant="primary"
onClick={() => {
syncInvoicesInFilePath()
}}
>
&nbsp;&nbsp;Sincronize...&nbsp;&nbsp;
</Button>
</Col>
</Row>
</div>
</Modal.Body>
</Modal>
<MsgInformativo <MsgInformativo
show={show} show={show}
msg={msg} msg={msg}

@ -200,19 +200,6 @@ export default function RptPendingAnswerFromAmazon(
}) })
} }
/* const relacionaIDArchivoRespuestaConFactura = (idFile : number) => {
DSAmazon.ArchivoRespuestaAmazon(IDFactura, idFile)
.then((response) => {
})
.catch((e: Error) => {
setIDFactura(0)
setHeader('Error')
setMsg('Ocurrio un error')
setShowMsg(true)
return
})
} */
return ( return (
<div> <div>
<Card> <Card>
@ -748,6 +735,7 @@ export default function RptPendingAnswerFromAmazon(
</div> </div>
</Modal.Body> </Modal.Body>
</Modal> </Modal>
<Modal <Modal
show={WaitingDialog} show={WaitingDialog}
onHide={() => { onHide={() => {

@ -17,11 +17,15 @@ import I2096NoParteLog from '../Interfaces/I2096NoParteLog'
import DTO2096TraficoFieldsUpdate from '../DTO/DTO2096TraficoFieldsUpdate' import DTO2096TraficoFieldsUpdate from '../DTO/DTO2096TraficoFieldsUpdate'
import DTO2096RELParteFactura from '../DTO/DTO2096RELParteFactura' import DTO2096RELParteFactura from '../DTO/DTO2096RELParteFactura'
import DTO2096RptPayedOperations from '../DTO/DTO2096RptPayedOperations' import DTO2096RptPayedOperations from '../DTO/DTO2096RptPayedOperations'
import DTO2096NoParteVerificacion from '../DTO/DTO2096NoParteVerificacion'
class AmazonDataService { class AmazonDataService {
AmazonPendingClasificationInvoiceGET() { AmazonPendingClasificationInvoiceGET() {
return http.get<I2096Headers[]>(`/AmazonInvoice/AmazonPendingClasificationInvoiceGet`) return http.get<I2096Headers[]>(`/AmazonInvoice/AmazonPendingClasificationInvoiceGet`)
} }
AmazonInvoiceGET(id: number) {
return http.get<I2096Headers[]>(`/AmazonInvoice/AmazonInvoiceGET?id=${id}`)
}
InvoicePendingFromAmazonGET() { InvoicePendingFromAmazonGET() {
return http.get<I2096Headers[]>(`/AmazonInvoice/InvoicePendingFromAmazonGET`) return http.get<I2096Headers[]>(`/AmazonInvoice/InvoicePendingFromAmazonGET`)
} }
@ -34,9 +38,9 @@ class AmazonDataService {
SeRecibioRespuestaDeAmazon(id: number) { SeRecibioRespuestaDeAmazon(id: number) {
return http.get<DTO2096Estatus>(`/AmazonInvoice/SeRecibioRespuestaDeAmazon?id=${id}`) return http.get<DTO2096Estatus>(`/AmazonInvoice/SeRecibioRespuestaDeAmazon?id=${id}`)
} }
/*SePuedeTerminardeClasificarFacturaEsperandoRespuesta(id: number) { EliminaFactura(id: number) {
return http.get<DTORespuesta>(`/AmazonInvoice/SePuedeTerminardeClasificarFacturaEsperandoRespuesta?id=${id}`) return http.delete<boolean>(`/AmazonInvoice/AmazonInvoiceDelete?id=${id}`)
} */ }
EnviaEsperaRespuestaAmazon(id: number) { EnviaEsperaRespuestaAmazon(id: number) {
return http.get<DTORespuesta>(`/AmazonInvoice/EnviaEsperaRespuestaAmazon?id=${id}`) return http.get<DTORespuesta>(`/AmazonInvoice/EnviaEsperaRespuestaAmazon?id=${id}`)
} }
@ -161,11 +165,23 @@ class AmazonDataService {
NoPartesLogGET(id: number) { NoPartesLogGET(id: number) {
return http.get<I2096NoParteLog[]>(`/AmazonInvoice/NoPartesLogGET?id=${id}`) return http.get<I2096NoParteLog[]>(`/AmazonInvoice/NoPartesLogGET?id=${id}`)
} }
NoParteVerificacionGET(Parte: string) {
return http.get<DTO2096NoParteVerificacion[]>(`/AmazonInvoice/NoParteVerificacionGET?Parte=${Parte}`)
}
PerfilesParecidosGet(Perfil: string) { PerfilesParecidosGet(Perfil: string) {
return http.get<DTO2096PerfilesParecidos[]>(`/Usuarios/Catalogo/Usuarios/PerfilesParecidos?Perfil=${Perfil}`) return http.get<DTO2096PerfilesParecidos[]>(`/Usuarios/Catalogo/Usuarios/PerfilesParecidos?Perfil=${Perfil}`)
} }
AsignaFacturaClasificador(IdUsuario: number, IdFactura: number) { AsignaFacturaClasificador(IdUsuario: number, IdFactura: number) {
return http.put<DTO2096PerfilesParecidos[]>(`/AmazonInvoice/AsignaFactura?IdUsuario=${IdUsuario}&IdFactura=${IdFactura}`) return http.put<DTO2096PerfilesParecidos[]>(`/AmazonInvoice/AsignaFactura?IdUsuario=${IdUsuario}&IdFactura=${IdFactura}`)
} }
UploadAndSyncAmazonInvoicesInFilePath() {
return http.get<boolean>(`/AmazonInvoice/SyncInvoicesInFilePath`)
}
UploadAndSyncAmazonInvoicesByFTP() {
return http.get<boolean>(`/AmazonInvoice/SyncInvoicesByFTP`)
}
SETInvoiceDetail2Unchecked(id: number) {
return http.get<I2096Headers>(`/AmazonInvoice/SETInvoiceDetail2Unchecked?id=${id}`)
}
} }
export default new AmazonDataService() export default new AmazonDataService()

@ -111,7 +111,7 @@ export function DashboardClasificacion(props: IDashboardClasificacionProps) {
to='../RptPendingAnswerFromAmazon' to='../RptPendingAnswerFromAmazon'
style={{ textDecoration: 'none', float: 'left' }} style={{ textDecoration: 'none', float: 'left' }}
> >
Pendientes de respuesta <span style={{fontSize:'50px', color: 'red'}}>({PendientesRespuesta})</span> Facturas con excepciones <span style={{fontSize:'50px', color: 'red'}}>({PendientesRespuesta})</span>
</Link></Col> </Link></Col>
</Row> </Row>
</Card.Body> </Card.Body>

@ -8,6 +8,8 @@ export const AmazonNoPartesSlice = createSlice({
initialState: initialState, initialState: initialState,
reducers: { reducers: {
populateNoPartes : (state, action: PayloadAction<I2096NoParte[]>) => { populateNoPartes : (state, action: PayloadAction<I2096NoParte[]>) => {
const newArr = state.NoPartes.filter(data => data.id === 0);
state.NoPartes=newArr
action.payload.forEach(newItem => { action.payload.forEach(newItem => {
var Existe = state.NoPartes.find(function(onMemoryItem) { var Existe = state.NoPartes.find(function(onMemoryItem) {
return onMemoryItem.id === newItem.id; return onMemoryItem.id === newItem.id;

Loading…
Cancel
Save