#[cfg(feature = "serde")]
use serde::Serialize;
use super::{Amount, BillProduct, Money};
#[derive(Debug)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub struct BillItem<P> {
pub amount: Amount,
pub product: P,
}
impl<P: BillProduct> BillItem<P> {
pub fn gross(&self) -> Money {
self.product.price() * self.amount
}
pub fn tax(&self) -> Money {
self.product.price() * **self.product.tax() * self.amount
}
pub fn net(&self) -> Money {
self.gross() + self.tax()
}
}