diff --git a/src/Components/Clientes/Amazon/Reportes/Clasification/Pending/RptAmazonPendingClasificationInvoices.tsx b/src/Components/Clientes/Amazon/Reportes/Clasification/Pending/RptAmazonPendingClasificationInvoices.tsx index 532c124..8053a20 100644 --- a/src/Components/Clientes/Amazon/Reportes/Clasification/Pending/RptAmazonPendingClasificationInvoices.tsx +++ b/src/Components/Clientes/Amazon/Reportes/Clasification/Pending/RptAmazonPendingClasificationInvoices.tsx @@ -64,10 +64,9 @@ export default function RtpAmazonPendingInvoices( const [msg, setMsg] = useState('') const msgColor = 'primary' - const loadReport = () => { + const loadReport = async () => { DSAmazon.AmazonPendingClasificationInvoiceGET() .then((response) => { - console.log(response.data) dispatch(initializeInvoice([])) dispatch(populateInvoices(response.data)) }) @@ -80,24 +79,18 @@ export default function RtpAmazonPendingInvoices( loadReport() }, []) - const invoiceChecked = (row: I2096Headers) => { - let Invoice: I2096Headers[] = mInvoices.filter((item) => item.id === row.id) - const Obj = { ...Invoice[0] } - Obj.max = !Obj.max - dispatch(updateInvoice(Obj)) - - DSAmazon.SETInvoiceDetail2Unchecked(row.id) + const check4Updates = (IDInvoice: number) => { + DSAmazon.SETInvoiceDetail2Unchecked(IDInvoice) .then((response) => { - DSAmazon.AmazonInvoiceGET(row.id) + DSAmazon.AmazonInvoiceGET(IDInvoice) .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 - } + dispatch(updateInvoice(response.data[0])) + let Invoice: I2096Headers[] = response.data.filter( + (item) => item.id === IDInvoice + ) + const Obj = { ...Invoice[0] } + Obj.max = !Obj.max + dispatch(updateInvoice(Obj)) }) .catch((e: Error) => { setHeader('Error') @@ -114,6 +107,14 @@ export default function RtpAmazonPendingInvoices( }) } + const invoiceChecked = (row: I2096Headers) => { + if (!row.max) check4Updates(row.id) + let Invoice: I2096Headers[] = mInvoices.filter((item) => item.id === row.id) + const Obj = { ...Invoice[0] } + Obj.max = !Obj.max + dispatch(updateInvoice(Obj)) + } + const descargaArchivoExcepciones = () => { setShowModalW(false) setWaitingMessage('Archivo de excepciones') diff --git a/src/Components/Clientes/Amazon/Reportes/Clasification/WaitingAnswerFromAmazon/RptPendingAnswerFromAmazon.tsx b/src/Components/Clientes/Amazon/Reportes/Clasification/WaitingAnswerFromAmazon/RptPendingAnswerFromAmazon.tsx index b679efb..516f625 100644 --- a/src/Components/Clientes/Amazon/Reportes/Clasification/WaitingAnswerFromAmazon/RptPendingAnswerFromAmazon.tsx +++ b/src/Components/Clientes/Amazon/Reportes/Clasification/WaitingAnswerFromAmazon/RptPendingAnswerFromAmazon.tsx @@ -37,6 +37,14 @@ export interface IRptPendingAnswerFromAmazonProps {} export default function RptPendingAnswerFromAmazon( props: IRptPendingAnswerFromAmazonProps ) { + const [Usuario, setUsuario] = useState(() => { + const stickyValue = window.localStorage.getItem('UserId') + return stickyValue !== null ? JSON.parse(stickyValue) : '' + }) + const [Perfil, setPerfil] = useState(() => { + const stickyValue = window.localStorage.getItem('Perfil') + return stickyValue !== null ? JSON.parse(stickyValue) : 0 + }) const dispatch = useDispatch() const mInvoices = useSelector( (state: RootState) => state.AmazonInvoices.Invoice @@ -210,7 +218,7 @@ export default function RptPendingAnswerFromAmazon( - CLASIFICACION : facturas + CLASIFICACION : Facturas  - pendientes + con Excepciones - de respuesta @@ -260,391 +267,414 @@ export default function RptPendingAnswerFromAmazon( {mInvoices - ? mInvoices.map((MasterData) => { - return ( - <> - - { + if ( + a.clasificador === parseInt(Usuario) && + Perfil !== 'Clasificador lider' + ) { + return a + } else if ( + [ + 'Clasificador lider', + 'Administrador', + 'Sistemas' + ].includes(Perfil) + ) { + return a + } + }) + .map((MasterData) => { + return ( + <> + { - changeToggle(MasterData) - }} > - {MasterData.max === true ? ( - - - - ) : ( - - - - )} - - {MasterData.id} - - {existsExeptions(MasterData.id) > 0 ? ( + { + changeToggle(MasterData) + }} + > + {MasterData.max === true ? ( + + + + ) : ( + + + + )} + + {MasterData.id} + + {existsExeptions(MasterData.id) > 0 ? ( +
+ downloadExceptionsFile( + MasterData.id, + MasterData.invoiceNumber + ) + } + title="Archivo de excepciones" + > + + + +
+ ) : null} + + + { + sePuedeTerminarFactura(MasterData.id) + }} + label="" + /> + +
- downloadExceptionsFile( - MasterData.id, - MasterData.invoiceNumber - ) - } - title="Archivo de excepciones" + onClick={() => { + setIDFactura(MasterData.id) + setShowModalAnswerFile(!ShowModalAnswerFile) + }} + title="Archivo de respuesta" > - +
- ) : null} - - - { - sePuedeTerminarFactura(MasterData.id) - }} - label="" - /> - - -
{ - setIDFactura(MasterData.id) - setShowModalAnswerFile(!ShowModalAnswerFile) + + + {MasterData.commercialInvoiceDate} + + + {MasterData.invoiceNumber} + + + {MasterData.name} + + + {MasterData.incoterms} + + + {MasterData.totalInvoiceQuantityUnitOfMeasure} + + + {MasterData.totalInvoiceQuantity} + + + {MasterData.totalInvoiceWeightUnitOfMeasure} + + + {MasterData.totalInvoiceWeight} + + + {MasterData.totalInvoiceValueChargeOrAllowance} + + + {MasterData.totalInvoiceValueCurrencyISOCode} + + + {MasterData.totalInvoiceValueMonetaryAmount} + + - - - -
- - - {MasterData.commercialInvoiceDate} - - - {MasterData.invoiceNumber} - - - {MasterData.name} - - - {MasterData.incoterms} - - - {MasterData.totalInvoiceQuantityUnitOfMeasure} - - - {MasterData.totalInvoiceQuantity} - - - {MasterData.totalInvoiceWeightUnitOfMeasure} - - - {MasterData.totalInvoiceWeight} - - - {MasterData.totalInvoiceValueChargeOrAllowance} - - - {MasterData.totalInvoiceValueCurrencyISOCode} - - - {MasterData.totalInvoiceValueMonetaryAmount} - - - {mInvoices - .filter((value) => value.id === MasterData.id) - .map((row) => { - return row.detail.length - })} - - - {getUser(MasterData.clasificador)} - - - {MasterData.max ? ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {mInvoices.map((MD) => { - return ( - <> - {MD.detail - .filter( - (detail) => - MasterData.id === - detail.idHeader - ) - .map((detail) => { - return ( - - ) - })} - - ) - })} - -
- Item Id - - Item Description - - Pedimento Description - - Destination HTS Code - - Valida - - Confirme fraccion - - Fraccion GEMCO - - Confirme descripcion - - Descripcion GEMCO - - Country of Origin - - ProductGroup - - Brand - - Model - - Unit Measure - - Qty Shipped - - Unit Of measure - - Unit Net Weight - - Unit Cost - - Autorizado - - RN - - Comm -
- + {mInvoices + .filter((value) => value.id === MasterData.id) + .map((row) => { + return row.detail.length + })} + + + {getUser(MasterData.clasificador)} + - ) : null} - - ) - }) + {MasterData.max ? ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {mInvoices.map((MD) => { + return ( + <> + {MD.detail + .filter( + (detail) => + MasterData.id === + detail.idHeader + ) + .map((detail) => { + return ( + + ) + })} + + ) + })} + +
+ Item Id + + Item Description + + Pedimento Description + + Destination HTS Code + + Valida + + Confirme fraccion + + Fraccion GEMCO + + Confirme descripcion + + Descripcion GEMCO + + Country of Origin + + ProductGroup + + Brand + + Model + + Unit Measure + + Qty Shipped + + Unit Of measure + + Unit Net Weight + + Unit Cost + + Autorizado + + RN + + Comm +
+ + + ) : null} + + ) + }) : null} @@ -735,7 +765,7 @@ export default function RptPendingAnswerFromAmazon( - + { @@ -760,23 +790,29 @@ export default function RptPendingAnswerFromAmazon( alt="proccessing" /> {WaitingMessage} -
- +
+
- - - - {ResumeData - ? ResumeData.map((data) => { - return <> - - - - - - }) - : ''} -
ParteLista de facturas
{data.parte}{data.facturas.replaceAll(Factura,'')}
+ + Parte + + + Lista de facturas + + + {ResumeData + ? ResumeData.map((data) => { + return ( + <> + + {data.parte} + {data.facturas.replaceAll(Factura, '')} + + + ) + }) + : ''} +
diff --git a/src/Components/Clientes/Amazon/Reportes/Clasification/WaitingAnswerFromAmazon/RptPendingAnswerFromAmazonDetail.tsx b/src/Components/Clientes/Amazon/Reportes/Clasification/WaitingAnswerFromAmazon/RptPendingAnswerFromAmazonDetail.tsx index dad6cf8..f5c76f1 100644 --- a/src/Components/Clientes/Amazon/Reportes/Clasification/WaitingAnswerFromAmazon/RptPendingAnswerFromAmazonDetail.tsx +++ b/src/Components/Clientes/Amazon/Reportes/Clasification/WaitingAnswerFromAmazon/RptPendingAnswerFromAmazonDetail.tsx @@ -294,7 +294,7 @@ export default function RptPendingAnswerFromAmazonDetail( : '#000000', */ border: '2px solid #000000', color: '@000000', - width: '115px', + width: '135px', textAlign: 'right', borderRadius: '10px' }} diff --git a/src/Components/Clientes/Amazon/Reportes/Estatus/RtpAmazonInvoiceStatus.tsx b/src/Components/Clientes/Amazon/Reportes/Estatus/RtpAmazonInvoiceStatus.tsx new file mode 100644 index 0000000..3a7473e --- /dev/null +++ b/src/Components/Clientes/Amazon/Reportes/Estatus/RtpAmazonInvoiceStatus.tsx @@ -0,0 +1,480 @@ +import * as React from 'react' +import { useEffect, useState } from 'react' +import { RootState } from '../../../../../store/store' +import DSAmazon from '../../Services/Amazon.Services' +// Redux +import { useDispatch, useSelector } from 'react-redux' +import { + Alert, + Button, + Card, + Col, + Form, + Modal, + Row, + Table +} from 'react-bootstrap' +import { MsgInformativo } from '../../../../Utils/Toast/msgInformativo' +import { AiFillFileExcel } from 'react-icons/ai' +import { IconContext } from 'react-icons' +import { BsFilePdfFill } from 'react-icons/bs' +import { FaAmazon } from 'react-icons/fa' +import loadingImg from '../../../../../images/ajaxloader.gif' +import { MFileManager } from '../../../../Utils/MFileManager/MFileManager' +import DTO2096RptPayedOperations from '../../DTO/DTO2096RptPayedOperations' + +export interface IRptAmazonInvoiceStatusProps { +} + +export default function RptAmazonInvoiceStatus (props: IRptAmazonInvoiceStatusProps) { + const dispatch = useDispatch() + const mInvoices = useSelector( + (state: RootState) => state.AmazonInvoices.Invoice + ) + const [header, setHeader] = useState('') + const [Referencia, setReferencia] = useState('') + const [Inicio, setInicio] = useState(currentDate()) + const [Fin, setFin] = useState(currentDate()) + const [Data, setData] = useState([]) + const [show, setShowMsg] = useState(false) + const [ShowModal, setShowModal] = useState(false) + const [WaitingDialog, setWaitingDialog] = useState(false) + const [WaitingMessage, setWaitingMessage] = useState('') + const [msg, setMsg] = useState('') + const [ShowModalAnswerFile, setShowModalAnswerFile] = useState(false) + const [IDProcess, setIDProcess] = useState(25) + const [IDFactura, setIDFactura] = useState(0) + const [Invoices, setInvoices] = useState([]) + const msgColor = 'primary' + + function currentDate(): string { + var today = new Date() + var dd = String(today.getDate()).padStart(2, '0') + var mm = String(today.getMonth() + 1).padStart(2, '0') //January is 0! + var yyyy = today.getFullYear() + return yyyy + '-' + mm + '-' + dd + } + + const loadReport = () => { + DSAmazon.AmazonPayedOperationsGET(Inicio, Fin) + .then((response) => { + console.log(response.data) + setData(response.data) + /* dispatch(initializeInvoice([])) + dispatch(populateInvoices(response.data)) */ + }) + .catch((e: Error) => { + alert('Ocurrio un error' + e.message.toString()) + }) + } + + const downloadPDF = (id: number, InvoiceNumber: string) => { + setWaitingDialog(true) + setWaitingMessage(' archivo PDF ') + DSAmazon.PDFAmazonInvoiceGET(id) + .then((response: any) => { + if (response.status === 200) { + const url = window.URL.createObjectURL(new Blob([response.data])) + const link = document.createElement('a') + link.href = url + link.setAttribute('download', 'FAC_' + InvoiceNumber + '.pdf') + document.body.appendChild(link) + link.click() + setWaitingDialog(false) + } + }) + .catch((e: Error) => { + setHeader('Error') + setMsg('Ocurrio un error') + setShowMsg(true) + return + }) + } + + const downloadExcelInvoices = (Referencia: string) => { + setWaitingMessage(' archivo Excel ') + DSAmazon.GETAmazonFacturasByReference(Referencia) + .then((response: any) => { + if (response.status === 200) { + const url = window.URL.createObjectURL(new Blob([response.data])) + const link = document.createElement('a') + link.href = url + link.setAttribute('download', Referencia + '_FACTURAS_MODIFICA.xls') + document.body.appendChild(link) + link.click() + loadReport() + } + }) + .catch((e: Error) => { + setHeader('Error') + setMsg('Ocurrio un error') + setShowMsg(true) + return + }) + } + + const downloadExcelPartidas = (Referencia: string) => { + setWaitingMessage(' archivo Excel ') + DSAmazon.GETAmazonPartidasByReference(Referencia) + .then((response: any) => { + if (response.status === 200) { + const url = window.URL.createObjectURL(new Blob([response.data])) + const link = document.createElement('a') + link.href = url + link.setAttribute('download', Referencia + '_PARTIDAS_MODIFICA.xls') + document.body.appendChild(link) + link.click() + loadReport() + } + }) + .catch((e: Error) => { + setHeader('Error') + setMsg('Ocurrio un error') + setShowMsg(true) + return + }) + } + + const downloadNoPartes = (id: number, Factura: string) => { + DSAmazon.NoPartesAmazon2SIRGET(id) + .then((response: any) => { + if (response.status === 200) { + const url = window.URL.createObjectURL(new Blob([response.data])) + const link = document.createElement('a') + link.href = url + link.setAttribute( + 'download', + 'Plantilla de partes ' + Factura + '.xls' + ) + document.body.appendChild(link) + link.click() + setWaitingDialog(false) + } + }) + .catch((e: Error) => { + setHeader('Error') + setMsg('Ocurrio un error') + setShowMsg(true) + return + }) + } + + useEffect(() => { + loadReport() + }, []) + + return ( +
+ + + + + + + + + Operaciones Pagadas + + + + Desde + + setInicio(e.target.value)} + size="sm" + /> + + Hasta + + setFin(e.target.value)} + size="sm" + /> + + {loadReport()}}> + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + {Data + ? Data.map((MasterData) => { + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + ) + }) + : null} + +
idPDFFacturasPartidasArch Excep.No PartesReferenciaCommercial Invoice DateInvoice NumberIncotermsHAWBQty Unit of measureTot QtyWeight unit of measureTot weightTot Charge or allowanceTot currency ISO codeTot Monetary amountFecha pagoPatenteAduanaPedimento
+ {MasterData.id} + +
{ + downloadPDF( + MasterData.id, + MasterData.invoiceNumber + ) + }} + > + + + +
+
+
{ + downloadExcelInvoices(MasterData.referencia) + }} + > + + + +
+
+
{ + downloadExcelPartidas(MasterData.referencia) + }} + > + + + +
+
+
{ + setIDFactura(MasterData.id) + setShowModalAnswerFile(true) + }} + > + + + +
+
+
{ + downloadNoPartes( + MasterData.id, + MasterData.invoiceNumber + ) + }} + > + + + +
+
+ {MasterData.referencia} + + {MasterData.commercialInvoiceDate} + + {MasterData.invoiceNumber} + + {MasterData.incoterms} + + {MasterData.hawb} + + {MasterData.totalInvoiceQuantityUnitOfMeasure} + + {MasterData.totalInvoiceQuantity} + + {MasterData.totalInvoiceWeightUnitOfMeasure} + + {MasterData.totalInvoiceWeight} + + {MasterData.totalInvoiceValueChargeOrAllowance} + + {MasterData.totalInvoiceValueCurrencyISOCode} + + {MasterData.totalInvoiceValueMonetaryAmount} + + {MasterData.fPago.substring(0,10)} + + {MasterData.patente} + + {MasterData.aduana} + + {MasterData.pedimento} +
+
+
+
+ { + setWaitingDialog(false) + }} + backdrop="static" + keyboard={false} + size="sm" + dialogClassName={'modal-50w'} + centered + > + + + + + proccessing + Generando {WaitingMessage}... + + + + + { + setShowModalAnswerFile(false) + }} + size={'sm'} + dialogClassName={'modal-50w'} + > + +
+ + + + + + + +
+
+
+ + { + setShowMsg(false) + }} + /> +
+ ); +} diff --git a/src/index.tsx b/src/index.tsx index fbb0395..a38ef0d 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -50,6 +50,7 @@ import RptOperaciones from './Components/Reportes/RptOperaciones' import RptRelacionMission from './Components/GEMCO/Facturacion/Anexo/RptRelacionMission' import RptRelacionAlen from './Components/GEMCO/Facturacion/Anexo/RptRelacionAlen' import RptCasaCuervoCOVEs from './Components/Clientes/CasaCuervo/Reportes/RptCasaCuervoCOVEs' +import RptAmazonInvoiceStatus from './Components/Clientes/Amazon/Reportes/Estatus/RtpAmazonInvoiceStatus' require (`./css/${process.env.REACT_APP_ENVIRONMENT}-home.css`) function PageNotFound() { @@ -186,6 +187,10 @@ ReactDOM.render( } + /> + } /> } />