|
|
|
@ -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> </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() |
|
|
|
|
}} |
|
|
|
|
> |
|
|
|
|
Guardar |
|
|
|
|
</Button> |
|
|
|
|
</Col> |
|
|
|
|
<Col> </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> </Col> |
|
|
|
@ -536,17 +369,17 @@ export default function RptConsultaTraficoDetalle (props: IRptConsultaTraficoDet |
|
|
|
|
setShowModal(false) |
|
|
|
|
}} |
|
|
|
|
> |
|
|
|
|
No |
|
|
|
|
Cancelar |
|
|
|
|
</Button> |
|
|
|
|
</Col> |
|
|
|
|
<Col xs={6} style={{ textAlign: 'center' }}> |
|
|
|
|
<Button |
|
|
|
|
variant="danger" |
|
|
|
|
onClick={() => { |
|
|
|
|
ToggleSightLine(props.detail.id) |
|
|
|
|
saveData() |
|
|
|
|
}} |
|
|
|
|
> |
|
|
|
|
Si |
|
|
|
|
Guardar |
|
|
|
|
</Button> |
|
|
|
|
</Col> |
|
|
|
|
</Row> |
|
|
|
|