use pricing_kit::{Currency, CurrencyConverter, PricingDetail, MarkupType, dec, PriceAdjustment, ToPrimitive};
fn main(){
let usd = Currency::new("USD", "American Dollar");
let idr = Currency::new("IDR", "Indonesian Rupiah");
let mut converter = CurrencyConverter::new();
converter.add_exchange_rate(&usd, dec!(1.0));
converter.add_exchange_rate(&idr, dec!(16500.0));
let mut pricing = PricingDetail::new(dec!(100.0), usd.clone(), idr.clone());
pricing.markup = Some(MarkupType::Percentage(dec!(20.0)));
pricing.apply_markup(&converter).expect("Failed to apply markup");
let adjustments = vec![
PriceAdjustment::Tax {
name: "Tax 11%".into(),
percentage: dec!(11.0),
},
PriceAdjustment::Discount {
name: "Discount".into(),
percentage: dec!(5.0),
},
PriceAdjustment::Fixed {
name: "Promo New Year".to_string(),
amount: dec!(10.0),
currency: pricing.sell_currency.clone(),
}
];
pricing.apply_adjustments(&adjustments, &converter).expect("Failed to apply adjustments");
println!("Adjustment Pricing:\n{:#?}", pricing);
if let Some(total_f64) = pricing.sell_price.to_f64() {
println!("Total sell price as f64: {}", total_f64);
}
}