diff --git a/.vscode/settings.json b/.vscode/settings.json index d8f7b4a..14ac9fb 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,3 @@ { - "workbench.colorTheme": "Abyss" -} \ No newline at end of file + "workbench.colorTheme": "Infinity Dark Theme Eye Friendly Colors" +} diff --git a/src/Components/Clientes/Amazon/Catalogos/CatConceptosConsulta.tsx b/src/Components/Clientes/Amazon/Catalogos/CatConceptosConsulta.tsx new file mode 100644 index 0000000..d1990b9 --- /dev/null +++ b/src/Components/Clientes/Amazon/Catalogos/CatConceptosConsulta.tsx @@ -0,0 +1,501 @@ +import React, { FC, useEffect, useState } from 'react' + +import ITabulador from '../../../../Interfaces/Catalogos/ITabulador' +import ITabuladorConceptos from '../../../../Interfaces/Catalogos/ITabuladorConceptos' +import DTOConceptos from '../../../../DTO/Utils/DTOConceptos' + +import CTabDataService from '../../../../Services/Corresponsalias/Corresponsales.Tabuladores.Services' +//import CTabDetDataService from '../../../../Services/Corresponsalias/Corresponsales.Tabuladores.Detalle.Sevices' +import AmazonSrvDataService from '../Services/Amazon.Services' + +import ClientesDataService from '../../../../Services/Catalogos/Clientes.Services' + +import { MsgInformativo } from '../../../Utils/Toast/msgInformativo' +import { ControlledInput } from '../../../Utils/ControlledInput/ControlledInput' +import DataTable from 'react-data-table-component' +import { + Alert, + Button, + Card, + Col, + Container, + FloatingLabel, + Form, + Modal, + Row +} from 'react-bootstrap' +import { IconContext } from 'react-icons' +import 'react-data-table-component-extensions/dist/index.css' +import { + BsCheckCircleFill, + BsPlusSquareFill, + BsXCircleFill +} from 'react-icons/bs' +import IClientes from '../../../../Interfaces/Catalogos/IClientes' +import { FcTimeline } from 'react-icons/fc' +import { FaEraser, FaTimesCircle } from 'react-icons/fa' +import ICat2096CatConceptosConsulta from '../Interfaces/I2096CatConceptosConsulta' +import { populateCatConcetosConsultas, updateCatConcetosConsulta } from '../../../../store/features/Clientes/2096/AmazonCatConceptosConsulta' +import { useDispatch } from 'react-redux' + +export interface ICatConceptosConsultaProps {} + +export default function CatConceptosConsulta( + props: ICatConceptosConsultaProps +) { + const [UserId, setUserId] = useState(() => { + const stickyValue = window.localStorage.getItem('UserId') + return stickyValue !== null ? JSON.parse(stickyValue) : 0 + }) + const dispatch = useDispatch() + const [Tabulador, setTabulador] = useState(0) + const [Id, setId] = useState(0) + const [Concepto, setConcepto] = useState(0) + const [Cliente, setCliente] = useState(0) + const [Activo, setActivo] = useState(0) + const [Clientes, setClientes] = useState>() + const [Siglas, setSiglas] = useState('') + const [ShortDescription, setShortDescription] = useState('') + const [SpanishDescription, setSpanishDescription] = useState('') + const [SpanishDescriptionWide, setSpanishDescriptionWide] = useState('') + const [DetalleConceptos, setDetalleConceptos] = useState< + ITabuladorConceptos[] + >([]) + const [CatConceptos, setCatConceptos] = useState< + ICat2096CatConceptosConsulta[] + >([]) + const [Tabuladores, setTabuladores] = useState([]) + const [AllTabuladores, setAllTabuladores] = useState([]) + const [Costo, setCosto] = useState('') + const [header, setHeader] = useState('') + const [msgColor, setMsgColor] = React.useState('primary') + const [show, setShowMsg] = useState(false) + const [msg, setMsg] = useState('') + const [DialogTabs, setDialogTabs] = useState(false) + + const colConcepts = [ + { + name: 'Activo', + width: '80px', + cell: (row: ICat2096CatConceptosConsulta) => ( +
{ + loadData(row) + }} + > + + {row.activo ? : } + +
+ ) + }, + { + name: 'Siglas', + width: '80px', + selector: (row: ICat2096CatConceptosConsulta) => row.siglas, + sortable: true + }, + { + name: 'Descripcion corta', + width: '300px', + selector: (row: ICat2096CatConceptosConsulta) => row.shortDescription, + wrap: true, + sortable: true + }, + { + name: 'Descripcion español', + width: '450px', + selector: (row: ICat2096CatConceptosConsulta) => row.spanishDescription, + wrap: true, + sortable: true + }, + { + name: 'Descripcion amplia', + width: '450px', + selector: (row: ICat2096CatConceptosConsulta) => + row.spanishDescriptionWide, + wrap: true, + sortable: true + } + ] + + const loadData = (data: ICat2096CatConceptosConsulta) => { + setId(data.id) + setSiglas(data.siglas) + setShortDescription(data.shortDescription) + setSpanishDescription(data.spanishDescription) + setSpanishDescriptionWide(data.spanishDescriptionWide) + setActivo(data.activo ? 1 : 0) + } + + const deleteTabulador = () => { + CTabDataService.Delete(Tabulador) + .then((response) => { + if (response.status === 200) { + setHeader('Informativo') + setMsg(response.data.respuesta) + setShowMsg(true) + setDialogTabs(false) + setTabuladores(Tabuladores.filter((data) => data.id != Tabulador)) + setAllTabuladores(Tabuladores) + return + } + }) + .catch((e: Error) => { + setHeader('Error') + setMsg('Ocurrio un error: ' + e) + setShowMsg(true) + return + }) + } + + const loadCatalog = () => { + AmazonSrvDataService.CatConceptosConsultaGET() + .then((response) => { + dispatch(populateCatConcetosConsultas(response.data)) + setCatConceptos(response.data) + }) + .catch((e: Error) => { + setHeader('Error') + setMsg('Ocurrio un error: ' + e) + setShowMsg(true) + return + }) + } + + useEffect(() => { + loadCatalog() + }, []) + + useEffect(() => { + if (Cliente > 0) { + setSiglas('') + setTabuladores([]) + setDetalleConceptos([]) + CTabDataService.GetByCustomer(Cliente) + .then((response) => { + setTabuladores(response.data) + }) + .catch((e: Error) => { + setHeader('Error') + setMsg('Ocurrio un error: ' + e) + setShowMsg(true) + return + }) + } + }, [Cliente]) + + const filtraTabulador = (e: any) => { + if (e.target.value !== '') { + setTabuladores( + AllTabuladores.filter(function (el) { + return el.nombre + .toLocaleLowerCase() + .includes(e.target.value.toLocaleLowerCase()) + }) + ) + } else { + setTabuladores(AllTabuladores) + } + } + + const save = () => { + const data: ICat2096CatConceptosConsulta = { + id: Id, + siglas: Siglas, + shortDescription: ShortDescription, + spanishDescription: SpanishDescription, + spanishDescriptionWide: SpanishDescriptionWide, + activo: Activo==1 + } + AmazonSrvDataService.CatConceptosConsultaAppend(data) + .then((response) => { + if (response.status === 200) { + loadCatalog() + setHeader('Informativo') + setMsg('La informacion se guardo correctamente') + setShowMsg(true) + return + } + }) + .catch((e: Error) => { + setHeader('Error') + setMsg('Ocurrio un error: ' + e) + setShowMsg(true) + return + }) + } + + return ( +
+ + + + Catalogo de consultas para Amazon + + + + + + + { + setSiglas(e.target.value) + }} + /> + + + + + { + setShortDescription(e.target.value) + }} + /> + + + { + setTabulador(0) + setSiglas('') + }} + > + + + + + + + + + + + + + { + setSpanishDescription(e.target.value) + }} + /> + + + + + { + setSpanishDescriptionWide(e.target.value) + }} + /> + + + + + { + setActivo(parseInt(e.target.value)) + }} + > + + + + + + + + + + {/* + + + + + + Tabulador + + + { + filtraTabulador(e) + }} + /> + + + + + + + */} + + + + + + + + + + {/* + setConcepto(parseInt(e.target.value)) + } + className="form-select form-select-sm" + style={{ fontSize: '17px' }} + > + + {CatConceptos + ? CatConceptos.map((c) => { + return ( + + ) + }) + : null} + */} + + + {/* { + addConcept() + }} + style={{ cursor: 'pointer' }} + > + + + + */} + + + + {/* */} + + + + + + + + + + { + setDialogTabs(false) + }} + size="sm" + > + + ¿Esta seguro de eliminar: +
{Siglas}? +
+ + + + + + + + + + +
+ { + setShowMsg(false) + }} + /> +
+ ) +} diff --git a/src/Components/Clientes/Amazon/Interfaces/I2096CatConceptosConsulta.ts b/src/Components/Clientes/Amazon/Interfaces/I2096CatConceptosConsulta.ts new file mode 100644 index 0000000..777bc8e --- /dev/null +++ b/src/Components/Clientes/Amazon/Interfaces/I2096CatConceptosConsulta.ts @@ -0,0 +1,8 @@ +export default interface ICat2096CatConceptosConsulta { + id: number, + siglas: string, + shortDescription: string, + spanishDescription: string, + spanishDescriptionWide: string, + activo: boolean +} \ No newline at end of file diff --git a/src/Components/Clientes/Amazon/Reportes/ConsultaTrafico/RptConsultaTrafico.tsx b/src/Components/Clientes/Amazon/Reportes/ConsultaTrafico/RptConsultaTrafico.tsx index 469e951..4562a44 100644 --- a/src/Components/Clientes/Amazon/Reportes/ConsultaTrafico/RptConsultaTrafico.tsx +++ b/src/Components/Clientes/Amazon/Reportes/ConsultaTrafico/RptConsultaTrafico.tsx @@ -144,18 +144,6 @@ export default function RptConsultaTrafico(props: IRptConsultaTraficoProps) { if (Obj.max) */ check4Updates(IDInvoice) } - /* const toggleInvoice = (id: number) => { - if (!Invoices.includes(id)) { - Invoices.push(id) - } else { - setInvoices( - Invoices.filter(function (el) { - return el != id - }) - ) - } - }*/ - function getReceiver(Cadena: string, char1: string[1], char2: string[1]) { return Cadena.slice(Cadena.indexOf(char1) + 1, Cadena.lastIndexOf(char2)) } @@ -191,9 +179,6 @@ export default function RptConsultaTrafico(props: IRptConsultaTraficoProps) { id - {/*PDF - Facturas - Partidas */} Referencia Commercial Invoice Date Invoice Number diff --git a/src/Components/Clientes/Amazon/Services/Amazon.Services.ts b/src/Components/Clientes/Amazon/Services/Amazon.Services.ts index dc7606a..08d2a84 100644 --- a/src/Components/Clientes/Amazon/Services/Amazon.Services.ts +++ b/src/Components/Clientes/Amazon/Services/Amazon.Services.ts @@ -26,6 +26,7 @@ import DTO2096TraficoConsultaAmazonHeader from '../DTO/DTO2096TraficoConsultaAma import DTO2096DataTraficoConsulta from '../DTO/DTO2096DataTraficoConsulta' import I2096CatGrupoRegulatorio from '../Interfaces/I2096CatGrupoRegulatorio' import DTOAmazonSegragacion from '../DTO/DTOAmazonSegragacion' +import ICat2096CatConceptosConsulta from '../Interfaces/I2096CatConceptosConsulta' class AmazonDataService { AmazonPendingClasificationInvoiceGET() { @@ -286,5 +287,11 @@ class AmazonDataService { DeleteNoParte(id: number) { return http.delete(`/AmazonInvoice/DeleteNoParte?id=${id}`) } + CatConceptosConsultaGET() { + return http.get(`/AmazonInvoice/Catalogos/CatConceptosConsultaGET`) + } + CatConceptosConsultaAppend(data: ICat2096CatConceptosConsulta) { + return http.post(`/AmazonInvoice/Catalogos/CatConceptosConsultaAppend`, data) + } } export default new AmazonDataService() diff --git a/src/index.tsx b/src/index.tsx index 6cb3cf4..ccdd303 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -65,6 +65,7 @@ import RptConsultaTrafico from './Components/Clientes/Amazon/Reportes/ConsultaTr import RptMonitoreoFacturasPagadasAmazon from './Components/Reportes/RptMonitoreoFacturasPagadasAmazon' import CatFraccionesVulnerables from './Components/Catalogos/CatFraccionesVulnerables/CatFraccionesVulnerables' import RptFacturasFraccion from './Components/Reportes/RptContsFacturasFraccion' +import CatConceptosConsulta from './Components/Clientes/Amazon/Catalogos/CatConceptosConsulta' require(`./css/${process.env.REACT_APP_ENVIRONMENT}-home.css`) @@ -239,12 +240,14 @@ ReactDOM.render( path="/RptPedimentosCruces06" element={} /> - } /> - + } + /> } /> diff --git a/src/store/features/Clientes/2096/AmazonCatConceptosConsulta.ts b/src/store/features/Clientes/2096/AmazonCatConceptosConsulta.ts new file mode 100644 index 0000000..969fd82 --- /dev/null +++ b/src/store/features/Clientes/2096/AmazonCatConceptosConsulta.ts @@ -0,0 +1,50 @@ +import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import ICat2096CatConceptosConsulta from '../../../../Components/Clientes/Amazon/Interfaces/I2096CatConceptosConsulta' +const CatConcetosConsulta: ICat2096CatConceptosConsulta[] = [] +const initialState = { CatConcetosConsulta } + +export const CatConceptosConsultaSlice = createSlice({ + name: 'CatConceptosConsulta', + initialState: initialState, + reducers: { + initializeCatConcetosConsulta: (state, action: PayloadAction) => { + state.CatConcetosConsulta = action.payload + }, + populateCatConcetosConsultas: (state, action: PayloadAction) => { + action.payload.forEach((newItem) => { + var Existe = state.CatConcetosConsulta.find(function (onMemoryItem) { + return onMemoryItem.id === newItem.id + }) + if (!Existe) state.CatConcetosConsulta.push(newItem) + }) + }, + addCatConcetosConsulta: (state, action: PayloadAction) => { + var Existe = state.CatConcetosConsulta.find(function (item) { + return item.id === action.payload.id + }) + if (!Existe) state.CatConcetosConsulta.push(action.payload) + }, + updateCatConcetosConsulta: (state, action: PayloadAction) => { + const i = state.CatConcetosConsulta.findIndex( + (_element) => _element.id === action.payload.id + ) + if (i > -1) state.CatConcetosConsulta[i] = action.payload + else state.CatConcetosConsulta.push(action.payload) + }, + updateCatConcetosConsultaDetail: (state, action: PayloadAction) => { + const i = state.CatConcetosConsulta.findIndex( + (_element) => _element.id === action.payload.id + ) + if (i > -1) state.CatConcetosConsulta[i] = action.payload + else state.CatConcetosConsulta.push(action.payload) + }, + deleteCatConcetosConsulta: (state, action: PayloadAction) => { + const newArr = state.CatConcetosConsulta.filter((data) => data.id != action.payload) + state.CatConcetosConsulta = newArr + } + } +}) + +export const { initializeCatConcetosConsulta, addCatConcetosConsulta, populateCatConcetosConsultas, updateCatConcetosConsulta, deleteCatConcetosConsulta } = + CatConceptosConsultaSlice.actions +export default CatConceptosConsultaSlice.reducer diff --git a/src/store/store.ts b/src/store/store.ts index 6f19a65..b90f04b 100644 --- a/src/store/store.ts +++ b/src/store/store.ts @@ -18,6 +18,7 @@ import CorresponsalesCuentasComplementariasEstatusSlice from './features/Corresp import AmazonInvoicesSlice from './features/Clientes/2096/AmazonInvoices' import AmazonNoPartesSlice from './features/Clientes/2096/AmazonNoPartes' import AmazonTraficoConsultaSlice from './features/Clientes/2096/AmazonTraficoConsulta' +import AmazonCatConceptosConsulta from './features/Clientes/2096/AmazonCatConceptosConsulta' @@ -41,7 +42,8 @@ export const store = configureStore({ CCueCompEstatus : CorresponsalesCuentasComplementariasEstatusSlice, AmazonInvoices : AmazonInvoicesSlice, AmazonNoPartes: AmazonNoPartesSlice, - AmazonTraficoConsulta: AmazonTraficoConsultaSlice + AmazonTraficoConsulta: AmazonTraficoConsultaSlice, + AmazonCatConceptosConsulta: AmazonCatConceptosConsulta } })