import { Trans, useTranslation } from 'react-i18next' import { Card, ListGroup } from 'react-bootstrap-5' import { formatCurrency } from '@/shared/utils/currency' import { formatTime } from '@/features/utils/format-date' import { AddOnUpdate, SubscriptionChangePreview, } from '../../../../../../types/subscription/subscription-change-preview' import { MergeAndOverride } from '../../../../../../types/utils' type CostSummaryProps = { subscriptionChange: MergeAndOverride< SubscriptionChangePreview, { change: AddOnUpdate } > | null totalLicenses: number } function CostSummary({ subscriptionChange, totalLicenses }: CostSummaryProps) { const { t } = useTranslation() const factor = 100 return (
{t('cost_summary')}
{subscriptionChange ? ( , // eslint-disable-line react/jsx-key , // eslint-disable-line react/jsx-key ]} values={{ adding: subscriptionChange.change.addOn.quantity - subscriptionChange.change.addOn.prevQuantity, total: totalLicenses + subscriptionChange.change.addOn.quantity - subscriptionChange.change.addOn.prevQuantity, }} shouldUnescape tOptions={{ interpolation: { escapeValue: true } }} /> ) : ( t( 'enter_the_number_of_licenses_youd_like_to_add_to_see_the_cost_breakdown' ) )}
{subscriptionChange && ( <>
{subscriptionChange.nextInvoice.plan.name} x{' '} {subscriptionChange.change.addOn.quantity - subscriptionChange.change.addOn.prevQuantity}{' '} {t('licenses')} {formatCurrency( subscriptionChange.immediateCharge.subtotal, subscriptionChange.currency )} {subscriptionChange.immediateCharge.discount !== 0 && ( {t('discount')} ( {formatCurrency( subscriptionChange.immediateCharge.discount, subscriptionChange.currency )} ) )} {t('vat')} ·{' '} {Math.round( subscriptionChange.nextInvoice.tax.rate * 100 * factor ) / factor} % {formatCurrency( subscriptionChange.immediateCharge.tax, subscriptionChange.currency )} {t('total_due_today')} {formatCurrency( subscriptionChange.immediateCharge.total, subscriptionChange.currency )}
{t( 'we_will_charge_you_now_for_the_cost_of_your_additional_licenses_based_on_remaining_months' )}
{t( 'after_that_well_bill_you_x_total_y_subtotal_z_tax_annually_on_date_unless_you_cancel', { totalAmount: formatCurrency( subscriptionChange.nextInvoice.total, subscriptionChange.currency ), subtotalAmount: formatCurrency( subscriptionChange.nextInvoice.subtotal, subscriptionChange.currency ), taxAmount: formatCurrency( subscriptionChange.nextInvoice.tax.amount, subscriptionChange.currency ), date: formatTime( subscriptionChange.nextInvoice.date, 'MMMM D' ), } )} {subscriptionChange.immediateCharge.discount !== 0 && ` ${t('coupons_not_included')}.`}
)}
) } export default CostSummary