diff --git a/package.json b/package.json
index 96ae56e..3a861a9 100644
--- a/package.json
+++ b/package.json
@@ -43,6 +43,7 @@
"react-google-qrcode": "^1.0.3",
"react-grid-data": "^1.1.5",
"react-icons": "^4.3.1",
+ "react-number-format": "^5.1.2",
"react-print-components": "^1.0.4",
"react-redux": "^7.2.6",
"react-router-dom": "6",
diff --git a/src/Components/Clientes/Amazon/Components/ComboSelect/ComboFraccion.tsx b/src/Components/Clientes/Amazon/Components/ComboSelect/ComboFraccion.tsx
index 2a877fe..f00f0fe 100644
--- a/src/Components/Clientes/Amazon/Components/ComboSelect/ComboFraccion.tsx
+++ b/src/Components/Clientes/Amazon/Components/ComboSelect/ComboFraccion.tsx
@@ -1,144 +1,206 @@
-import { useState } from 'react'
+import { useCallback, useState } from 'react'
import { Button, Col, Form, Modal, Row } from 'react-bootstrap'
-import * as CurrencyFormat from 'react-currency-format'
+import * as CurrencyFormat from 'react-currency-format'
+/* import { PatternFormat } from 'react-number-format'; */
import { MsgInformativo } from '../../../../Utils/Toast/msgInformativo'
+import { RootState } from '../../../../../store/store'
+import {
+ populateInvoices,
+ addInvoice,
+ updateInvoice,
+ deleteInvoice
+} from '../../../../../store/features/Clientes/2096/AmazonInvoices'
+// Redux
+import { useDispatch, useSelector } from 'react-redux'
import DTO2096Fraccion from '../../DTO/DTO2096Fraccion'
import DSAmazon from '../../Services/Amazon.Services'
+import I2096Headers from '../../Interfaces/I2096Header'
+import { max } from 'cypress/types/lodash'
export interface IComboFraccionProps {
- IDDetail: number
- FraccionOriginal: string
+ IDInvoice: number
+ IDDetail: number
+ FraccionOriginal: string
+ parentFunction: Function
}
-export function ComboFraccion (props: IComboFraccionProps) {
- const [Validacion, setValidacion] = useState(0)
- const [showModal, setShowModal] = useState(false)
- const [Fraccion, setFraccion] = useState('')
- const [header, setHeader] = useState('')
- const [show, setShowMsg] = useState(false)
- const [msg, setMsg] = useState('')
- const msgColor = 'primary'
-
- const changeValidacion = (e: number) => {
- setValidacion(e)
- if (e === 2) {
- setShowModal(true)
- }
- if (e === 1) {
- const data: DTO2096Fraccion = {
- id: props.IDDetail,
- fraccion: props.FraccionOriginal
- }
- DSAmazon.SetFraccion(data)
- .then((response) => {
- setShowModal(false)
- setHeader('Confirmacion')
- setMsg('La descripcion se ha guardado correctamente')
- setShowMsg(true)
- return
- })
- .catch((e: Error) => {
- alert('Ocurrio un error' + e.message.toString())
- })
- }
+export function ComboFraccion(props: IComboFraccionProps) {
+ const dispatch = useDispatch()
+ const mInvoices = useSelector(
+ (state: RootState) => state.AmazonInvoices.Invoice
+ )
+ const [Validacion, setValidacion] = useState(0)
+ const [showModal, setShowModal] = useState(false)
+ const [Fraccion, setFraccion] = useState('')
+ const [header, setHeader] = useState('')
+ const [show, setShowMsg] = useState(false)
+ const [msg, setMsg] = useState('')
+ const msgColor = 'primary'
+
+
+ const forceUpdate: () => void = useState({})[1].bind(null, {}) // see NOTE below
+
+ const changeValidacion = (e: number) => {
+ setValidacion(e)
+ if (e === 2) {
+ setShowModal(true)
}
-
- const saveFraccion = () => {
- DSAmazon.GetValidaFraccion(Fraccion)
+ if (e === 1) {
+ const data: DTO2096Fraccion = {
+ id: props.IDDetail,
+ fraccion: props.FraccionOriginal
+ }
+ DSAmazon.SetFraccion(data)
.then((response) => {
- if (response.data.respuesta === 'Si') {
- const data: DTO2096Fraccion = {
- id: props.IDDetail,
- fraccion: Fraccion
- }
- DSAmazon.SetFraccion(data)
- .then((response) => {
- setShowModal(false)
- setHeader('Confirmacion')
- setMsg('La descripcion se ha guardado correctamente')
- setShowMsg(true)
- return
- })
- .catch((e: Error) => {
- alert('Ocurrio un error' + e.message.toString())
- })
- } else {
- alert(
- 'Esa fraccion no existe, favor de verificarla antes de poder guardar...'
- )
- return
- }
+
+ /*
+ let Invoice: I2096Headers[] = mInvoices.filter((item) => item.id === props.IDInvoice)
+ const Obj = { ...Invoice[0] }
+
+ const newObject = Invoice.map(Invoice => ({ ...Invoice,
+ detail: Invoice.detail.filter(detail=>detail.id===props.IDDetail).map(detail => ({ ...detail,
+ fraccionGEMCO: detail.destinationHTSCode.replaceAll('.','')
+ }))
+ }))
+
+
+ const Obj2 = { ...newObject[0] }
+ Obj2.max = !Obj2.max
+
+ console.log('.................................new object '+JSON.stringify(Obj2))
+ dispatch(updateInvoice(Obj2))
+*/
+
+/* const newObj = mInvoices.forEach(function(o) {
+ o.detail = o.detail.filter(s => (s.idHeader === props.IDInvoice) && (s.id!=props.IDDetail));
+}); */
+
+const newObj = mInvoices.map(function(o) {
+ const newDetail = {...o.detail}
+ if (newDetail[0].id===props.IDDetail) {
+ newDetail[0].fraccionGEMCO=Fraccion
+ }
+ return newDetail
+});
+
+console.log(newObj)
+
+//dispatch(updateInvoice(newObj))
+
+
+ setShowModal(false)
+ setHeader('Confirmacion')
+ setMsg('La descripcion se ha guardado correctamente')
+ setShowMsg(true)
+ forceUpdate()
+ return
})
.catch((e: Error) => {
alert('Ocurrio un error' + e.message.toString())
})
}
-
- return (
-
-
changeValidacion(parseInt(e.target.value))}
- value={Validacion}
- >
-
-
-
-
- {
- setShowModal(false)
- }}
- size={'sm'}
- dialogClassName={'modal-50w'}
- >
-
-
-
- Proporcione la facccion GEMCO
-
- {
- const { value } = values
- setFraccion(value)
- }}
- format={'######## ##'}
- value={Fraccion}
- displayType={'input'}
- style={{
- fontSize: '18px',
- backgroundColor: '#F1EEF9',
- border: '2px solid #5923F6',
- color: '#5923F6',
- width: '120px',
- textAlign: 'right',
- borderRadius: '10px'
- }}
- />
-
-
-
-
-
-
-
- {
- setShowMsg(false)
- }}
- />
-
- )
- }
\ No newline at end of file
+ }
+
+
+
+ const saveFraccion = () => {
+ DSAmazon.GetValidaFraccion(Fraccion)
+ .then((response) => {
+ if (response.data.respuesta === 'Si') {
+ const data: DTO2096Fraccion = {
+ id: props.IDDetail,
+ fraccion: Fraccion
+ }
+ DSAmazon.SetFraccion(data)
+ .then((response) => {
+ setShowModal(false)
+ setHeader('Confirmacion')
+ setMsg('La descripcion se ha guardado correctamente')
+ setShowMsg(true)
+ return
+ })
+ .catch((e: Error) => {
+ alert('Ocurrio un error' + e.message.toString())
+ })
+ } else {
+ alert(
+ 'Esa fraccion no existe, favor de verificarla antes de poder guardar...'
+ )
+ return
+ }
+ })
+ .catch((e: Error) => {
+ alert('Ocurrio un error' + e.message.toString())
+ })
+ }
+
+ return (
+
+
changeValidacion(parseInt(e.target.value))}
+ value={Validacion}
+ >
+
+
+
+
+
{
+ setShowModal(false)
+ }}
+ size={'sm'}
+ dialogClassName={'modal-50w'}
+ >
+
+
+
+ Proporcione la facccion GEMCO {props.IDInvoice}
+
+ {
+ const { value } = values
+ setFraccion(value)
+ }}
+
+ format={'######## ##'}
+ value={Fraccion}
+ displayType={'input'}
+ style={{
+ fontSize: '18px',
+ backgroundColor: '#F1EEF9',
+ border: '2px solid #5923F6',
+ color: '#5923F6',
+ width: '120px',
+ textAlign: 'right',
+ borderRadius: '10px'
+ }}
+ />
+{/* ; */}
+
+
+
+
+
+
+
+
{
+ setShowMsg(false)
+ }}
+ />
+
+ )
+}
diff --git a/src/Components/Clientes/Amazon/Components/TextBox/TextBoxFraccion.tsx b/src/Components/Clientes/Amazon/Components/TextBox/TextBoxFraccion.tsx
index 6661f54..539de83 100644
--- a/src/Components/Clientes/Amazon/Components/TextBox/TextBoxFraccion.tsx
+++ b/src/Components/Clientes/Amazon/Components/TextBox/TextBoxFraccion.tsx
@@ -1,5 +1,6 @@
import { useState } from 'react'
import * as CurrencyFormat from 'react-currency-format'
+import { PatternFormat } from 'react-number-format';
export interface ITextBoxFraccionProps {
Fraccion: string | null
diff --git a/src/Components/Clientes/Amazon/Reportes/RptAmazonPendingInvoices.tsx b/src/Components/Clientes/Amazon/Reportes/RptAmazonPendingInvoices.tsx
index b03b6ad..1cfba52 100644
--- a/src/Components/Clientes/Amazon/Reportes/RptAmazonPendingInvoices.tsx
+++ b/src/Components/Clientes/Amazon/Reportes/RptAmazonPendingInvoices.tsx
@@ -1,14 +1,8 @@
-import * as React from 'react'
import { useEffect, useState } from 'react'
import { Button, Card, Col, Form, Row, Table } from 'react-bootstrap'
import { IconContext } from 'react-icons'
import { BsChevronDown, BsChevronRight, BsSearch } from 'react-icons/bs'
-import {
- FaCheckCircle,
- FaFileExcel,
- FaQuestionCircle,
- FaWindowClose
-} from 'react-icons/fa'
+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'
@@ -17,21 +11,34 @@ import I2096Detail from '../Interfaces/I2096Detail'
import I2096Headers from '../Interfaces/I2096Header'
import DSAmazon from '../Services/Amazon.Services'
import * as XLSX from 'xlsx'
-import { iteratorSymbol } from 'immer/dist/internal'
-import { RegisterPermisoClientes } from '../../../registerPermisoClientes/registerPermisoClientes'
-import { receiveMessageOnPort } from 'worker_threads'
import DTO2096PrevioExcel from '../DTO/DTO2096PrevioExcel'
-import { allowedNodeEnvironmentFlags } from 'process'
+import { MsgInformativo } from '../../../Utils/Toast/msgInformativo'
+import { RootState } from '../../../../store/store'
+import {
+ populateInvoices,
+ addInvoice,
+ updateInvoice,
+ deleteInvoice
+} from '../../../../store/features/Clientes/2096/AmazonInvoices'
+// Redux
+import { useDispatch, useSelector } from 'react-redux'
+import RtpAmazonPendingInvoicesDetail from './RptAmazonPendingInvoicesDetail'
export interface IRtpAmazonPendingInvoicesProps {}
export default function RtpAmazonPendingInvoices(
props: IRtpAmazonPendingInvoicesProps
) {
- const [Data, setData] = useState([])
- const [DataOriginal, setDataOriginal] = useState([])
+ 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()
@@ -46,8 +53,7 @@ export default function RtpAmazonPendingInvoices(
DSAmazon.GetPendingInvoice()
.then((response) => {
console.log(response.data)
- setData(response.data)
- setDataOriginal(response.data)
+ dispatch(populateInvoices(response.data))
})
.catch((e: Error) => {
alert('Ocurrio un error' + e.message.toString())
@@ -55,10 +61,15 @@ export default function RtpAmazonPendingInvoices(
}
const downloadExcel = (id: number) => {
- let Invoice: I2096Headers[] = Data.filter((row) => row.id === id)
+/* DSAmazon.TerminaFactura(id)
+ .then((response) => {})
+ .catch((e: Error) => {
+ alert('Ocurrio un error' + e.message.toString())
+ }) */
+ let Invoice: I2096Headers[] = mInvoices.filter((row) => row.id === id)
let Details: I2096Detail[] = Invoice[0].detail
- let Consecutivo=1;
- let excelReadyArray : DTO2096PrevioExcel[] = Details.map(function(element){
+ let Consecutivo = 1
+ let excelReadyArray: DTO2096PrevioExcel[] = Details.map(function (element) {
return {
Consecutivo: (Consecutivo++).toString(),
ClaveCliente: '2096',
@@ -66,72 +77,76 @@ export default function RtpAmazonPendingInvoices(
ClaveProveedor: '10',
TipoOperacion: '1',
Fraccion: element.fraccionGEMCO,
- SubDivisión: element.fraccionGEMCO.substring(-2),
- DescripcionTIGIE: '',
- DescripcionFactura: element.pedimentoDescription,
- DescripcionAgenteAduanal:element.descripcionGEMCO,
- UMFactura: '',
- UMComercial: '',
- UMTarifa:'',
- PrecioUnitario: '',
- PaisOrigenDestino: '',
- PaisCompradorVendedor: '',
- CodigoBarras: '',
- CodigoControlInterno: '',
- FamiliaProducto: '',
+ SubDivisión: element.fraccionGEMCO.slice(-2),
+ DescripcionTIGIE: ' ',
+ DescripcionFactura: element.itemDescription,
+ DescripcionAgenteAduanal: element.descripcionGEMCO,
+ UMFactura: ' ',
+ UMComercial: ' ',
+ UMTarifa: ' ',
+ PrecioUnitario: ' ',
+ PaisOrigenDestino: ' ',
+ PaisCompradorVendedor: ' ',
+ CodigoBarras: ' ',
+ CodigoControlInterno: ' ',
+ FamiliaProducto: ' ',
Vinculacion: '1',
- CodigoPreferencial: '',
+ CodigoPreferencial: ' ',
MetodoValoración: '1',
AplicaTLC: '0',
MontoDesgravacion: '0,000',
TipoArancel: '1',
TasaArancelEspecifico: '0,00000',
TasaMaximaAdvalorem: '0,00000',
- UM: '',
- ES: '',
- Peso: '',
- Observaciones: '',
- ValorMinimo: '',
- UMCove: '',
- ClaveModificacion: '',
- DescripcionCertificado: '',
- TipoUsoMercancia: '',
- Exotico: '',
- Registro: '',
- TipoRegistro: '',
- FechaEmision: '',
- FechaVencimiento: '',
- Producto: '',
- UMCFDI: '',
- UMEmbalaje: '',
- IdParte99Update: ''
+ UM: ' ',
+ ES: ' ',
+ Peso: ' ',
+ Observaciones: ' ',
+ ValorMinimo: ' ',
+ UMCove: ' ',
+ ClaveModificacion: ' ',
+ DescripcionCertificado: ' ',
+ TipoUsoMercancia: ' ',
+ Exotico: ' ',
+ Registro: ' ',
+ TipoRegistro: ' ',
+ FechaEmision: ' ',
+ FechaVencimiento: ' ',
+ Producto: ' ',
+ UMCFDI: ' ',
+ UMEmbalaje: ' ',
+ IdParte99Update: ' '
}
- });
- exportExcel(excelReadyArray, 'PlantillaCarga')
+ })
+ exportExcel(id, excelReadyArray, 'Plantilla de partes')
}
- function exportExcel(jsonData: DTO2096PrevioExcel[], fileName: string): void {
+ function exportExcel(
+ id: number,
+ jsonData: DTO2096PrevioExcel[],
+ fileName: string
+ ): void {
let Heading = [
[
'Consecutivo',
'ClaveCliente',
- 'Parte',
- 'ClaveProveedor',
- 'TipoOperacion',
+ 'Parte',
+ 'ClaveProveedor',
+ 'TipoOperacion',
'Fraccion',
- 'SubDivisión',
+ 'SubDivisión',
'DescripcionTIGIE',
'DescripcionFactura',
'DescripcionAgenteAduanal',
- 'UMFactura',
- 'UMComercial',
+ 'UMFactura',
+ 'UMComercial',
'UMTarifa',
'PrecioUnitario',
'PaisOrigenDestino',
'PaisCompradorVendedor',
'CodigoBarras',
'CodigoControlInterno',
- 'FamiliaProducto',
+ 'FamiliaProducto',
'Vinculacion',
'CodigoPreferencial',
'MetodoValoración',
@@ -160,20 +175,86 @@ export default function RtpAmazonPendingInvoices(
'IdParte99Update'
]
]
-
-
+ let clientesHeading = [
+ [
+ 'ConsecutivoPartes',
+ 'ClaveCliente',
+
+ ]
+ ]
+ let identificadoresHeading = [
+ [
+ 'Consecutivo',
+ 'TipoIdentificador',
+ 'ClaveIdentificador',
+ 'Art',
+ 'Complemento1',
+ 'Complemento2',
+ 'Complemento3',
+ 'ClaveCliente',
+ 'Parte',
+ 'ClaveProveedor',
+ 'TipoOperacion',
+ 'FirmaDescargo',
+ 'NumeroPermiso',
+ 'IdParte99Update'
+ ]
+ ]
+ let impuestosPartesHeading = [
+ [
+ 'Impuesto',
+ 'ValorTasa',
+ 'FormaPago',
+ 'ClaveCliente',
+ 'Parte',
+ 'ClaveProveedor',
+ 'TipoOperacion'
+ ]
+ ]
+ let submodelosHeading = [
+ [
+ 'ConsecutivoPartePadre',
+ 'ConsecutivoParteHijo'
+ ]
+ ]
const wb = XLSX.utils.book_new()
const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet([])
+ const ws2: XLSX.WorkSheet = XLSX.utils.json_to_sheet([])
+ const ws3: XLSX.WorkSheet = XLSX.utils.json_to_sheet([])
+ const ws4: XLSX.WorkSheet = XLSX.utils.json_to_sheet([])
+ const ws5: XLSX.WorkSheet = XLSX.utils.json_to_sheet([])
+ const ws6: XLSX.WorkSheet = XLSX.utils.json_to_sheet([])
XLSX.utils.sheet_add_aoa(ws, Heading)
XLSX.utils.sheet_add_json(ws, jsonData, { origin: 'A2', skipHeader: true })
- XLSX.utils.book_append_sheet(wb, ws, 'Sheet1')
+ XLSX.utils.book_append_sheet(wb, ws, 'Partes')
+
+
+ XLSX.utils.sheet_add_aoa(ws2, clientesHeading)
+ XLSX.utils.sheet_add_json(ws2, [{}], { origin: 'A2', skipHeader: true })
+ XLSX.utils.book_append_sheet(wb, ws2, 'Clientes')
+
+ XLSX.utils.sheet_add_aoa(ws3, identificadoresHeading)
+ XLSX.utils.sheet_add_json(ws3, [{}], { origin: 'A2', skipHeader: true })
+ XLSX.utils.book_append_sheet(wb, ws3, 'Identificadores')
+
+ XLSX.utils.sheet_add_aoa(ws4, impuestosPartesHeading)
+ XLSX.utils.sheet_add_json(ws4, [{}], { origin: 'A2', skipHeader: true })
+ XLSX.utils.book_append_sheet(wb, ws4, 'ImpuestosPartes')
+
+ XLSX.utils.sheet_add_aoa(ws5, submodelosHeading)
+ XLSX.utils.sheet_add_json(ws5, [{}], { origin: 'A2', skipHeader: true })
+ XLSX.utils.book_append_sheet(wb, ws5, 'Submodelos')
+
+ XLSX.utils.sheet_add_aoa(ws6, [ [] ])
+ XLSX.utils.sheet_add_json(ws6, [{}], { origin: 'A2', skipHeader: true })
+ XLSX.utils.book_append_sheet(wb, ws6, 'Diccionario')
XLSX.writeFile(wb, fileName + '.xlsx')
var range = XLSX.utils.decode_range(ws['!ref?'])
- for (var C = range.s.c; C <= range.e.c; ++C) {
+ /* for (var C = range.s.c; C <= range.e.c; ++C) {
var address = XLSX.utils.encode_col(C) + '1' // <-- first row, column number C
if (!ws[address]) continue
ws[address].v = ws[address].v.toUpperCase()
- }
+ } */
}
useEffect(() => {
@@ -181,23 +262,14 @@ export default function RtpAmazonPendingInvoices(
}, [])
const changeToggle = (row: I2096Headers) => {
- let x = Data.filter((a) => {
- if (a.id === row.id) {
- return a
- }
- })
- if (x) {
- const obj = { ...x[0] }
- obj.max = !obj.max
- const DataCopy = Data
- const i = DataCopy.findIndex((_element) => _element.id === row.id)
- if (i > -1) DataCopy[i] = obj
- setData([...DataCopy])
- }
+ 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)
+ /* setFiltro(e.target.value)
if (e.target.value.length > 0) {
setData(
Data.filter(function (row) {
@@ -208,7 +280,7 @@ export default function RtpAmazonPendingInvoices(
)
} else {
setData(DataOriginal)
- }
+ } */
}
const openLink = (item: string) => {
@@ -306,8 +378,8 @@ export default function RtpAmazonPendingInvoices(
- {Data
- ? Data.map((MasterData) => {
+ {mInvoices
+ ? mInvoices.map((MasterData) => {
return (
<>
- {Data.map((MD) => {
+ {mInvoices.map((MD) => {
return (
<>
{MD.detail
@@ -611,222 +683,7 @@ export default function RtpAmazonPendingInvoices(
detail.idHeader
)
.map((detail) => {
- return (
-
-
-
- |
-
- openLink(detail.itemId)
- }
- >
- {detail.itemId}
- |
-
- {detail.itemDescription}
- |
-
- {
- detail.pedimentoDescription
- }
- |
-
- {detail.destinationHTSCode}
- |
-
- {detail.validaFraccionOriginal ===
- 0 ? (
-
-
-
- ) : detail.validaFraccionOriginal ===
- 1 ? (
-
-
-
- ) : (
-
-
-
- )}
- |
-
-
- |
-
-
- |
-
-
- |
-
- {detail.descripcionGEMCO}
- |
-
- {detail.countryOfOrigin}
- |
-
- {detail.productGroup}
- |
-
- {detail.brand}
- |
-
- {detail.model}
- |
-
- {
- detail.itemQuantityUnitOfMeasure
- }
- |
-
- {detail.quantity}
- |
-
- {
- detail.netWeightUnitOfMeasure
- }
- |
-
- {
- detail.actualUnitCostMonetaryAmount
- }
- |
-
- {
- detail.totalUnitValueMonetaryAmount
- }
- |
-
- )
+ return
})}
>
)
@@ -845,6 +702,15 @@ export default function RtpAmazonPendingInvoices(
+ {
+ setShowMsg(false)
+ }}
+ />
)
}
diff --git a/src/Components/Clientes/Amazon/Reportes/RptAmazonPendingInvoicesDetail.tsx b/src/Components/Clientes/Amazon/Reportes/RptAmazonPendingInvoicesDetail.tsx
new file mode 100644
index 0000000..598ee38
--- /dev/null
+++ b/src/Components/Clientes/Amazon/Reportes/RptAmazonPendingInvoicesDetail.tsx
@@ -0,0 +1,227 @@
+import * as React from 'react'
+import { IconContext } from 'react-icons'
+import { FaCheckCircle, 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'
+
+export interface IRtpAmazonPendingInvoivesDetailProps {
+ IDMaster: number
+ detail: I2096Detail
+}
+
+export default function RtpAmazonPendingInvoivesDetail(
+ props: IRtpAmazonPendingInvoivesDetailProps
+) {
+ const openLink = (item: string) => {
+ window.open('https://www.amazon.com/dp/' + item)
+ }
+
+
+ const parentFunction = (fraccion: string) => {
+ alert('update')
+ }
+
+ return (
+ <>
+
+
+
+ |
+ openLink(props.detail.itemId)}
+ >
+ {props.detail.itemId}
+ |
+
+ {props.detail.itemDescription}
+ |
+
+ {props.detail.pedimentoDescription}
+ |
+
+ {props.detail.destinationHTSCode}
+ |
+
+ {props.detail.validaFraccionOriginal === 0 ? (
+
+
+
+ ) : props.detail.validaFraccionOriginal === 1 ? (
+
+
+
+ ) : (
+
+
+
+ )}
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+ {props.detail.descripcionGEMCO}
+ |
+
+ {props.detail.countryOfOrigin}
+ |
+
+ {props.detail.productGroup}
+ |
+
+ {props.detail.brand}
+ |
+
+ {props.detail.model}
+ |
+
+ {props.detail.itemQuantityUnitOfMeasure}
+ |
+
+ {props.detail.quantity}
+ |
+
+ {props.detail.netWeightUnitOfMeasure}
+ |
+
+ {props.detail.actualUnitCostMonetaryAmount}
+ |
+
+ {props.detail.totalUnitValueMonetaryAmount}
+ |
+
+ >
+ )
+}
diff --git a/src/Components/Clientes/Amazon/Services/Amazon.Services.ts b/src/Components/Clientes/Amazon/Services/Amazon.Services.ts
index bd2f991..033ef69 100644
--- a/src/Components/Clientes/Amazon/Services/Amazon.Services.ts
+++ b/src/Components/Clientes/Amazon/Services/Amazon.Services.ts
@@ -18,5 +18,8 @@ class AmazonDataService {
SetDescripcion(data: DTO2096Descripcion) {
return http.post(`/AmazonInvoice/C2096DescripcionSet`, data)
}
+ TerminaFactura(id: number) {
+ return http.get(`/AmazonInvoice/TerminaFactura?id=${id}`)
+ }
}
export default new AmazonDataService()
diff --git a/src/store/features/Clientes/2096/AmazonInvoices.ts b/src/store/features/Clientes/2096/AmazonInvoices.ts
new file mode 100644
index 0000000..aca54e1
--- /dev/null
+++ b/src/store/features/Clientes/2096/AmazonInvoices.ts
@@ -0,0 +1,42 @@
+import { createSlice, PayloadAction } from '@reduxjs/toolkit'
+import I2096Headers from '../../../../Components/Clientes/Amazon/Interfaces/I2096Header';
+const Invoice: I2096Headers[] = []
+const initialState = { Invoice }
+
+export const AmazonInvoicesSlice = createSlice({
+ name: 'AmazonInvoices',
+ initialState: initialState,
+ reducers: {
+ populateInvoices : (state, action: PayloadAction) => {
+ action.payload.forEach(newItem => {
+ var Existe = state.Invoice.find(function(onMemoryItem) {
+ return onMemoryItem.id === newItem.id;
+ });
+ if (!Existe) state.Invoice.push(newItem)
+ })
+ },
+ addInvoice : (state, action: PayloadAction) => {
+ var Existe = state.Invoice.find(function(item) {
+ return item.id === action.payload.id;
+ });
+ if (!Existe) state.Invoice.push(action.payload)
+ },
+ updateInvoice : (state, action: PayloadAction) => {
+ const i = state.Invoice.findIndex(_element => _element.id === action.payload.id);
+ if (i > -1) state.Invoice[i] = action.payload;
+ else state.Invoice.push(action.payload);
+ },
+ updateInvoiceDetail : (state, action: PayloadAction) => {
+ const i = state.Invoice.findIndex(_element => _element.id === action.payload.id);
+ if (i > -1) state.Invoice[i] = action.payload;
+ else state.Invoice.push(action.payload);
+ },
+ deleteInvoice : (state, action: PayloadAction) => {
+ const newArr = state.Invoice.filter(data => data.id != action.payload);
+ state.Invoice=newArr
+ },
+ },
+})
+
+export const { addInvoice, populateInvoices, updateInvoice, deleteInvoice } = AmazonInvoicesSlice.actions;
+export default AmazonInvoicesSlice.reducer;
diff --git a/src/store/store.ts b/src/store/store.ts
index dabb40c..ef2f0e2 100644
--- a/src/store/store.ts
+++ b/src/store/store.ts
@@ -14,6 +14,7 @@ import Cat1868ResponsablesSlice from './features/Clientes/1868/Cat1868Responsabl
import Cat1868ClaveSATSlice from './features/Clientes/1868/Cat1868ClaveSATSlice'
import Data1868FacturaDetalleSlice from './features/Clientes/1868/Data1868FacturaDetalleSlice'
import CorresponsalesCuentasComplementariasEstatusSlice from './features/Corresponsales/CorresponsalesCuentasComplementariasEstatusSlice'
+import AmazonInvoicesSlice from './features/Clientes/2096/AmazonInvoices'
export const store = configureStore({
@@ -32,7 +33,8 @@ export const store = configureStore({
Cat1868Responsables: Cat1868ResponsablesSlice,
Cat1868ClaveSAT: Cat1868ClaveSATSlice,
Data1868FacturaDetalle: Data1868FacturaDetalleSlice,
- CCueCompEstatus : CorresponsalesCuentasComplementariasEstatusSlice
+ CCueCompEstatus : CorresponsalesCuentasComplementariasEstatusSlice,
+ AmazonInvoices : AmazonInvoicesSlice
}
})
diff --git a/yarn.lock b/yarn.lock
index 18e622d..ae2eb5a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -9082,6 +9082,13 @@ react-my-hooks@^0.2.0:
resolved "https://registry.yarnpkg.com/react-my-hooks/-/react-my-hooks-0.2.0.tgz#585c26fa36f0630c2294b7fc1b628bc518b90667"
integrity sha512-O5IC8JI1vTZHg492ZvNuAS+v6n3EdD7YzVk38wcHo9POTTEIRJ6ZlXyZLHdV3Mah7S5rhsNC/hDJIxJwmWFxeA==
+react-number-format@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/react-number-format/-/react-number-format-5.1.2.tgz#54feff94d837e67078e234c2950d9a0fb96df3d6"
+ integrity sha512-NXm/MvZVjmPqrFbjAut/prCyBZ+pA+O+C12rDkWZrwS3JXz1J42RC1kpclkdnkx2KDjRCNFLb21FlwGcNBZddw==
+ dependencies:
+ prop-types "^15.7.2"
+
react-onclickoutside@^6.12.0:
version "6.12.2"
resolved "https://registry.yarnpkg.com/react-onclickoutside/-/react-onclickoutside-6.12.2.tgz#8e6cf80c7d17a79f2c908399918158a7b02dda01"