import React, { useState } from 'react'; import styles from './invoice.module.scss'; import { ReactComponent as ChevronBack } from 'ionicons/dist/svg/chevron-back.svg'; import { format } from 'date-fns'; import { IonButton, IonDatetime, IonInput } from '@ionic/react'; type OwnProps = { invoice: { id: string, date: string, status: string, dateOfPayment?: string, referenceNumber?: string, }, client: { name: string, logo: string, project: { name: string, contract: { name: string, amount: string, }, } } } export const InvoiceCard: React.FC = (props) => { const [showDetails, setShowDetails] = useState(false); const [formInputs, setFormInputs] = useState<{ dateOfPayment: string, referenceNumber: string, }>({ dateOfPayment: props.invoice.dateOfPayment ? props.invoice.dateOfPayment.toString() : '', referenceNumber: props.invoice.referenceNumber ? props.invoice.referenceNumber : '', }); let statusClass = ''; switch (props.invoice.status) { case 'due': statusClass = styles.due; break; case 'over due': statusClass = styles.overDue; break; case 'paid': statusClass = styles.paid; break; case 'cancelled': statusClass = styles.cancelled; break; default: break; } return
setShowDetails(true)}>
logo
Invoice ID: {props.invoice.id}

{props.client.project.contract.amount}

{props.client.project.contract.name}

{props.invoice.status}
{ showDetails &&
setShowDetails(false)} fill={'clear'} size={'small'}>

Pending Invoice

  • {props.invoice.id}

  • {format(new Date(props.invoice.date), 'dd MMMM yyyy')}

  • {props.client.name}

  • {props.client.project.name}

  • {props.client.project.contract.name}

  • {props.client.project.contract.amount}

setFormInputs({ dateOfPayment: e.detail.value? e.detail.value.toString() : '', referenceNumber: formInputs.referenceNumber, })}>
setFormInputs({ dateOfPayment: formInputs.dateOfPayment, referenceNumber: e.detail.value? e.detail.value.toString() : '', })}>
{(props.invoice.status !== 'cancelled' && props.invoice.status !== 'paid' || formInputs.dateOfPayment !== props.invoice.dateOfPayment || formInputs.dateOfPayment !== props.invoice.date) &&
Cancel Invoice setShowDetails(false)}> Paid
}
}
}