Se incluye subproceso que sirve para consultar traficos a Amazon y generar un excel para su envio

NewRptFront
alfonso 1 year ago
parent 53e976a382
commit 6bad72147c
  1. 7
      src/Components/Clientes/Amazon/DTO/DTO2096DataTraficoConsulta.ts
  2. 24
      src/Components/Clientes/Amazon/DTO/DTO2096TraficoConsultaAmazonDetail.ts
  3. 20
      src/Components/Clientes/Amazon/DTO/DTO2096TraficoConsultaAmazonHeader.ts
  4. 4
      src/Components/Clientes/Amazon/Interfaces/I2096CatGrupoRegulatorio.ts
  5. 188
      src/Components/Clientes/Amazon/Reportes/ConsultaTrafico/RptConsultaTrafico.tsx
  6. 307
      src/Components/Clientes/Amazon/Reportes/ConsultaTrafico/RptConsultaTraficoDetalle.tsx
  7. 26
      src/Components/Clientes/Amazon/Services/Amazon.Services.ts
  8. 4
      src/Components/Dashboard/DashboardTrafico.tsx
  9. 50
      src/store/features/Clientes/2096/AmazonTraficoConsulta.ts
  10. 4
      src/store/store.ts

@ -0,0 +1,7 @@
export default interface DTODataTraficoConsulta {
id: number,
swConsulta: boolean,
grupoRegulatorio: number,
regulacionConsulta: string,
comentariosConsulta: string
}

@ -0,0 +1,24 @@
export default interface DTO2096TraficoConsultaAmazonDetail {
id: number
idHeader: number,
amazonShipmentReferenceId: string
partida: number
itemId: string
itemDescription: string
fraccionGEMCO: string
descripcionGEMCO: string
countryOfOrigin: string
productGroup: string
brand: string
model: string
itemQuantityUnitOfMeasure: string
quantity: number
weightValue: string
netWeightUnitOfMeasure: string
actualUnitCostMonetaryAmount: string
totalUnitValueMonetaryAmount: string
swConsulta: boolean
grupoRegulatorio: number,
regulacionConsulta: string
comentariosConsulta: string
}

@ -0,0 +1,20 @@
import DTO2096TraficoConsultaAmazonDetail from "./DTO2096TraficoConsultaAmazonDetail";
export default interface DTO2096TraficoConsultaAmazonHeader {
id: number,
referencia: string,
commercialInvoiceDate: string,
invoiceNumber: string,
incoterms: string,
hawb: string,
totalInvoiceQuantityUnitOfMeasure: string,
totalInvoiceQuantity: number,
totalInvoiceWeightUnitOfMeasure: string,
totalInvoiceWeight: string,
totalInvoiceValueChargeOrAllowance: string,
totalInvoiceValueCurrencyISOCode: string,
totalInvoiceValueMonetaryAmount: string,
name: string,
max: boolean,
detail: DTO2096TraficoConsultaAmazonDetail[]
}

@ -0,0 +1,4 @@
export default interface I2096CatGrupoRegulatorio {
id: number,
descripcion: string
}

@ -12,30 +12,31 @@ import {
import { IconContext } from 'react-icons'
import { BsChevronDown, BsChevronRight, BsFilePdfFill } from 'react-icons/bs'
import { FaAmazon } from 'react-icons/fa'
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 DTO2096LinkInvoice2Reference from '../../DTO/DTO2096LinkInvoice2Reference'
import { AiFillFileExcel } from 'react-icons/ai'
import RptConsultaTraficoDetalle from './RptConsultaTraficoDetalle'
import loadingImg from '../../../../../images/ajaxloader.gif'
import * as XLSX from 'xlsx'
import DTO2096TraficoConsultaAmazonHeader from '../../DTO/DTO2096TraficoConsultaAmazonHeader'
import {
initializeTraficoConsulta,
populateTraficoConsulta,
updateTraficoConsulta
} from '../../../../../store/features/Clientes/2096/AmazonTraficoConsulta'
import {SiMicrosoftexcel} from 'react-icons/si'
import I2096CatGrupoRegulatorio from '../../Interfaces/I2096CatGrupoRegulatorio'
export interface IRptConsultaTraficoProps {}
export default function RptConsultaTrafico(props: IRptConsultaTraficoProps) {
const dispatch = useDispatch()
const mInvoices = useSelector(
(state: RootState) => state.AmazonInvoices.Invoice
(state: RootState) => state.AmazonTraficoConsulta.Consulta
)
const [header, setHeader] = useState('')
const [Referencia, setReferencia] = useState('')
@ -46,35 +47,79 @@ export default function RptConsultaTrafico(props: IRptConsultaTraficoProps) {
const [WaitingMessage, setWaitingMessage] = useState('')
const [msg, setMsg] = useState('')
const [Invoices, setInvoices] = useState<number[]>([])
const [Data, setData] = useState<DTO2096TraficoConsultaAmazonHeader[]>([])
const [CatGrupoRegulario, setCatGrupoRegulatorio] = useState<I2096CatGrupoRegulatorio[]>([])
const msgColor = 'primary'
const loadReport = () => {
DSAmazon.AmazonLinkInvoice2TrafficGet()
DSAmazon.TransporteConsultaAmazon()
.then((response) => {
dispatch(initializeInvoice([]))
dispatch(populateInvoices(response.data))
dispatch(initializeTraficoConsulta([]))
dispatch(populateTraficoConsulta(response.data))
})
.catch((e: Error) => {
alert('Ocurrio un error' + e.message.toString())
})
}
const loadCatalogos = () => {
DSAmazon.CatGrupoRegulatorioGET()
.then((response) => {
setCatGrupoRegulatorio(response.data)
console.log(response.data)
})
.catch((e: Error) => {
alert('Ocurrio un error' + e.message.toString())
})
}
const downloadExcel = (id: number) => {
DSAmazon.TraficoConsultasAmazonGenerateExcel(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', 'Broker File 2023.xls')
document.body.appendChild(link)
link.click()
}
})
.catch((e: Error) => {
setHeader('Error')
setMsg('Ocurrio un error')
setShowMsg(true)
return
})
}
useEffect(() => {
loadCatalogos()
loadReport()
}, [])
/* const check4Updates = (IDInvoice: number) => {
DSAmazon.SETInvoiceDetailRevalidateParts(IDInvoice)
const changeToggle = (row: DTO2096TraficoConsultaAmazonHeader) => {
let Invoice: DTO2096TraficoConsultaAmazonHeader[] = mInvoices.filter(
(item) => item.id === row.id
)
const Obj = { ...Invoice[0] }
Obj.max = !Obj.max
dispatch(updateTraficoConsulta(Obj))
}
const check4Updates = (IDInvoice: number) => {
DSAmazon.TraficoConsultasAmazonById(IDInvoice)
.then((response) => {
DSAmazon.AmazonInvoiceGET(IDInvoice)
DSAmazon.TraficoConsultasAmazonById(IDInvoice)
.then((response) => {
dispatch(updateInvoice(response.data[0]))
let Invoice: I2096Headers[] = response.data.filter(
dispatch(updateTraficoConsulta(response.data))
console.log(response.data)
/* let Invoice: DTO2096TraficoConsultaAmazonHeader[] = response.data.filter(
(item) => item.id === IDInvoice
)
const Obj = { ...Invoice[0] }
Obj.max = !Obj.max
dispatch(updateInvoice(Obj))
dispatch(updateTraficoConsulta(Obj)) */
})
.catch((e: Error) => {
setHeader('Error')
@ -87,28 +132,19 @@ export default function RptConsultaTrafico(props: IRptConsultaTraficoProps) {
setMsg('Ocurrio un error')
return
})
} */
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))
// if (Obj.max) check4Updates(row.id)
}
const updateDataGrid = (IDInvoice: number) => {
//toggleInvoice(IDInvoice)
let Invoice: I2096Headers[] = mInvoices.filter(
/* let Invoice: DTO2096TraficoConsultaAmazonHeader[] = mInvoices.filter(
(item) => item.id === IDInvoice
)
const Obj = { ...Invoice[0] }
Obj.max = !Obj.max
dispatch(updateInvoice(Obj))
// if (Obj.max) check4Updates(IDInvoice)
dispatch(updateTraficoConsulta(Obj))
if (Obj.max) */ check4Updates(IDInvoice)
}
const toggleInvoice = (id: number) => {
/* const toggleInvoice = (id: number) => {
if (!Invoices.includes(id)) {
Invoices.push(id)
} else {
@ -118,7 +154,7 @@ export default function RptConsultaTrafico(props: IRptConsultaTraficoProps) {
})
)
}
}
}*/
function getReceiver(Cadena: string, char1: string[1], char2: string[1]) {
return Cadena.slice(Cadena.indexOf(char1) + 1, Cadena.lastIndexOf(char2))
@ -154,8 +190,8 @@ export default function RptConsultaTrafico(props: IRptConsultaTraficoProps) {
<tr>
<th></th>
<th style={{ width: '50px' }}>id</th>
{/*<th style={{ width: '50px' }}>[...]</th>
<th style={{ width: '50px' }}>PDF</th>
<th style={{ width: '50px' }}></th>
{/*<th style={{ width: '50px' }}>PDF</th>
<th style={{ width: '50px' }}>Facturas</th>
<th style={{ width: '50px' }}>Partidas</th> */}
<th style={{ width: '100px' }}>Referencia</th>
@ -214,70 +250,13 @@ export default function RptConsultaTrafico(props: IRptConsultaTraficoProps) {
)}
</td>
<td>{MasterData.id}</td>
{/* <td style={{ textAlign: 'center' }}>
<Form.Check
aria-label="ChkRow"
onClick={() => toggleInvoice(MasterData.id)}
/>
</td>
<td style={{ width: '50px', textAlign: 'center' }}>
<div
onClick={() => {
downloadPDF(
MasterData.id,
MasterData.invoiceNumber
)
}}
>
<IconContext.Provider
value={{ color: 'red', size: '20px' }}
>
<BsFilePdfFill />
</IconContext.Provider>
</div>
</td>
<td
style={{
width: '50px',
textAlign: 'center',
visibility: MasterData.referencia
? 'visible'
: 'hidden'
}}
>
<div
onClick={() => {
downloadExcelInvoices(MasterData.referencia)
}}
>
<td onClick={()=>{downloadExcel(MasterData.id)}}>
<IconContext.Provider
value={{ color: 'green', size: '20px' }}
>
<AiFillFileExcel />
<SiMicrosoftexcel />
</IconContext.Provider>
</div>
</td>
<td
style={{
width: '50px',
textAlign: 'center',
visibility: MasterData.referencia
? 'visible'
: 'hidden'
}}
>
<div
onClick={() => {
downloadExcelPartidas(MasterData.referencia)
}}
>
<IconContext.Provider
value={{ color: 'green', size: '20px' }}
>
<AiFillFileExcel />
</IconContext.Provider>
</div>
</td> */}
<td style={{ width: '100px', textAlign: 'center' }}>
{MasterData.referencia}
</td>
@ -506,27 +485,6 @@ export default function RptConsultaTrafico(props: IRptConsultaTraficoProps) {
>
Consulta
</th>
{/* <th
style={{
width: '70px',
backgroundColor: '#D3E0EA',
color: '#346288'
}}
></th>
<th
style={{
width: '70px',
backgroundColor: '#D3E0EA',
color: '#346288'
}}
></th>
<th
style={{
width: '70px',
backgroundColor: '#D3E0EA',
color: '#346288'
}}
></th> */}
</tr>
</thead>
<tbody>
@ -548,8 +506,10 @@ export default function RptConsultaTrafico(props: IRptConsultaTraficoProps) {
IDMaster={MasterData.id}
detail={detail}
Habilitado={
MasterData.estatus <= 1
/* MasterData.estatus <= 1 */
1 == 1
}
Catalogo = {CatGrupoRegulario ? CatGrupoRegulario : []}
onDataChange={function (
IDMaster: number
): void {

@ -12,131 +12,58 @@ import {
Row,
Tooltip
} from 'react-bootstrap'
import { IconContext } from 'react-icons'
import { MsgInformativo } from '../../../../Utils/Toast/msgInformativo'
import I2096Detail from '../../Interfaces/I2096Detail'
import DSAmazon from '../../Services/Amazon.Services'
// Redux
import { RootState } from '../../../../../store/store'
import { useDispatch, useSelector } from 'react-redux'
import * as CurrencyFormat from 'react-currency-format'
import { AiOutlineFileSearch, AiTwotoneEdit } from 'react-icons/ai'
import { BsFillChatRightTextFill, BsFillPencilFill } from 'react-icons/bs'
import DTO2096SightLine from '../../DTO/DTO2096SightLine'
import { updateInvoice } from '../../../../../store/features/Clientes/2096/AmazonInvoices'
import DTO2096TraficoFieldsUpdate from '../../DTO/DTO2096TraficoFieldsUpdate'
import I2096Headers from '../../Interfaces/I2096Header'
import DTO2096TraficoConsultaAmazonDetail from '../../DTO/DTO2096TraficoConsultaAmazonDetail'
import DTODataTraficoConsulta from '../../DTO/DTO2096DataTraficoConsulta'
import I2096CatGrupoRegulatorio from '../../Interfaces/I2096CatGrupoRegulatorio'
export interface IRptConsultaTraficoDetalleProps {
IDMaster: number,
detail: I2096Detail,
Habilitado: boolean,
IDMaster: number
detail: DTO2096TraficoConsultaAmazonDetail
Habilitado: boolean
Catalogo: I2096CatGrupoRegulatorio[]
onDataChange: (IDMaster: number) => void
}
export default function RptConsultaTraficoDetalle (props: IRptConsultaTraficoDetalleProps) {
export default function RptConsultaTraficoDetalle(
props: IRptConsultaTraficoDetalleProps
) {
const dispatch = useDispatch()
const mInvoices = useSelector(
(state: RootState) => state.AmazonInvoices.Invoice
)
const [ShowModal, setShowModal] = useState(false)
const [EstatusSwith, setEstatusSwitch] = useState(props.detail.sightLine)
const [EstatusSwith, setEstatusSwitch] = useState(props.detail.swConsulta)
const [UserChanged, setUserChanged] = useState(false)
const [header, setHeader] = useState('')
const [show, setShowMsg] = useState(false)
//const [Show, setShow] = useState(false)
const [msg, setMsg] = useState('')
const [CumplimientoNormativo, setCumplimientoNormativo] = useState(
props.detail.cumplimientoNormativo ? props.detail.cumplimientoNormativo : ''
const [RegulacionConsulta, setRegulacionConsulta] = useState(
props.detail.regulacionConsulta ? props.detail.regulacionConsulta : ''
)
const [Comentarios, setComentarios] = useState(
props.detail.comentariosSightLine
? props.detail.comentariosSightLine
: ''
const [ComentariosConsulta, setComentariosConsulta] = useState(
props.detail.comentariosConsulta ? props.detail.comentariosConsulta : ''
)
const [ShowModalEdit, setShowModalEdit] = useState(false)
const [UnitMeasure, setUnitMeasure] = useState('')
const [UnitOfMeasure, setUnitOfMeasure] = useState('')
const [UnitCost, setUnitCost] = useState('')
const [Quantity, setQuantity] = useState(0)
const [ItemId, setItemId] = useState('')
const [ItemDescription, setItemDescription] = useState('')
const [FraccionGEMCO, setFraccionGEMCO] = useState('')
const [DescripcionGEMCO, setDescripcionGEMCO] = useState('')
const [IDGrupoRegulatorio, setIDGrupoRegulatorio] = useState(
props.detail.grupoRegulatorio
)
const msgColor = 'primary'
const openLink = (item: string) => {
window.open('https://www.amazon.com/dp/' + item)
}
const UpdateInvoiceDetail = (
Invoice: I2096Headers,
Detail: I2096Detail[]
) => {
const updatedInvoice: I2096Headers = {
id: props.IDMaster,
referencia: Invoice.referencia,
commercialInvoiceDate: Invoice.commercialInvoiceDate,
invoiceNumber: Invoice.invoiceNumber,
name: Invoice.name,
trailerNumber: Invoice.trailerNumber,
trailerId: Invoice.trailerId,
porOfLoading: Invoice.porOfLoading,
portOfEntry: Invoice.portOfEntry,
paymentsTerms: Invoice.paymentsTerms,
incoterms: Invoice.incoterms,
hawb: Invoice.hawb,
totalInvoiceQuantityUnitOfMeasure:
Invoice.totalInvoiceQuantityUnitOfMeasure,
totalInvoiceQuantity: Invoice.totalInvoiceQuantity,
totalInvoiceWeightUnitOfMeasure: Invoice.totalInvoiceWeightUnitOfMeasure,
totalInvoiceWeight: Invoice.totalInvoiceWeight,
totalInvoiceValueChargeOrAllowance:
Invoice.totalInvoiceValueChargeOrAllowance,
totalInvoiceValueCurrencyISOCode:
Invoice.totalInvoiceValueCurrencyISOCode,
totalInvoiceValueMonetaryAmount: Invoice.totalInvoiceValueMonetaryAmount,
footNote: Invoice.footNote,
archivo: Invoice.archivo,
fCreacion: Invoice.fCreacion,
clasificador: Invoice.clasificador,
noVuelta: Invoice.noVuelta,
estatus: Invoice.estatus,
max: true,
urgente: Invoice.urgente,
detail: Detail
}
dispatch(updateInvoice(updatedInvoice))
}
const editInvoice = (id: number) => {
const Invoice = mInvoices
.filter((el) => el.id === props.IDMaster)
.map((el) => {
return el
})
const newDetails = Invoice[0].detail.map((el) => {
if (el.id === id) {
return {
...el,
itemQuantityUnitOfMeasure: UnitMeasure,
weightValue: UnitOfMeasure,
actualUnitCostMonetaryAmount: UnitCost,
totalUnitValueMonetaryAmount: (
el.quantity * parseFloat(UnitCost)
).toString()
}
}
return el
})
UpdateInvoiceDetail(Invoice[0], newDetails)
}
const ToggleSightLine = (id: number) => {
const data: DTO2096SightLine = {
id: id,
sightLine: EstatusSwith,
comentariosSightLine: Comentarios
const saveData = () => {
const data: DTODataTraficoConsulta = {
id: props.detail.id,
swConsulta: EstatusSwith,
grupoRegulatorio: IDGrupoRegulatorio,
regulacionConsulta: RegulacionConsulta,
comentariosConsulta: ComentariosConsulta
}
DSAmazon.SightLineSET(data)
DSAmazon.DataTraficoConsultaSET(data)
.then((response) => {
setShowModal(false)
props.onDataChange(props.IDMaster)
@ -149,34 +76,10 @@ export default function RptConsultaTraficoDetalle (props: IRptConsultaTraficoDet
})
}
const saveFields = () => {
const data: DTO2096TraficoFieldsUpdate = {
id: props.detail.id,
UnitMeasure: UnitMeasure,
UnitOfMeasure: parseFloat(UnitOfMeasure),
UnitCost: parseFloat(UnitCost)
}
DSAmazon.TrafficFieldsUpdate(data)
.then((response) => {
setUnitMeasure(response.data.itemQuantityUnitOfMeasure)
setUnitOfMeasure(response.data.weightValue)
setUnitCost(response.data.actualUnitCostMonetaryAmount)
editInvoice(props.detail.id)
setHeader('Informativo')
setMsg('La informacion se guardo exitosamente')
setShowMsg(true)
return
})
.catch((e: Error) => {
setHeader('Error')
setMsg('Ocurrio un error')
setShowMsg(true)
return
})
}
useEffect(() => {
if (UserChanged) setShowModal(true)
if (UserChanged) {
setShowModal(true)
}
}, [EstatusSwith, UserChanged])
return (
@ -199,7 +102,6 @@ export default function RptConsultaTraficoDetalle (props: IRptConsultaTraficoDet
cursor: 'pointer'
}}
className="DetailData"
onClick={() => openLink(props.detail.itemId)}
>
{props.detail.itemId}
</td>
@ -224,18 +126,9 @@ export default function RptConsultaTraficoDetalle (props: IRptConsultaTraficoDet
displayType={'input'}
style={{
fontSize: '17px',
backgroundColor:
props.detail.validaFraccionOriginal === 0
? '#FFFAF2 '
: '#E5F7B6',
border:
props.detail.validaFraccionOriginal === 0
? '2px solid #F9A721'
: '2px solid green',
color:
props.detail.validaFraccionOriginal === 0
? '#5923F6'
: '#000000',
backgroundColor: '#E5F7B6',
border: '2px solid green',
color: '#000000',
width: '135px',
textAlign: 'right',
borderRadius: '10px'
@ -352,7 +245,7 @@ export default function RptConsultaTraficoDetalle (props: IRptConsultaTraficoDet
}}
/>
</td>
{/* <td
{/* <td
style={{
visibility:
CumplimientoNormativo.length === 0 ? 'hidden' : 'visible'
@ -408,121 +301,61 @@ export default function RptConsultaTraficoDetalle (props: IRptConsultaTraficoDet
</td> */}
</tr>
<Modal
show={ShowModalEdit}
show={ShowModal}
onHide={() => {
setShowModalEdit(false)
setShowModal(false)
}}
size={'sm'}
dialogClassName={'modal-50w'}
>
<Modal.Header>
<Modal.Title className="primary">Consulta Amazon {IDGrupoRegulatorio}</Modal.Title>
</Modal.Header>
<Modal.Body>
<div style={{ height: '230px' }}>
<Row>
<Col xs={12}>
<Alert key="warning" variant="warning">
<span style={{ fontWeight: 'bold' }}>No Parte:</span> {ItemId}{' '}
<br />
<span style={{ fontWeight: 'bold' }}>
Fraccion GEMCO:
</span>{' '}
{FraccionGEMCO} <br />
<span style={{ fontWeight: 'bold' }}>
Descripcion GEMCO:
</span>{' '}
{DescripcionGEMCO}
</Alert>
</Col>
</Row>
<Row>
<Col xs={3}>Unit Measure:</Col>
<Col xs={3}>
<Row style={{ paddingTop: '15px' }}>
<Col xs={3}>Grupo Regulatorio</Col>
<Col xs={8}>
<Form.Control
type="text"
id="Search"
size="sm"
value={UnitMeasure}
onChange={(e) => setUnitMeasure(e.target.value)}
/>
</Col>
</Row>
<Row style={{ paddingTop: '5px' }}>
<Col xs={3}>Unit of Measure:</Col>
<Col xs={3}>
<CurrencyFormat
onValueChange={(values: any) => {
const { value } = values
setUnitOfMeasure(value)
}}
value={UnitOfMeasure}
displayType={'input'}
style={{
fontSize: '18px',
backgroundColor: '#F1EEF9',
border: '2px solid #5923F6',
color: '#5923F6',
width: '120px',
textAlign: 'right',
borderRadius: '10px'
as="select"
defaultValue={IDGrupoRegulatorio}
onChange={(e) => {
setIDGrupoRegulatorio(parseInt(e.target.value))
}}
/>
className="form-select form-select-sm"
>
<option value="0">-SELECCIONE-</option>
{props.Catalogo
? props.Catalogo.map((c) => {
return <option value={c.id}>{c.descripcion}</option>
})
: null}
</Form.Control>
</Col>
<Col>&nbsp;</Col>
</Row>
<Row style={{ paddingTop: '5px' }}>
<Col xs={3}>Unit Cost:</Col>
<Col xs={3}>
<CurrencyFormat
onValueChange={(values: any) => {
const { value } = values
setUnitCost(value)
}}
value={UnitCost}
displayType={'input'}
style={{
fontSize: '18px',
backgroundColor: '#F1EEF9',
border: '2px solid #5923F6',
color: '#5923F6',
width: '120px',
textAlign: 'right',
borderRadius: '10px'
}}
<Row style={{ paddingTop: '15px' }}>
<Col xs={3}>Regulacion</Col>
<Col xs={8}>
<Form.Control
as="textarea"
id="Regulacion"
size="sm"
value={RegulacionConsulta.length ? RegulacionConsulta : ''}
onChange={(e) => setRegulacionConsulta(e.target.value)}
/>
</Col>
<Col xs={4}></Col>
<Col xs={2}>
<Button
variant="primary"
onClick={() => {
saveFields()
}}
>
&nbsp;&nbsp;Guardar&nbsp;&nbsp;
</Button>
</Col>
<Col>&nbsp;</Col>
</Row>
</div>
</Modal.Body>
</Modal>
<Modal
show={ShowModal}
onHide={() => {
setShowModal(false)
}}
size={'sm'}
dialogClassName={'modal-50w'}
>
<Modal.Body>
<div style={{ height: '150px' }}>
<Row style={{ paddingTop: '15px' }}>
<Col xs={3}>Comentarios</Col>
<Col xs={8}>
{' '}
<Form.Control
as="textarea"
id="Comentarios"
size="sm"
value={Comentarios.length ? Comentarios : ''}
onChange={(e) => setComentarios(e.target.value)}
value={ComentariosConsulta.length ? ComentariosConsulta : ''}
onChange={(e) => setComentariosConsulta(e.target.value)}
/>
</Col>
<Col>&nbsp;</Col>
@ -536,17 +369,17 @@ export default function RptConsultaTraficoDetalle (props: IRptConsultaTraficoDet
setShowModal(false)
}}
>
&nbsp;&nbsp;No&nbsp;&nbsp;
&nbsp;&nbsp;Cancelar&nbsp;&nbsp;
</Button>
</Col>
<Col xs={6} style={{ textAlign: 'center' }}>
<Button
variant="danger"
onClick={() => {
ToggleSightLine(props.detail.id)
saveData()
}}
>
&nbsp;&nbsp;Si&nbsp;&nbsp;
&nbsp;&nbsp;Guardar&nbsp;&nbsp;
</Button>
</Col>
</Row>

@ -21,6 +21,10 @@ import DTO2096NoParteVerificacion from '../DTO/DTO2096NoParteVerificacion'
import DTO2096InvoiceStatus from '../DTO/DTO2096InvoiceStatus'
import IFileManager from '../../../../Interfaces/Utils/IFileManager'
import DTO2096RptFacturasPagadas from '../DTO/DTO2096RptFacturasPagadas'
import DTO2096TraficoConsultaAmazonDetail from '../DTO/DTO2096TraficoConsultaAmazonDetail'
import DTO2096TraficoConsultaAmazonHeader from '../DTO/DTO2096TraficoConsultaAmazonHeader'
import DTO2096DataTraficoConsulta from '../DTO/DTO2096DataTraficoConsulta'
import I2096CatGrupoRegulatorio from '../Interfaces/I2096CatGrupoRegulatorio'
class AmazonDataService {
AmazonPendingClasificationInvoiceGET() {
@ -112,6 +116,9 @@ class AmazonDataService {
SightLineSET(data: DTO2096SightLine) {
return http.put<DTO2096SightLine>(`/AmazonInvoice/AmazonSightLineSET`, data)
}
DataTraficoConsultaSET(data: DTO2096DataTraficoConsulta) {
return http.put<DTO2096DataTraficoConsulta>(`/AmazonInvoice/DataTraficoConsultaSET`, data)
}
PaisClavesGET() {
return http.get<I2096PaisClave[]>(`/AmazonInvoice/PaisClavesGet`)
@ -181,6 +188,16 @@ class AmazonDataService {
return error
})
}
TraficoConsultasAmazonGenerateExcel(id: number) {
return http.get<ArrayBuffer>(`/AmazonInvoice/TraficoConsultaAmazonGenerateExcel?id=${id}`, {responseType: 'arraybuffer'})
.then(function (response) {
return response
})
.catch(function (error) {
console.log(error)
return error
})
}
CreateACKFile(referencia: string) {
return http.get<Boolean>(`/AmazonInvoice/createACKFile?Referencia=`+referencia)
}
@ -229,5 +246,14 @@ class AmazonDataService {
ApplyAnswerFile2Invoice(Files: string[]) {
return http.post<Boolean>(`/AmazonInvoice/ApplyAnswerFile2Invoice`, Files)
}
TransporteConsultaAmazon() {
return http.get<DTO2096TraficoConsultaAmazonHeader[]>(`/AmazonInvoice/TraficoConsultasAmazon`)
}
CatGrupoRegulatorioGET() {
return http.get<I2096CatGrupoRegulatorio[]>(`/AmazonInvoice/CatGrupoRegulatorioGET`)
}
TraficoConsultasAmazonById(id: number) {
return http.get<DTO2096TraficoConsultaAmazonHeader>(`/AmazonInvoice/TraficoConsultasAmazonById?id=${id}`)
}
}
export default new AmazonDataService()

@ -106,14 +106,14 @@ export default function DashboardTrafico(props: IDashboardTraficoProps) {
</Col>
</Row>
<Row>
{/* <Col xs={12}>
<Col xs={12}>
<Link
to="../RptConsultaTrafico"
style={{ textDecoration: 'none', float: 'right' }}
>
Consultas Amazon
</Link>
</Col> */}
</Col>
</Row>
</Card.Body>
{/* <Card.Footer

@ -0,0 +1,50 @@
import { createSlice, PayloadAction } from '@reduxjs/toolkit'
import DTO2096TraficoConsultaAmazonHeader from '../../../../Components/Clientes/Amazon/DTO/DTO2096TraficoConsultaAmazonHeader'
const Consulta: DTO2096TraficoConsultaAmazonHeader[] = []
const initialState = { Consulta }
export const AmazonTraficoConsultaSlice = createSlice({
name: 'AmazonTraficoConsulta',
initialState: initialState,
reducers: {
initializeTraficoConsulta: (state, action: PayloadAction<DTO2096TraficoConsultaAmazonHeader[]>) => {
state.Consulta = action.payload
},
populateTraficoConsulta: (state, action: PayloadAction<DTO2096TraficoConsultaAmazonHeader[]>) => {
action.payload.forEach((newItem) => {
var Existe = state.Consulta.find(function (onMemoryItem) {
return onMemoryItem.id === newItem.id
})
if (!Existe) state.Consulta.push(newItem)
})
},
addTraficoConsulta: (state, action: PayloadAction<DTO2096TraficoConsultaAmazonHeader>) => {
var Existe = state.Consulta.find(function (item) {
return item.id === action.payload.id
})
if (!Existe) state.Consulta.push(action.payload)
},
updateTraficoConsulta: (state, action: PayloadAction<DTO2096TraficoConsultaAmazonHeader>) => {
const i = state.Consulta.findIndex(
(_element) => _element.id === action.payload.id
)
if (i > -1) state.Consulta[i] = action.payload
else state.Consulta.push(action.payload)
},
updateTraficoConsultaDetail: (state, action: PayloadAction<DTO2096TraficoConsultaAmazonHeader>) => {
const i = state.Consulta.findIndex(
(_element) => _element.id === action.payload.id
)
if (i > -1) state.Consulta[i] = action.payload
else state.Consulta.push(action.payload)
},
deleteTraficoConsulta: (state, action: PayloadAction<number>) => {
const newArr = state.Consulta.filter((data) => data.id != action.payload)
state.Consulta = newArr
}
}
})
export const { initializeTraficoConsulta, addTraficoConsulta, populateTraficoConsulta, updateTraficoConsulta, deleteTraficoConsulta } =
AmazonTraficoConsultaSlice.actions
export default AmazonTraficoConsultaSlice.reducer

@ -16,6 +16,7 @@ import Data1868FacturaDetalleSlice from './features/Clientes/1868/Data1868Factur
import CorresponsalesCuentasComplementariasEstatusSlice from './features/Corresponsales/CorresponsalesCuentasComplementariasEstatusSlice'
import AmazonInvoicesSlice from './features/Clientes/2096/AmazonInvoices'
import AmazonNoPartesSlice from './features/Clientes/2096/AmazonNoPartes'
import AmazonTraficoConsultaSlice from './features/Clientes/2096/AmazonTraficoConsulta'
export const store = configureStore({
@ -36,7 +37,8 @@ export const store = configureStore({
Data1868FacturaDetalle: Data1868FacturaDetalleSlice,
CCueCompEstatus : CorresponsalesCuentasComplementariasEstatusSlice,
AmazonInvoices : AmazonInvoicesSlice,
AmazonNoPartes: AmazonNoPartesSlice
AmazonNoPartes: AmazonNoPartesSlice,
AmazonTraficoConsulta: AmazonTraficoConsultaSlice
}
})

Loading…
Cancel
Save