diff --git a/public/index.html b/public/index.html index 8b8a88a..106666e 100644 --- a/public/index.html +++ b/public/index.html @@ -24,6 +24,12 @@ work correctly both with client-side routing and a non-root public URL. Learn how to configure a non-root public URL by running `npm run build`. --> + + + GEMCO diff --git a/src/Components/Clientes/Amazon/DTO/DTO2096SightLine.ts b/src/Components/Clientes/Amazon/DTO/DTO2096SightLine.ts new file mode 100644 index 0000000..d90eb66 --- /dev/null +++ b/src/Components/Clientes/Amazon/DTO/DTO2096SightLine.ts @@ -0,0 +1,5 @@ +export default interface DTO2096SightLine { + id: number, + sightLine: boolean, + comentariosSightLine: string +} \ No newline at end of file diff --git a/src/Components/Clientes/Amazon/Interfaces/I2096Detail.ts b/src/Components/Clientes/Amazon/Interfaces/I2096Detail.ts index c12faa6..a8d76dc 100644 --- a/src/Components/Clientes/Amazon/Interfaces/I2096Detail.ts +++ b/src/Components/Clientes/Amazon/Interfaces/I2096Detail.ts @@ -38,5 +38,7 @@ export default interface I2096Detail { autorizado: boolean requerimientoNormativo: string comentarios: string + sightLine: boolean + comentariosSightLine: string activo: number } diff --git a/src/Components/Clientes/Amazon/Reportes/RptAmazonFinishedInvoices.tsx b/src/Components/Clientes/Amazon/Reportes/RptAmazonFinishedClasificationInvoices.tsx similarity index 87% rename from src/Components/Clientes/Amazon/Reportes/RptAmazonFinishedInvoices.tsx rename to src/Components/Clientes/Amazon/Reportes/RptAmazonFinishedClasificationInvoices.tsx index 59befec..e680e74 100644 --- a/src/Components/Clientes/Amazon/Reportes/RptAmazonFinishedInvoices.tsx +++ b/src/Components/Clientes/Amazon/Reportes/RptAmazonFinishedClasificationInvoices.tsx @@ -17,63 +17,63 @@ import { RootState } from '../../../../store/store' import { initializeInvoice, populateInvoices, - updateInvoice, + updateInvoice } from '../../../../store/features/Clientes/2096/AmazonInvoices' -import RtpAmazonPendingInvoicesDetail from './RptAmazonPendingInvoicesDetail' +import RtpAmazonPendingInvoicesDetail from './RptAmazonPendingClasificationInvoicesDetail' // Redux import { useDispatch, useSelector } from 'react-redux' -export interface IRptAmazonFinishedInvoicesProps { -} +export interface IRptAmazonFinishedInvoicesProps {} -export default function RptAmazonFinishedInvoices (props: IRptAmazonFinishedInvoicesProps) { - const dispatch = useDispatch() - const mInvoices = useSelector( - (state: RootState) => state.AmazonInvoices.Invoice - ) - const [Inicio, setInicio] = useState(currentDate(0)) - const [Fin, setFin] = useState(currentDate(0)) - const [filtro, setFiltro] = useState('') - const [header, setHeader] = useState('') - const [show, setShowMsg] = useState(false) - const [msg, setMsg] = useState('') - const msgColor = 'primary' - - function currentDate(days: number): string { - var today = new Date() - today.setDate(today.getDate() + days) - var dd = String(today.getDate()).padStart(2, '0') - var mm = String(today.getMonth() + 1).padStart(2, '0') - var yyyy = today.getFullYear() - return yyyy + '-' + mm + '-' + dd - } - - const loadReport = () => { - DSAmazon.GetFinishedInvoice() - .then((response) => { - dispatch(initializeInvoice([])) - dispatch(populateInvoices(response.data)) - }) - .catch((e: Error) => { - alert('Ocurrio un error' + e.message.toString()) - }) - } - - const downloadExcel = (id: number) => { - DSAmazon.TerminaFactura(id) - .then((response) => {}) +export default function RptAmazonFinishedInvoices( + props: IRptAmazonFinishedInvoicesProps +) { + const dispatch = useDispatch() + const mInvoices = useSelector( + (state: RootState) => state.AmazonInvoices.Invoice + ) + const [Inicio, setInicio] = useState(currentDate(0)) + const [Fin, setFin] = useState(currentDate(0)) + const [filtro, setFiltro] = useState('') + const [header, setHeader] = useState('') + const [show, setShowMsg] = useState(false) + const [msg, setMsg] = useState('') + const msgColor = 'primary' + + function currentDate(days: number): string { + var today = new Date() + today.setDate(today.getDate() + days) + var dd = String(today.getDate()).padStart(2, '0') + var mm = String(today.getMonth() + 1).padStart(2, '0') + var yyyy = today.getFullYear() + return yyyy + '-' + mm + '-' + dd + } + + const loadReport = () => { + DSAmazon.AmazonFinishedClasificationInvoice$GET() + .then((response) => { + dispatch(initializeInvoice([])) + dispatch(populateInvoices(response.data)) + }) .catch((e: Error) => { + alert('Ocurrio un error' + e.message.toString()) }) - DSAmazon.GetNoPartesAmazon2SIR(id) + } + + const downloadExcel = (id: number) => { + DSAmazon.TerminaFactura(id) + .then((response) => {}) + .catch((e: Error) => {}) + DSAmazon.GetNoPartesAmazon2SIR(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.xlsx') - document.body.appendChild(link) - link.click() - } + const url = window.URL.createObjectURL(new Blob([response.data])) + const link = document.createElement('a') + link.href = url + link.setAttribute('download', 'Plantilla de partes.xlsx') + document.body.appendChild(link) + link.click() + } }) .catch((e: Error) => { setHeader('Error') @@ -81,21 +81,21 @@ export default function RptAmazonFinishedInvoices (props: IRptAmazonFinishedInvo setShowMsg(true) return }) - } + } + + useEffect(() => { + loadReport() + }, []) + + const changeToggle = (row: I2096Headers) => { + let Invoice: I2096Headers[] = mInvoices.filter((item) => item.id === row.id) + const Obj = { ...Invoice[0] } + Obj.max = !Obj.max + dispatch(updateInvoice(Obj)) + } - useEffect(() => { - loadReport() - }, []) - - const changeToggle = (row: I2096Headers) => { - let Invoice: I2096Headers[] = mInvoices.filter((item) => item.id === row.id) - const Obj = { ...Invoice[0] } - Obj.max = !Obj.max - dispatch(updateInvoice(Obj)) - } - - const filtraReporte = (e: any) => { - /* setFiltro(e.target.value) + const filtraReporte = (e: any) => { + /* setFiltro(e.target.value) if (e.target.value.length > 0) { setData( Data.filter(function (row) { @@ -107,14 +107,14 @@ export default function RptAmazonFinishedInvoices (props: IRptAmazonFinishedInvo } else { setData(DataOriginal) } */ - } - - const openLink = (item: string) => { - window.open('https://www.amazon.com/dp/' + item) - } + } + + const openLink = (item: string) => { + window.open('https://www.amazon.com/dp/' + item) + } return (
- + @@ -145,7 +145,7 @@ export default function RptAmazonFinishedInvoices (props: IRptAmazonFinishedInvo onChange={(e) => setFin(e.target.value)} size="sm" /> */} - {/* + {/*
- ); + ) } diff --git a/src/Components/Clientes/Amazon/Reportes/RptAmazonPendingInvoices.tsx b/src/Components/Clientes/Amazon/Reportes/RptAmazonPendingClasificationInvoices.tsx similarity index 93% rename from src/Components/Clientes/Amazon/Reportes/RptAmazonPendingInvoices.tsx rename to src/Components/Clientes/Amazon/Reportes/RptAmazonPendingClasificationInvoices.tsx index e3b9f6b..7a01357 100644 --- a/src/Components/Clientes/Amazon/Reportes/RptAmazonPendingInvoices.tsx +++ b/src/Components/Clientes/Amazon/Reportes/RptAmazonPendingClasificationInvoices.tsx @@ -1,28 +1,29 @@ import { useEffect, useState } from 'react' -import { Alert, Button, Card, Col, Form, FormCheck, Modal, Row, Table } from 'react-bootstrap' +import { + Alert, + Button, + Card, + Col, + FormCheck, + Modal, + Row, + Table +} from 'react-bootstrap' import { IconContext } from 'react-icons' -import { BsChevronDown, BsChevronRight, BsSearch } from 'react-icons/bs' -import { FaCheckCircle, FaFileExcel, FaQuestionCircle } from 'react-icons/fa' -import { ImCross } from 'react-icons/im' -import { ComboDescripcion } from '../Components/ComboSelect/ComboDescripcion' -import { ComboFraccion } from '../Components/ComboSelect/ComboFraccion' -import { TextBoxFraccion } from '../Components/TextBox/TextBoxFraccion' -import I2096Detail from '../Interfaces/I2096Detail' +import { BsChevronDown, BsChevronRight } from 'react-icons/bs' +import { FaFileExcel } from 'react-icons/fa' import I2096Headers from '../Interfaces/I2096Header' import DSAmazon from '../Services/Amazon.Services' -import * as XLSX from 'xlsx' -import DTO2096PrevioExcel from '../DTO/DTO2096PrevioExcel' import { MsgInformativo } from '../../../Utils/Toast/msgInformativo' import { RootState } from '../../../../store/store' import { initializeInvoice, populateInvoices, - updateInvoice, - deleteInvoice + updateInvoice } from '../../../../store/features/Clientes/2096/AmazonInvoices' // Redux import { useDispatch, useSelector } from 'react-redux' -import RtpAmazonPendingInvoicesDetail from './RptAmazonPendingInvoicesDetail' +import RtpAmazonPendingInvoicesDetail from './RptAmazonPendingClasificationInvoicesDetail' import { AiTwotoneFileExcel } from 'react-icons/ai' export interface IRtpAmazonPendingInvoicesProps {} @@ -33,9 +34,6 @@ export default function RtpAmazonPendingInvoices( const mInvoices = useSelector( (state: RootState) => state.AmazonInvoices.Invoice ) - const [Inicio, setInicio] = useState(currentDate(0)) - const [Fin, setFin] = useState(currentDate(0)) - const [filtro, setFiltro] = useState('') const [header, setHeader] = useState('') const [IDFactura, setIDFactura] = useState(0) const [show, setShowMsg] = useState(false) @@ -53,7 +51,7 @@ export default function RtpAmazonPendingInvoices( } const loadReport = () => { - DSAmazon.GetPendingInvoice() + DSAmazon.AmazonPendingClasificationInvoice$GET() .then((response) => { dispatch(initializeInvoice([])) dispatch(populateInvoices(response.data)) @@ -144,27 +142,26 @@ export default function RtpAmazonPendingInvoices( const facturaTerminada = (row: I2096Headers) => { DSAmazon.Se$Puede$Terminar$Factura(row.id) - .then((response) => { - if (response.data.respuesta.includes('lista')) { - setIDFactura(row.id) - setShowModal(true) - return - } else { + .then((response) => { + if (response.data.respuesta.includes('lista')) { + setIDFactura(row.id) + setShowModal(true) + return + } else { + setIDFactura(0) + setHeader('Informativo') + setMsg(response.data.respuesta) + setShowMsg(true) + return + } + }) + .catch((e: Error) => { setIDFactura(0) - setHeader('Informativo') - setMsg(response.data.respuesta) + setHeader('Error') + setMsg('Ocurrio un error') setShowMsg(true) return - } - }) - .catch((e: Error) => { - setIDFactura(0) - setHeader('Error') - setMsg('Ocurrio un error') - setShowMsg(true) - return - }) - + }) } return ( @@ -199,7 +196,6 @@ export default function RtpAmazonPendingInvoices( Invoice Number Name Incoterms - HAWB Qty Unit of measure Tot Qty Weight unit of measure @@ -286,9 +282,8 @@ export default function RtpAmazonPendingInvoices( type="switch" checked={false} onChange={() => { - facturaTerminada(MasterData) - } - } + facturaTerminada(MasterData) + }} label="" /> @@ -304,9 +299,9 @@ export default function RtpAmazonPendingInvoices( {MasterData.incoterms} - + {/* {MasterData.hawb} - + */} {MasterData.totalInvoiceQuantityUnitOfMeasure} @@ -621,7 +616,7 @@ export default function RtpAmazonPendingInvoices( + )} + + + + + { + setShowModal(false) + }} + size={'sm'} + dialogClassName={'modal-50w'} + backdrop='static' + disableEscapeKeyDown = {true} + > + +
+ + Comentarios + + {' '} + setComentarios(e.target.value)} + /> + +   + + + + + + + + + +
+
+
+ { + setShowMsg(false) + }} + /> + + ) + } + \ No newline at end of file diff --git a/src/Components/Clientes/Amazon/Reportes/RtpAmazonPendingTraficInvoice.tsx b/src/Components/Clientes/Amazon/Reportes/RtpAmazonPendingTraficInvoice.tsx new file mode 100644 index 0000000..ef05f73 --- /dev/null +++ b/src/Components/Clientes/Amazon/Reportes/RtpAmazonPendingTraficInvoice.tsx @@ -0,0 +1,540 @@ +import { useEffect, useState } from 'react' +import { Alert, Button, Card, Col, FormCheck, Modal, Row, Table } from 'react-bootstrap' +import { IconContext } from 'react-icons' +import { BsChevronDown, BsChevronRight } from 'react-icons/bs' +import I2096Headers from '../Interfaces/I2096Header' +import DSAmazon from '../Services/Amazon.Services' +import { MsgInformativo } from '../../../Utils/Toast/msgInformativo' +import { RootState } from '../../../../store/store' +import { + initializeInvoice, + populateInvoices, + updateInvoice, +} from '../../../../store/features/Clientes/2096/AmazonInvoices' +// Redux +import { useDispatch, useSelector } from 'react-redux' +import RtpAmazonPendingTraficInvoiceDetail from './RptAmazonPendingTraficInvoiceDetail' + +export interface IRptAmazonPendingTraficInvoiceProps {} + +export function RptAmazonPendingTraficInvoice( + props: IRptAmazonPendingTraficInvoiceProps +) { const dispatch = useDispatch() + const mInvoices = useSelector( + (state: RootState) => state.AmazonInvoices.Invoice + ) + const [header, setHeader] = useState('') + const [IDFactura, setIDFactura] = useState(0) + const [show, setShowMsg] = useState(false) + const [ShowModal, setShowModal] = useState(false) + const [msg, setMsg] = useState('') + const msgColor = 'primary' + + function currentDate(days: number): string { + var today = new Date() + today.setDate(today.getDate() + days) + var dd = String(today.getDate()).padStart(2, '0') + var mm = String(today.getMonth() + 1).padStart(2, '0') + var yyyy = today.getFullYear() + return yyyy + '-' + mm + '-' + dd + } + + const loadReport = () => { + DSAmazon.AmazonPendingTraficInvoice$GET() + .then((response) => { + dispatch(initializeInvoice([])) + dispatch(populateInvoices(response.data)) + }) + .catch((e: Error) => { + alert('Ocurrio un error' + e.message.toString()) + }) + } + + const downloadExcel = (id: number) => { + DSAmazon.TerminaFactura(id) + .then((response) => {}) + .catch((e: Error) => {}) + DSAmazon.GetNoPartesAmazon2SIR(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.xlsx') + document.body.appendChild(link) + link.click() + } + }) + .catch((e: Error) => { + setHeader('Error') + setMsg('Ocurrio un error') + setShowMsg(true) + return + }) + } + + const downloadExceptionsFile = (id: number) => { + DSAmazon.TerminaFactura(id) + .then((response) => {}) + .catch((e: Error) => {}) + DSAmazon.Get$ExceptionsFile$Amazon(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', + 'Formato de consultas (Exceptions Handling 2021).xlsx' + ) + document.body.appendChild(link) + link.click() + } + }) + .catch((e: Error) => { + setHeader('Error') + setMsg('Ocurrio un error') + setShowMsg(true) + return + }) + } + + useEffect(() => { + loadReport() + }, []) + + const changeToggle = (row: I2096Headers) => { + let Invoice: I2096Headers[] = mInvoices.filter((item) => item.id === row.id) + const Obj = { ...Invoice[0] } + Obj.max = !Obj.max + dispatch(updateInvoice(Obj)) + } + + const openLink = (item: string) => { + window.open('https://www.amazon.com/dp/' + item) + } + + const existsExeptions = (IDMaster: number) => { + const Exceptions = mInvoices + .filter((element) => + element.detail.some((sub) => sub.idHeader === IDMaster) + ) + .map((element) => { + let newElt = Object.assign({}, element) // copies element + return newElt.detail.filter( + (child) => child.idHeader === IDMaster && !child.autorizado + ) + }) + console.log(JSON.stringify(Exceptions[0])) + return Exceptions[0].length ? Exceptions[0].length : 0 + } + + const facturaTerminada = (row: I2096Headers) => { + DSAmazon.Se$Puede$Terminar$Factura(row.id) + .then((response) => { + if (response.data.respuesta.includes('lista')) { + setIDFactura(row.id) + setShowModal(true) + return + } else { + setIDFactura(0) + setHeader('Informativo') + setMsg(response.data.respuesta) + setShowMsg(true) + return + } + }) + .catch((e: Error) => { + setIDFactura(0) + setHeader('Error') + setMsg('Ocurrio un error') + setShowMsg(true) + return + }) + + } + + return ( +
+ + + + + Amazon: facturas pendientes + + + + + + + + + + + + +
+ + + + + + +{/* + */} + + + + + + + + + + + + + + + {mInvoices + ? mInvoices.map((MasterData) => { + return ( + <> + + + + + + + + + + + + + + + + + {MasterData.max ? ( + + + + ) : null} + + ) + }) + : null} + +
idCommercial Invoice DateInvoice NumberNameIncotermsQty Unit of measureTot QtyWeight unit of measureTot weightTot Charge or allowanceTot currency ISO codeTot Monetary amount
{ + changeToggle(MasterData) + }} + > + {MasterData.max === true ? ( + + + + ) : ( + + + + )} + {MasterData.id} + { + facturaTerminada(MasterData) + } + } + label="" + /> + + {MasterData.commercialInvoiceDate} + + {MasterData.invoiceNumber} + + {MasterData.name} + + {MasterData.incoterms} + + {MasterData.totalInvoiceQuantityUnitOfMeasure} + + {MasterData.totalInvoiceQuantity} + + {MasterData.totalInvoiceWeightUnitOfMeasure} + + {MasterData.totalInvoiceWeight} + + {MasterData.totalInvoiceValueChargeOrAllowance} + + {MasterData.totalInvoiceValueCurrencyISOCode} + + {MasterData.totalInvoiceValueMonetaryAmount} +
+ + + + + + + + + + + + + + + + + + + + + + + {mInvoices.map((MD) => { + return ( + <> + {MD.detail + .filter( + (detail) => + MasterData.id === + detail.idHeader + ) + .map((detail) => { + return ( + + ) + })} + + ) + })} + +
+ Item Id + + Item Description + + Fraccion GEMCO + + Descripcion GEMCO + + Country of Origin + + ProductGroup + + Brand + + Model + + Unit Measure + + Qty Shipped + + Unit Net Weight + + Unit Cost + + Total value + + Sight line + + Comentarios +
+
+
+
+
+ { + setShowModal(false) + }} + size={'sm'} + dialogClassName={'modal-50w'} + > + +
+ + + + + La factura esta lista para terminarse, desea terminarla? + + + + + + + + + + + + +
+
+
+ { + setShowMsg(false) + }} + /> +
+ ) +} diff --git a/src/Components/Clientes/Amazon/Services/Amazon.Services.ts b/src/Components/Clientes/Amazon/Services/Amazon.Services.ts index 6b7cbde..72f71b8 100644 --- a/src/Components/Clientes/Amazon/Services/Amazon.Services.ts +++ b/src/Components/Clientes/Amazon/Services/Amazon.Services.ts @@ -8,13 +8,20 @@ import I2096NoParte from '../Interfaces/I2096NoParte' import I2096PaisClave from '../Interfaces/I2096PaisClave' import DTO2096ItemAutoriza from '../DTO/DTO2096ItemAutoriza' import DTORespuesta from '../../ZincInternacional/DTO/DTORespuesta' +import DTO2096SightLine from '../DTO/DTO2096SightLine' class AmazonDataService { - GetPendingInvoice() { - return http.get(`/AmazonInvoice/C2096PendingInvoiceGet`) + AmazonPendingClasificationInvoice$GET() { + return http.get(`/AmazonInvoice/AmazonPendingClasificationInvoiceGet`) } - GetFinishedInvoice() { - return http.get(`/AmazonInvoice/C2096FinishedInvoiceGet`) + AmazonFinishedClasificationInvoice$GET() { + return http.get(`/AmazonInvoice/AmazonFinishedClasificationInvoiceGet`) + } + AmazonPendingTraficInvoice$GET() { + return http.get(`/AmazonInvoice/AmazonPendingTraficInvoiceGet`) + } + AmazonFinishedTraficInvoice$GET() { + return http.get(`/AmazonInvoice/AmazonFinishedTraficInvoiceGet`) } GetValidaFraccion(Fraccion: string) { return http.get(`/AmazonInvoice/C2096ValidaFraccion?Fraccion=${Fraccion}`) @@ -28,6 +35,9 @@ class AmazonDataService { Set$Autorizado(data: DTO2096ItemAutoriza) { return http.post(`/AmazonInvoice/C2096ItemAutorizado`, data) } + SightLineSET(data: DTO2096SightLine) { + return http.put(`/AmazonInvoice/AmazonSightLineSET`, data) + } TerminaFactura(id: number) { return http.get(`/AmazonInvoice/TerminaFactura?id=${id}`) } diff --git a/src/Components/Dashboard/Dashboard.tsx b/src/Components/Dashboard/Dashboard.tsx index e2f3fc1..ba4a930 100644 --- a/src/Components/Dashboard/Dashboard.tsx +++ b/src/Components/Dashboard/Dashboard.tsx @@ -5,6 +5,7 @@ import { Col, Container, Row } from 'react-bootstrap' import { Heineken1 } from './Heineken1' import { DashboardFacturacion } from './DashboardFacturacion' import { DashboardClasificacion } from './DashboardClasificacion' +import DashboardTrafico from './DashboardTrafico' interface IProps {} @@ -37,7 +38,10 @@ export const Dashboard: FC = (props) => { {[['Direcccion', 'Sistemas', 'Facturacion'].includes(Depto) ? : ''].map((item) => { return {item} })} - {[['Direcccion', 'Sistemas', 'Clasificacion'].includes(Depto) ? : ''].map((item) => { + {[['Direcccion', 'Sistemas', 'Operaciones', 'Clasificacion'].includes(Depto) ? : ''].map((item) => { + return {item} + })} + {[['Direcccion', 'Sistemas', 'Operaciones', 'Trafico'].includes(Depto) ? : ''].map((item) => { return {item} })} diff --git a/src/Components/Dashboard/DashboardClasificacion.tsx b/src/Components/Dashboard/DashboardClasificacion.tsx index c4d99c4..5c011fc 100644 --- a/src/Components/Dashboard/DashboardClasificacion.tsx +++ b/src/Components/Dashboard/DashboardClasificacion.tsx @@ -38,7 +38,7 @@ export function DashboardClasificacion(props: IDashboardClasificacionProps) { return ( <> - + Clasificación diff --git a/src/Components/Dashboard/DashboardContabilidad.tsx b/src/Components/Dashboard/DashboardContabilidad.tsx index 4586edc..9f5d53e 100644 --- a/src/Components/Dashboard/DashboardContabilidad.tsx +++ b/src/Components/Dashboard/DashboardContabilidad.tsx @@ -41,7 +41,7 @@ export const DashboardContabilidad: FC = (props) => { return ( <> - + Contabilidad @@ -66,7 +66,7 @@ export const DashboardContabilidad: FC = (props) => { - + Contabilidad  Anticipos pendientes de autorizar @@ -89,7 +89,7 @@ export const DashboardContabilidad: FC = (props) => { - + Contabilidad  Cuentas complementarias pendientes diff --git a/src/Components/Dashboard/DashboardCorresponsales.tsx b/src/Components/Dashboard/DashboardCorresponsales.tsx index bf1e20e..0cb07b4 100644 --- a/src/Components/Dashboard/DashboardCorresponsales.tsx +++ b/src/Components/Dashboard/DashboardCorresponsales.tsx @@ -96,20 +96,10 @@ export const DashboardCorresponsales: FC = (props) => { return yyyy + '-' + mm + '-' + dd; } - /* const getTipoCambio = (Fecha: string) => { - DashboardDataService.getTipoCambio(Fecha) - .then((response) => { - setTipoCambio(response.data) - }) - .catch((e: Error) => { - return - }) - } */ - return ( <> - + Corresponsales: Traficos pendientes diff --git a/src/Components/Dashboard/DashboardFacturacion.tsx b/src/Components/Dashboard/DashboardFacturacion.tsx index 1cb22e4..d477cba 100644 --- a/src/Components/Dashboard/DashboardFacturacion.tsx +++ b/src/Components/Dashboard/DashboardFacturacion.tsx @@ -25,7 +25,7 @@ export const DashboardFacturacion: FC = (props) => { return ( <> - + Facturacion diff --git a/src/Components/Dashboard/DashboardTrafico.tsx b/src/Components/Dashboard/DashboardTrafico.tsx new file mode 100644 index 0000000..912598b --- /dev/null +++ b/src/Components/Dashboard/DashboardTrafico.tsx @@ -0,0 +1,113 @@ +import * as React from 'react' +import { useEffect, useState } from 'react' +import { Card, Col, ProgressBar, Row } from 'react-bootstrap' +import { IconContext } from 'react-icons' +import { FaAmazon } from 'react-icons/fa' +import { Link } from 'react-router-dom' +import '../../css/generic01.css' +import DashboardDataService from '../../Services/Dashboard/Dashboard.Clasificacion.Services' + +export interface IDashboardTraficoProps { +} + +export default function DashboardTrafico (props: IDashboardTraficoProps) { + const [Terminadas, setTerminadas] = useState(0) + const [Pendientes, setPendientes] = useState(0) + const [Total, setTotal] = useState(0) + + useEffect(() => { + DashboardDataService.DashboardInvoices(3) + .then((response) => { + setPendientes(response.data.total) + }) + .catch((e: Error) => { + return + }) + DashboardDataService.DashboardInvoices(4) + .then((response) => { + setTerminadas(response.data.total) + }) + .catch((e: Error) => { + return + }) + }, []) + + useEffect(() => { + setTotal(Pendientes + Terminadas) + }, [Pendientes, Terminadas]) + + return ( + <> + + + Trafico + + + Facturas {' '} + + + + + + + + Terminadas + + + + + Pendientes + + + + + + + + + + + + + + {Terminadas} + + + {Pendientes} + + + + + + + + ) + } + \ No newline at end of file diff --git a/src/css/generic01.css b/src/css/generic01.css index d753530..ab59ea9 100644 --- a/src/css/generic01.css +++ b/src/css/generic01.css @@ -286,3 +286,11 @@ th { .colAlignRight { text-align: right; } + +.blueCardBorder { + border-color: #1D6DC2; +} + +.dashboardComponentFont { + font-family: 'Kanit'; +} diff --git a/src/index.tsx b/src/index.tsx index 6d99c25..bfe50c4 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -40,9 +40,10 @@ import RptConsolidadosSinCerrar from './Components/GEMCO/Facturacion/Anexo/RptCo import RptRelacionAlen from './Components/GEMCO/Facturacion/Anexo/RptRelacionAlen' import { RptFacturasTxtHeineken } from './Components/Reportes/RptFacturasTxtHeineken' import { Notificaciones } from './Components/Utils/Notificaciones/Notificaciones' -import RtpAmazonPendingInvoices from './Components/Clientes/Amazon/Reportes/RptAmazonPendingInvoices' -import RtpAmazonFinishedInvoices from './Components/Clientes/Amazon/Reportes/RptAmazonFinishedInvoices' +import RtpAmazonPendingInvoices from './Components/Clientes/Amazon/Reportes/RptAmazonPendingClasificationInvoices' +import RtpAmazonFinishedInvoices from './Components/Clientes/Amazon/Reportes/RptAmazonFinishedClasificationInvoices' import { AmazonNoPartes } from './Components/Clientes/Amazon/Reportes/AmazonNoPartes' +import { RptAmazonPendingTraficInvoice } from './Components/Clientes/Amazon/Reportes/RtpAmazonPendingTraficInvoice' function PageNotFound() { return ( @@ -156,6 +157,7 @@ ReactDOM.render( } /> } /> } /> + } /> } />