fin del proceso para crear pdf de los anticipos

feature/ConsolidarPedimentos_20231229
Felix Morales 11 months ago
parent fe13fa68ae
commit 8381f0a16d
  1. 38
      src/Components/Corresponsales/Anticipos/Anticipos.tsx
  2. 41
      src/Components/Corresponsales/TraficoCorresponsales.tsx
  3. 4
      src/Services/Corresponsalias/Corresponsales.Anticipos.Services.ts

@ -28,10 +28,11 @@ import { useDispatch, useSelector } from 'react-redux'
import { RootState } from '../../../store/store' import { RootState } from '../../../store/store'
import { AgGridReact } from 'ag-grid-react' import { AgGridReact } from 'ag-grid-react'
import { RowClickedEvent } from 'ag-grid-community' import { RowClickedEvent } from 'ag-grid-community'
import { BiCoinStack } from 'react-icons/bi' import { BiCoinStack, BiDownload } from 'react-icons/bi'
import CurrencyFormat from 'react-currency-format' import CurrencyFormat from 'react-currency-format'
import FileManager from '../../Utils/FileManager/FileManager' import FileManager from '../../Utils/FileManager/FileManager'
import DTOAnticiposAutoriza from '../../../DTO/Corresponsales/DTOAnticiposAutoriza' import DTOAnticiposAutoriza from '../../../DTO/Corresponsales/DTOAnticiposAutoriza'
import CorresponsalesAnticiposServices from '../../../Services/Corresponsalias/Corresponsales.Anticipos.Services'
interface ItemList { interface ItemList {
id: number id: number
@ -40,8 +41,10 @@ interface ItemList {
interface IProps { interface IProps {
IDTrafico: number IDTrafico: number
FolioTrafico: string
closeCRUDItems: (arg: boolean) => void closeCRUDItems: (arg: boolean) => void
canDelete: boolean canDelete: boolean
canUseActions: boolean
} }
export const Anticipos: FC<IProps> = (props) => { export const Anticipos: FC<IProps> = (props) => {
@ -73,7 +76,7 @@ export const Anticipos: FC<IProps> = (props) => {
const btnSaveRef = React.useRef<HTMLButtonElement>(null) const btnSaveRef = React.useRef<HTMLButtonElement>(null)
const [deleteFile, setDeleteFile] = useState(false) const [deleteFile, setDeleteFile] = useState(false)
const [columnDefs] = useState([ const [columnDefs] = useState([
Depto === 'Corresponsalias' props.canUseActions
? { ? {
field: 'id', field: 'id',
headerName: 'Acciones', headerName: 'Acciones',
@ -82,6 +85,7 @@ export const Anticipos: FC<IProps> = (props) => {
filter: true, filter: true,
cellRenderer: (params: any) => { cellRenderer: (params: any) => {
return ( return (
Depto === 'Corresponsalias' ?
<div> <div>
<IconContext.Provider value={{ color: 'blue', size: '18px' }}> <IconContext.Provider value={{ color: 'blue', size: '18px' }}>
<BsPencilFill <BsPencilFill
@ -114,6 +118,16 @@ export const Anticipos: FC<IProps> = (props) => {
/> />
</IconContext.Provider> : "" </IconContext.Provider> : ""
} }
</div> :
<div>
<IconContext.Provider value={{ color: 'blue', size: '18px' }}>
<BiDownload
onClick={() => {
downloadAnticipo(params.data.id, params.data.concepto)
}}
style={{ cursor: 'pointer' }}
/>
</IconContext.Provider>
</div> </div>
) )
}, },
@ -374,6 +388,24 @@ export const Anticipos: FC<IProps> = (props) => {
const result = mCAnticipos.filter((row) => row.id > 0 && row.idTrafico === props.IDTrafico) const result = mCAnticipos.filter((row) => row.id > 0 && row.idTrafico === props.IDTrafico)
}, [mCAnticipos]) }, [mCAnticipos])
const downloadAnticipo = (idAnticipo: number, concepto: string) => {
CorresponsalesAnticiposServices.DownloadAnticipo(props.IDTrafico, idAnticipo)
.then((response) => {
const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', `Anticipo_${concepto}_${props.FolioTrafico}.pdf`);
document.body.appendChild(link);
link.click();
})
.catch((error) => {
setHeader('Error')
setMsg('Ocurrio un error al generar el archivo. Por favor, intentelo de nuevo.')
setShowMsg(true)
return
})
}
return ( return (
<div> <div>
<Container className='labelSize13px'> <Container className='labelSize13px'>
@ -473,7 +505,7 @@ export const Anticipos: FC<IProps> = (props) => {
</Row> </Row>
<Row style={{ paddingBottom: 5 }}> <Row style={{ paddingBottom: 5 }}>
<Col xs={12}> <Col xs={12}>
<div className='ag-theme-alpine' style={{ height: 500, width: '100%' }}> <div className='ag-theme-alpine' style={{ height: 300, width: '100%' }}>
<AgGridReact <AgGridReact
rowData={mCAnticipos.filter((p) => p.id !== 0)} rowData={mCAnticipos.filter((p) => p.id !== 0)}
columnDefs={columnDefs} columnDefs={columnDefs}

@ -118,7 +118,6 @@ import CentrosCostosService from '../../Services/Catalogos/CentrosCostos.Service
import ClavesPedimentosService from '../../Services/Catalogos/ClavesPedimentos.Service' import ClavesPedimentosService from '../../Services/Catalogos/ClavesPedimentos.Service'
import { ICatClavesPedimentos } from '../../Interfaces/Catalogos/ICatClavesPedimentos' import { ICatClavesPedimentos } from '../../Interfaces/Catalogos/ICatClavesPedimentos'
import FileManagerServices from '../../Services/Utils/FileManager.Services' import FileManagerServices from '../../Services/Utils/FileManager.Services'
import { BiDownload } from 'react-icons/bi'
import CorresponsalesAnticiposServices from '../../Services/Corresponsalias/Corresponsales.Anticipos.Services' import CorresponsalesAnticiposServices from '../../Services/Corresponsalias/Corresponsales.Anticipos.Services'
interface IProps { interface IProps {
@ -1468,19 +1467,6 @@ export default function TraficoCorresponsales (props:IProps) {
link.click(); link.click();
} }
const downloadAnticipos = () => {
CorresponsalesAnticiposServices.DownloadAnticipos(IDTrafico)
.then((response) => {
downloadFile(response.data, `Anticipos_${FolioTrafico}.pdf`)
})
.catch((error) => {
setHeader('Error')
setMsg('Ocurrio un error al generar el archivo. Por favor, intentelo de nuevo.')
setShowMsg(true)
return
})
}
return ( return (
<div style={{height:'100%', overflowY:'scroll'}}> <div style={{height:'100%', overflowY:'scroll'}}>
<Card className="labelSize13px" style={{borderStyle:'none', height:'100%'}}> <Card className="labelSize13px" style={{borderStyle:'none', height:'100%'}}>
@ -2580,25 +2566,18 @@ export default function TraficoCorresponsales (props:IProps) {
</Form.Control> </Form.Control>
</Col> </Col>
<Col sm={2}> <Col sm={2}>
<Form.Label> <Form.Label
<div onClick={() => {
onClick={() => { showModalBox(9)
showModalBox(9) }}
}} style={{ cursor: 'pointer' }}
style={{ cursor: 'pointer', display:'inline-block' }} >
>
<IconContext.Provider
value={{ color: 'green', size: '15px' }}
>
<HiCurrencyDollar />
</IconContext.Provider>
&nbsp;{LblAnticipos}
</div>&nbsp;
<IconContext.Provider <IconContext.Provider
value={{ color: 'green', size: '15px' }} value={{ color: 'green', size: '15px' }}
> >
<BiDownload onClick={() => downloadAnticipos()} style={{ cursor: 'pointer'}}/> <HiCurrencyDollar />
</IconContext.Provider> </IconContext.Provider>
&nbsp;{LblAnticipos}
</Form.Label> </Form.Label>
</Col> </Col>
<Col xs={4}> <Col xs={4}>
@ -4230,13 +4209,15 @@ export default function TraficoCorresponsales (props:IProps) {
</div> </div>
) : null} ) : null}
{LoadComponent === 9 ? ( {LoadComponent === 9 ? (
<div style={{ height: '350px', overflow: 'scroll' }}> <div style={{ height: '350px'}}>
<Anticipos <Anticipos
IDTrafico={IDTrafico} IDTrafico={IDTrafico}
FolioTrafico={FolioTrafico}
closeCRUDItems={function (arg: boolean): void { closeCRUDItems={function (arg: boolean): void {
setShowModal(arg) setShowModal(arg)
}} }}
canDelete={Depto === 'Corresponsalias'} canDelete={Depto === 'Corresponsalias'}
canUseActions={Depto === 'Corresponsalias' || Depto === 'Contabilidad'}
/> />
</div> </div>
) : null} ) : null}

@ -16,8 +16,8 @@ class CorresponsalesDataService {
Autoriza(data: DTOAnticiposAutoriza) { Autoriza(data: DTOAnticiposAutoriza) {
return http.post<ICorresponsalAnticipos>("/Corresponsalias/Anticipos/Autoriza", data); return http.post<ICorresponsalAnticipos>("/Corresponsalias/Anticipos/Autoriza", data);
} }
DownloadAnticipos(IdTrafico: number){ DownloadAnticipo(IdTrafico: number, idAnticipo: number){
return http.get(`/Corresponsalias/Anticipos/Download?idTrafico=${IdTrafico}`, {responseType: 'blob'}) return http.get(`/Corresponsalias/Anticipos/Download?idTrafico=${IdTrafico}&idAnticipo=${idAnticipo}`, {responseType: 'blob'})
} }
} }

Loading…
Cancel
Save