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. 29
      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 { AgGridReact } from 'ag-grid-react'
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 FileManager from '../../Utils/FileManager/FileManager'
import DTOAnticiposAutoriza from '../../../DTO/Corresponsales/DTOAnticiposAutoriza'
import CorresponsalesAnticiposServices from '../../../Services/Corresponsalias/Corresponsales.Anticipos.Services'
interface ItemList {
id: number
@ -40,8 +41,10 @@ interface ItemList {
interface IProps {
IDTrafico: number
FolioTrafico: string
closeCRUDItems: (arg: boolean) => void
canDelete: boolean
canUseActions: boolean
}
export const Anticipos: FC<IProps> = (props) => {
@ -73,7 +76,7 @@ export const Anticipos: FC<IProps> = (props) => {
const btnSaveRef = React.useRef<HTMLButtonElement>(null)
const [deleteFile, setDeleteFile] = useState(false)
const [columnDefs] = useState([
Depto === 'Corresponsalias'
props.canUseActions
? {
field: 'id',
headerName: 'Acciones',
@ -82,6 +85,7 @@ export const Anticipos: FC<IProps> = (props) => {
filter: true,
cellRenderer: (params: any) => {
return (
Depto === 'Corresponsalias' ?
<div>
<IconContext.Provider value={{ color: 'blue', size: '18px' }}>
<BsPencilFill
@ -114,6 +118,16 @@ export const Anticipos: FC<IProps> = (props) => {
/>
</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>
)
},
@ -374,6 +388,24 @@ export const Anticipos: FC<IProps> = (props) => {
const result = mCAnticipos.filter((row) => row.id > 0 && row.idTrafico === props.IDTrafico)
}, [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 (
<div>
<Container className='labelSize13px'>
@ -473,7 +505,7 @@ export const Anticipos: FC<IProps> = (props) => {
</Row>
<Row style={{ paddingBottom: 5 }}>
<Col xs={12}>
<div className='ag-theme-alpine' style={{ height: 500, width: '100%' }}>
<div className='ag-theme-alpine' style={{ height: 300, width: '100%' }}>
<AgGridReact
rowData={mCAnticipos.filter((p) => p.id !== 0)}
columnDefs={columnDefs}

@ -118,7 +118,6 @@ import CentrosCostosService from '../../Services/Catalogos/CentrosCostos.Service
import ClavesPedimentosService from '../../Services/Catalogos/ClavesPedimentos.Service'
import { ICatClavesPedimentos } from '../../Interfaces/Catalogos/ICatClavesPedimentos'
import FileManagerServices from '../../Services/Utils/FileManager.Services'
import { BiDownload } from 'react-icons/bi'
import CorresponsalesAnticiposServices from '../../Services/Corresponsalias/Corresponsales.Anticipos.Services'
interface IProps {
@ -1468,19 +1467,6 @@ export default function TraficoCorresponsales (props:IProps) {
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 (
<div style={{height:'100%', overflowY:'scroll'}}>
<Card className="labelSize13px" style={{borderStyle:'none', height:'100%'}}>
@ -2580,12 +2566,11 @@ export default function TraficoCorresponsales (props:IProps) {
</Form.Control>
</Col>
<Col sm={2}>
<Form.Label>
<div
<Form.Label
onClick={() => {
showModalBox(9)
}}
style={{ cursor: 'pointer', display:'inline-block' }}
style={{ cursor: 'pointer' }}
>
<IconContext.Provider
value={{ color: 'green', size: '15px' }}
@ -2593,12 +2578,6 @@ export default function TraficoCorresponsales (props:IProps) {
<HiCurrencyDollar />
</IconContext.Provider>
&nbsp;{LblAnticipos}
</div>&nbsp;
<IconContext.Provider
value={{ color: 'green', size: '15px' }}
>
<BiDownload onClick={() => downloadAnticipos()} style={{ cursor: 'pointer'}}/>
</IconContext.Provider>
</Form.Label>
</Col>
<Col xs={4}>
@ -4230,13 +4209,15 @@ export default function TraficoCorresponsales (props:IProps) {
</div>
) : null}
{LoadComponent === 9 ? (
<div style={{ height: '350px', overflow: 'scroll' }}>
<div style={{ height: '350px'}}>
<Anticipos
IDTrafico={IDTrafico}
FolioTrafico={FolioTrafico}
closeCRUDItems={function (arg: boolean): void {
setShowModal(arg)
}}
canDelete={Depto === 'Corresponsalias'}
canUseActions={Depto === 'Corresponsalias' || Depto === 'Contabilidad'}
/>
</div>
) : null}

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

Loading…
Cancel
Save