From e1596288e9fb4fb8da93aee16d6ac2fe8358373a Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 6 Jan 2023 17:04:56 -0600 Subject: [PATCH] Se le agregan las columnas requerimiento normativo y comentarios al detalle de la factura --- .../ComboSelect/ComboDescripcion.tsx | 112 +++++++- .../Components/ComboSelect/ComboFraccion.tsx | 120 +++++---- .../Amazon/DTO/DTO2096ItemAutoriza.ts | 4 +- .../Clientes/Amazon/Interfaces/I2096Detail.ts | 3 + .../Reportes/RptAmazonPendingInvoices.tsx | 18 ++ .../RptAmazonPendingInvoicesDetail.tsx | 255 ++++++++++++------ 6 files changed, 374 insertions(+), 138 deletions(-) diff --git a/src/Components/Clientes/Amazon/Components/ComboSelect/ComboDescripcion.tsx b/src/Components/Clientes/Amazon/Components/ComboSelect/ComboDescripcion.tsx index f602f70..1e9c01d 100644 --- a/src/Components/Clientes/Amazon/Components/ComboSelect/ComboDescripcion.tsx +++ b/src/Components/Clientes/Amazon/Components/ComboSelect/ComboDescripcion.tsx @@ -1,21 +1,35 @@ -import { useState } from 'react' +import { useEffect, useState } from 'react' import { Button, Col, Form, Modal, Row } from 'react-bootstrap' -import * as CurrencyFormat from 'react-currency-format' import { MsgInformativo } from '../../../../Utils/Toast/msgInformativo' import DTO2096Descripcion from '../../DTO/DTO2096Descripcion' -import DTO2096Fraccion from '../../DTO/DTO2096Fraccion' +import { RootState } from '../../../../../store/store' +import { + populateInvoices, + addInvoice, + updateInvoice, + deleteInvoice +} from '../../../../../store/features/Clientes/2096/AmazonInvoices' +// Redux +import { useDispatch, useSelector } from 'react-redux' import DSAmazon from '../../Services/Amazon.Services' +import I2096Headers from '../../Interfaces/I2096Header' +import I2096Detail from '../../Interfaces/I2096Detail' export interface IComboDescripcionProps { + IDInvoice: number IDDetail: number DescripcionOriginal: string Habilitado: boolean } export function ComboDescripcion(props: IComboDescripcionProps) { + const dispatch = useDispatch() + const mInvoices = useSelector( + (state: RootState) => state.AmazonInvoices.Invoice + ) const [Validacion, setValidacion] = useState(0) const [showModal, setShowModal] = useState(false) - const [Descripcion, setDescripcion] = useState('') + const [Descripcion, setDescripcion] = useState(props.DescripcionOriginal) const [header, setHeader] = useState('') const [show, setShowMsg] = useState(false) const [msg, setMsg] = useState('') @@ -23,16 +37,19 @@ export function ComboDescripcion(props: IComboDescripcionProps) { const changeValidacion = (e: number) => { setValidacion(e) - if (e === 2) { + /* if (e === 2) { + setDescripcion('') setShowModal(true) - } - if (e === 1) { + } else if (e === 1) { + setDescripcion(props.DescripcionOriginal) const data: DTO2096Descripcion = { id: props.IDDetail, - descripcion: props.DescripcionOriginal + descripcion: Descripcion } + setDescripcion(props.DescripcionOriginal) DSAmazon.SetDescripcion(data) .then((response) => { + UpdateInfo() setShowModal(false) setHeader('Confirmacion') setMsg('La descripcion se ha guardado correctamente') @@ -42,7 +59,7 @@ export function ComboDescripcion(props: IComboDescripcionProps) { .catch((e: Error) => { alert('Ocurrio un error' + e.message.toString()) }) - } + } */ } const saveDescripcion = () => { @@ -52,6 +69,7 @@ export function ComboDescripcion(props: IComboDescripcionProps) { } DSAmazon.SetDescripcion(data) .then((response) => { + UpdateInfo() setShowModal(false) setHeader('Confirmacion') setMsg('La descripcion se ha guardado correctamente') @@ -63,6 +81,82 @@ export function ComboDescripcion(props: IComboDescripcionProps) { }) } + const refreshStore = (Invoice: I2096Headers, Detail: I2096Detail[]) => { + const updatedInvoice: I2096Headers = { + id: props.IDInvoice, + commercialInvoiceDate: Invoice.commercialInvoiceDate, + invoiceNumber: Invoice.invoiceNumber, + 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, + estatus: Invoice.estatus, + max: true, + detail: Detail + } + dispatch(updateInvoice(updatedInvoice)) + } + + const UpdateInfo = () => { + const Invoice = mInvoices + .filter((el) => el.id === props.IDInvoice) + .map((el) => { + return el + }) + const newDetail = Invoice[0].detail.map((el) => { + if (el.id === props.IDDetail) { + return { + ...el, + descripcionGEMCO: Descripcion + } + } + return el + }) + refreshStore(Invoice[0], newDetail) + } + + useEffect(() => { + if (Validacion === 2) { + setDescripcion('') + setShowModal(true) + } else if (Validacion === 1) { + setDescripcion(props.DescripcionOriginal) + const data: DTO2096Descripcion = { + id: props.IDDetail, + descripcion: Descripcion + } + setDescripcion(props.DescripcionOriginal) + DSAmazon.SetDescripcion(data) + .then((response) => { + UpdateInfo() + setShowModal(false) + setHeader('Confirmacion') + setMsg('La descripcion se ha guardado correctamente') + setShowMsg(true) + return + }) + .catch((e: Error) => { + alert('Ocurrio un error' + e.message.toString()) + }) + } + }, [Validacion]) + return (
void = useState({})[1].bind(null, {}) // see NOTE below + + const refreshStore = (Invoice: I2096Headers, Detail: I2096Detail[]) => { + const updatedInvoice: I2096Headers = { + id: props.IDInvoice, + commercialInvoiceDate: Invoice.commercialInvoiceDate, + invoiceNumber: Invoice.invoiceNumber, + 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, + estatus: Invoice.estatus, + max: true, + detail: Detail + } + dispatch(updateInvoice(updatedInvoice)) + } - const forceUpdate: () => void = useState({})[1].bind(null, {}) // see NOTE below + const UpdateInfo = () => { + const Invoice = mInvoices + .filter((el) => el.id === props.IDInvoice) + .map((el) => { + return el + }) + const newDetail = Invoice[0].detail.map((el) => { + if (el.id === props.IDDetail) { + return { + ...el, + fraccionGEMCO: Fraccion + } + } + return el + }) + refreshStore(Invoice[0], newDetail) + } const changeValidacion = (e: number) => { setValidacion(e) - if (e === 2) { + } + + useEffect(() => { + if (Validacion === 2) { setShowModal(true) - } - if (e === 1) { + } else if (Validacion === 1) { const data: DTO2096Fraccion = { id: props.IDDetail, - fraccion: props.FraccionOriginal + fraccion: Fraccion } DSAmazon.SetFraccion(data) .then((response) => { - - /* - 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)) - - + UpdateInfo() setShowModal(false) setHeader('Confirmacion') setMsg('La descripcion se ha guardado correctamente') setShowMsg(true) - forceUpdate() + //forceUpdate() return }) .catch((e: Error) => { alert('Ocurrio un error' + e.message.toString()) }) } - } - - + }, [Validacion]) const saveFraccion = () => { DSAmazon.GetValidaFraccion(Fraccion) @@ -114,6 +129,7 @@ console.log(newObj) */ } DSAmazon.SetFraccion(data) .then((response) => { + UpdateInfo() setShowModal(false) setHeader('Confirmacion') setMsg('La descripcion se ha guardado correctamente') @@ -138,7 +154,7 @@ console.log(newObj) */ return (
changeValidacion(parseInt(e.target.value))} @@ -159,9 +175,9 @@ console.log(newObj) */ - Proporcione la facccion GEMCO {props.IDInvoice} + Proporcione la facccion GEMCO - { const { value } = values setFraccion(value) @@ -179,7 +195,7 @@ console.log(newObj) */ borderRadius: '10px' }} /> -{/* ; */} + {/* ; */} + )} + + {Comentarios}} + > + {({ ref, ...triggerHandler }) => ( + + )} + + { @@ -371,7 +442,7 @@ export default function RtpAmazonPendingInvoivesDetail( dialogClassName={'modal-50w'} > -
+
@@ -381,7 +452,39 @@ export default function RtpAmazonPendingInvoivesDetail( - + + Reparto normativo + + {' '} + setRequerimientoNormativo(e.target.value)} + /> + +   + + + Comentarios + + {' '} + setRequerimientoNormativo(e.target.value)} + /> + +   + +