Se actualio el componente Estatus fatura para agregar Inicio y fin y boton exel

EfacturasUpdate
Luis Rendon 11 months ago
parent 0b097671b7
commit d986f06084
  1. 7
      src/Components/Clientes/Amazon/DTO/DTO2096InvoiceStatus.ts
  2. 306
      src/Components/Clientes/Amazon/Reportes/Estatus/RtpAmazonInvoiceStatus.tsx
  3. 4
      src/Components/Clientes/Amazon/Services/Amazon.Services.ts

@ -1,3 +1,5 @@
import { number } from "yup"
export default interface DTO2096InvoiceStatus { export default interface DTO2096InvoiceStatus {
id: number id: number
referencia: string referencia: string
@ -26,4 +28,9 @@ export default interface DTO2096InvoiceStatus {
idArchivoACK: number, idArchivoACK: number,
archivoACK: string, archivoACK: string,
fhArchivoACK: string fhArchivoACK: string
clasificador: string
fechaRecepcion: string
cantidadASIN: number
} }

@ -10,6 +10,7 @@ import {
Card, Card,
Col, Col,
Form, Form,
FormControl,
Modal, Modal,
Row, Row,
Table Table
@ -24,11 +25,12 @@ import { MFileManager } from '../../../../Utils/MFileManager/MFileManager'
import DTO2096RptPayedOperations from '../../DTO/DTO2096RptPayedOperations' import DTO2096RptPayedOperations from '../../DTO/DTO2096RptPayedOperations'
import DTO2096InvoiceStatus from '../../DTO/DTO2096InvoiceStatus' import DTO2096InvoiceStatus from '../../DTO/DTO2096InvoiceStatus'
import IFileManager from '../../../../../Interfaces/Utils/IFileManager' import IFileManager from '../../../../../Interfaces/Utils/IFileManager'
import * as XLSX from 'xlsx'
export interface IRptAmazonInvoiceStatusProps {}
export interface IRptAmazonInvoiceStatusProps { export default function RptAmazonInvoiceStatus(
} props: IRptAmazonInvoiceStatusProps
) {
export default function RptAmazonInvoiceStatus (props: IRptAmazonInvoiceStatusProps) {
const dispatch = useDispatch() const dispatch = useDispatch()
const mInvoices = useSelector( const mInvoices = useSelector(
(state: RootState) => state.AmazonInvoices.Invoice (state: RootState) => state.AmazonInvoices.Invoice
@ -58,22 +60,55 @@ export default function RptAmazonInvoiceStatus (props: IRptAmazonInvoiceStatusPr
return yyyy + '-' + mm + '-' + dd return yyyy + '-' + mm + '-' + dd
} }
// const loadReport = () => {
// // if (Factura.length == 0) {
// // setHeader('Error')
// // setMsg('Para continuar, proporcione la factura a buscar')
// // setShowMsg(true)
// // return
// // }
// DSAmazon.AmazonInvoiceStatusGET(Factura, Inicio, Fin)
// .then((response) => {
// setData(response.data)
// })
// .catch((e: Error) => {
// alert('Ocurrio un error' + e.message.toString())
// })
// }
const loadReport = () => { const loadReport = () => {
if (Factura.length==0) { // Inicializa Inicio y Fin como cadenas vacías por defecto.
setHeader('Error') let InicioValue = ''
setMsg('Para continuar, proporcione la factura a buscar') let FinValue = ''
setShowMsg(true)
return // Verifica si se proporcionaron valores para Inicio y Fin.
if (Factura) {
// Si se proporciona la factura, Inicio y Fin se establecen como vacíos.
InicioValue = ''
FinValue = ''
// Limpia el campo de factura.
setFactura('')
} else {
// Si no se proporciona la factura, se mantienen los valores actuales de Inicio y Fin.
InicioValue = Inicio
FinValue = Fin
} }
DSAmazon.AmazonInvoiceStatusGET(Factura)
// Realiza la solicitud con los valores actualizados de Inicio y Fin.
DSAmazon.AmazonInvoiceStatusGET(Factura, InicioValue, FinValue)
.then((response) => { .then((response) => {
setData(response.data) setData(response.data)
}) })
.catch((e: Error) => { .catch((e: Error) => {
alert('Ocurrio un error' + e.message.toString()) alert('Ocurrió un error: ' + e.message.toString())
}) })
} }
const handleFacturaChange = (event: React.ChangeEvent<HTMLInputElement>) => {
setFactura(event.target.value)
}
const downloadPDF = (id: number, InvoiceNumber: string) => { const downloadPDF = (id: number, InvoiceNumber: string) => {
setWaitingDialog(true) setWaitingDialog(true)
setWaitingMessage(' archivo PDF ') setWaitingMessage(' archivo PDF ')
@ -186,6 +221,156 @@ export default function RptAmazonInvoiceStatus (props: IRptAmazonInvoiceStatusPr
}) })
} }
const downloadExcel = () => {
exportExcel(Data, 'Reporte de EstatusFacturas')
}
function exportExcel(
jsonData: DTO2096InvoiceStatus[],
fileName: string
): void {
let Heading = [
[
'Id',
'Referencia',
'ComercialInvoiceDate',
'InvoiceNumber',
'Incoterms',
'HAWB',
'QtyUnitoOfMeasure',
'totQty',
'weightUnitOfMeasure',
'TotWeight',
'TotChargeorAllowance',
'TotCurrencyIsoCode',
'TotMonetaryAmout',
'FechaPago',
'Patente',
'Aduana',
'Pedimentos',
'Estatus',
'ACK',
'Clasificador',
'FechaRecepcion',
'CantidadASIN'
]
]
const dataOnly = jsonData.map(
({
id,
referencia,
commercialInvoiceDate,
invoiceNumber,
incoterms,
hawb,
totalInvoiceQuantityUnitOfMeasure,
totalInvoiceQuantity,
totalInvoiceWeightUnitOfMeasure,
totalInvoiceWeight,
totalInvoiceValueChargeOrAllowance,
totalInvoiceValueCurrencyISOCode,
totalInvoiceValueMonetaryAmount,
fPago,
patente,
aduana,
pedimento,
estatus,
archivoACK,
clasificador,
fechaRecepcion,
cantidadASIN
}) => {
return {
id,
referencia,
commercialInvoiceDate,
invoiceNumber,
incoterms,
hawb,
totalInvoiceQuantityUnitOfMeasure,
totalInvoiceQuantity,
totalInvoiceWeightUnitOfMeasure,
totalInvoiceWeight,
totalInvoiceValueChargeOrAllowance,
totalInvoiceValueCurrencyISOCode,
totalInvoiceValueMonetaryAmount,
fPago,
patente,
aduana,
pedimento,
estatus,
archivoACK,
clasificador,
fechaRecepcion,
cantidadASIN
}
}
)
const Report = dataOnly.map(
({
id,
referencia,
commercialInvoiceDate,
invoiceNumber,
incoterms,
hawb,
totalInvoiceQuantityUnitOfMeasure,
totalInvoiceQuantity,
totalInvoiceWeightUnitOfMeasure,
totalInvoiceWeight,
totalInvoiceValueChargeOrAllowance,
totalInvoiceValueCurrencyISOCode,
totalInvoiceValueMonetaryAmount,
fPago,
patente,
aduana,
pedimento,
estatus,
archivoACK,
clasificador,
fechaRecepcion,
cantidadASIN
}) => {
return {
id,
referencia,
commercialInvoiceDate,
invoiceNumber,
incoterms,
hawb,
totalInvoiceQuantityUnitOfMeasure,
totalInvoiceQuantity,
totalInvoiceWeightUnitOfMeasure,
totalInvoiceWeight,
totalInvoiceValueChargeOrAllowance,
totalInvoiceValueCurrencyISOCode,
totalInvoiceValueMonetaryAmount,
fPago,
patente,
aduana,
pedimento,
estatus,
archivoACK,
clasificador,
fechaRecepcion,
cantidadASIN
}
}
)
const wb = XLSX.utils.book_new()
const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet([])
XLSX.utils.sheet_add_aoa(ws, Heading)
XLSX.utils.sheet_add_json(ws, Report, { origin: 'A2', skipHeader: true })
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1')
XLSX.writeFile(wb, fileName + '.xlsx')
var range = XLSX.utils.decode_range(ws['!ref?'])
for (var C = range.s.c + 1; C <= range.e.c + 1; ++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()
}
}
const getOnlyDate = (dt: string) => { const getOnlyDate = (dt: string) => {
return dt ? dt.substring(0, 16) : '' return dt ? dt.substring(0, 16) : ''
} }
@ -195,7 +380,7 @@ export default function RptAmazonInvoiceStatus (props: IRptAmazonInvoiceStatusPr
<Card> <Card>
<Card.Body> <Card.Body>
<Row> <Row>
<Col xs={5}> <Col xs={2}>
<Card.Title> <Card.Title>
<IconContext.Provider value={{ color: '#F6C34F', size: '8%' }}> <IconContext.Provider value={{ color: '#F6C34F', size: '8%' }}>
<FaAmazon /> <FaAmazon />
@ -203,20 +388,67 @@ export default function RptAmazonInvoiceStatus (props: IRptAmazonInvoiceStatusPr
Operaciones Pagadas Operaciones Pagadas
</Card.Title> </Card.Title>
</Col> </Col>
<Col></Col> <Col style={{ textAlign: 'right' }}>Inicio</Col>
<Col xs={0}>
<Form.Control
defaultValue={Inicio}
type="date"
name="Inicio"
placeholder="Inicio"
title="Inicio"
alt="Inicio"
data-date-form="YYYY-mm-dd"
onChange={(e) => setInicio(e.target.value)}
size="sm"
/>
</Col>
<Col style={{ textAlign: 'right' }}>Fin</Col>
<Col xs={0}>
<Form.Control
defaultValue={Fin}
type="date"
name="Fin"
placeholder="Fin"
title="Fin"
alt="Fin"
data-date-form="YYYY-mm-dd"
onChange={(e) => setFin(e.target.value)}
size="sm"
/>
</Col>
<Col style={{ textAlign: 'right' }}>Factura</Col> <Col style={{ textAlign: 'right' }}>Factura</Col>
<Col xs={3}> <Col xs={3}>
<Form.Control <Form.Control
defaultValue={Factura} style={{ height: '20px' }}
// defaultValue={Factura}
value={Factura}
name="Factura" name="Factura"
placeholder="Factura" placeholder="Factura"
title="Factura" title="Factura"
alt="Factura" alt="Factura"
onChange={(e) => setFactura(e.target.value)} // onChange={(e) => setFactura(e.target.value)}
onChange={handleFacturaChange}
size="sm" size="sm"
/> />
</Col> </Col>
<Col style={{textAlign:'right'}} onClick={()=>{loadReport()}}><Button variant="primary">Buscar</Button></Col> <Col
style={{ textAlign: 'center' }}
onClick={() => {
loadReport()
}}
>
<Button variant="primary">Buscar</Button>
</Col>
<Col>
<Button
variant="success"
onClick={() => {
downloadExcel()
}}
>
Excel
</Button>
</Col>
</Row> </Row>
</Card.Body> </Card.Body>
</Card> </Card>
@ -250,7 +482,10 @@ export default function RptAmazonInvoiceStatus (props: IRptAmazonInvoiceStatusPr
<th>Aduana</th> <th>Aduana</th>
<th>Pedimento</th> <th>Pedimento</th>
<th>Estatus</th> <th>Estatus</th>
<th style={{ width: '150px' }}>ACK</th> <th style={{ width: '100px' }}>ACK</th>
<th style={{ width: '50px' }}>Clasificador</th>
<th style={{ width: '50px' }}>FechaRecepcion</th>
<th style={{ width: '50px' }}>CantidadASIN</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -278,7 +513,13 @@ export default function RptAmazonInvoiceStatus (props: IRptAmazonInvoiceStatusPr
MasterData.invoiceNumber MasterData.invoiceNumber
) )
}} }}
style={{visibility: (MasterData.estatus.includes('Clasificacion')) ? 'hidden':'visible'}} style={{
visibility: MasterData.estatus.includes(
'Clasificacion'
)
? 'hidden'
: 'visible'
}}
> >
<IconContext.Provider <IconContext.Provider
value={{ color: 'red', size: '20px' }} value={{ color: 'red', size: '20px' }}
@ -367,7 +608,13 @@ export default function RptAmazonInvoiceStatus (props: IRptAmazonInvoiceStatusPr
MasterData.invoiceNumber MasterData.invoiceNumber
) )
}} }}
style={{visibility: (MasterData.estatus.includes('Clasificacion')) ? 'hidden':'visible'}} style={{
visibility: MasterData.estatus.includes(
'Clasificacion'
)
? 'hidden'
: 'visible'
}}
> >
<IconContext.Provider <IconContext.Provider
value={{ color: 'blue', size: '20px' }} value={{ color: 'blue', size: '20px' }}
@ -430,11 +677,23 @@ export default function RptAmazonInvoiceStatus (props: IRptAmazonInvoiceStatusPr
<td <td
style={{ textAlign: 'center', width: '100px' }} style={{ textAlign: 'center', width: '100px' }}
onClick={() => { onClick={() => {
downloadACKFile(MasterData.idArchivoACK, MasterData.archivoACK) downloadACKFile(
MasterData.idArchivoACK,
MasterData.archivoACK
)
}} }}
> >
{getOnlyDate(MasterData.fhArchivoACK)} {getOnlyDate(MasterData.fhArchivoACK)}
</td> </td>
<td style={{ textAlign: 'center', width: '200px' }}>
{MasterData.clasificador}
</td>
<td style={{ textAlign: 'center', width: '200px' }}>
{MasterData.fechaRecepcion}
</td>
<td style={{ textAlign: 'center', width: '200px' }}>
{MasterData.cantidadASIN}
</td>
</tr> </tr>
</> </>
) )
@ -485,8 +744,9 @@ export default function RptAmazonInvoiceStatus (props: IRptAmazonInvoiceStatusPr
Proceso={IDProcess} Proceso={IDProcess}
showPreview={3} showPreview={3}
canEdit={false} canEdit={false}
Leyenda="Lista de archivos de respuesta de Amazon" onAppendMFM={function (Files: IFileManager[]): void { Leyenda="Lista de archivos de respuesta de Amazon"
} } /> onAppendMFM={function (Files: IFileManager[]): void {}}
/>
</Col> </Col>
<Col></Col> <Col></Col>
</Row> </Row>
@ -504,5 +764,5 @@ export default function RptAmazonInvoiceStatus (props: IRptAmazonInvoiceStatusPr
}} }}
/> />
</div> </div>
); )
} }

@ -85,8 +85,8 @@ class AmazonDataService {
AmazonFacturasPagadasGET(Inicio: string, Fin: string) { AmazonFacturasPagadasGET(Inicio: string, Fin: string) {
return http.get<DTO2096RptFacturasPagadas[]>(`/AmazonInvoice/AmazonFacturasPagadasGET?Inicio=${Inicio}&Fin=${Fin}`) return http.get<DTO2096RptFacturasPagadas[]>(`/AmazonInvoice/AmazonFacturasPagadasGET?Inicio=${Inicio}&Fin=${Fin}`)
} }
AmazonInvoiceStatusGET(Invoice: string) { AmazonInvoiceStatusGET(Invoice: string , Inicio: string, Fin: string) {
return http.get<DTO2096InvoiceStatus[]>(`/AmazonInvoice/AmazonInvoiceStatusGET?Invoice=${Invoice}`) return http.get<DTO2096InvoiceStatus[]>(`/AmazonInvoice/AmazonInvoiceStatusGET?Invoice=${Invoice}&Inicio=${Inicio}&Fin=${Fin}`)
} }
AmazonInvoicePrioritySET(Id: number, Prioridad: boolean) { AmazonInvoicePrioritySET(Id: number, Prioridad: boolean) {
return http.get<I2096Headers[]>(`/AmazonInvoice/AmazonInvoicePrioritySET?id=${Id}&prioridad=${Prioridad}`) return http.get<I2096Headers[]>(`/AmazonInvoice/AmazonInvoicePrioritySET?id=${Id}&prioridad=${Prioridad}`)

Loading…
Cancel
Save