import "package:flutter/material.dart"; import "package:inventree/inventree/part.dart"; import "package:inventree/l10.dart"; import "package:inventree/widget/refreshable_state.dart"; import "package:inventree/helpers.dart"; class PartPricingWidget extends StatefulWidget { const PartPricingWidget({Key? key, required this.part, required this.partPricing}) : super(key: key); final InvenTreePart part; final InvenTreePartPricing? partPricing; @override _PartPricingWidgetState createState() => _PartPricingWidgetState(); } class _PartPricingWidgetState extends RefreshableState { @override String getAppBarTitle() { return L10().partPricing; } @override List getTiles(BuildContext context) { List tiles = [ Card( child: ListTile( title: Text(widget.part.fullname), subtitle: Text(widget.part.description), leading: api.getThumbnail(widget.part.thumbnail) ) ), ]; if (widget.partPricing == null) { tiles.add( ListTile( title: Text(L10().noPricingAvailable), subtitle: Text(L10().noPricingDataFound), ) ); return tiles; } final pricing = widget.partPricing!; tiles.add( ListTile( title: Text(L10().currency), trailing: Text(pricing.currency), ) ); tiles.add( ListTile( title: Text(L10().priceRange), trailing: Text( formatPriceRange( pricing.overallMin, pricing.overallMax, currency: pricing.currency ) ), ) ); if (pricing.overallMin != null) { tiles.add( ListTile( title: Text(L10().priceOverrideMin), trailing: Text( renderCurrency(pricing.overallMin, pricing.overrideMinCurrency) ) ) ); } if (pricing.overrideMax != null) { tiles.add( ListTile( title: Text(L10().priceOverrideMax), trailing: Text( renderCurrency(pricing.overallMax, pricing.overrideMaxCurrency) ) ) ); } tiles.add( ListTile( title: Text(L10().internalCost), trailing: Text( formatPriceRange( pricing.internalCostMin, pricing.internalCostMax, currency: pricing.currency ) ), ) ); if (widget.part.isTemplate) { tiles.add( ListTile( title: Text(L10().variantCost), trailing: Text( formatPriceRange( pricing.variantCostMin, pricing.variantCostMax, currency: pricing.currency ) ), ) ); } if (widget.part.isAssembly) { tiles.add( ListTile( title: Text(L10().bomCost), trailing: Text( formatPriceRange( pricing.bomCostMin, pricing.bomCostMax, currency: pricing.currency ) ) ) ); } if (widget.part.isPurchaseable) { tiles.add( ListTile( title: Text(L10().purchasePrice), trailing: Text( formatPriceRange( pricing.purchaseCostMin, pricing.purchaseCostMax, currency: pricing.currency ) ), ) ); tiles.add( ListTile( title: Text(L10().supplierPricing), trailing: Text( formatPriceRange( pricing.supplierPriceMin, pricing.supplierPriceMax, currency: pricing.currency ) ), ) ); } if (widget.part.isSalable) { tiles.add(Divider()); tiles.add( ListTile( title: Text(L10().salePrice), trailing: Text( formatPriceRange( pricing.salePriceMin, pricing.salePriceMax, currency: pricing.currency ) ), ) ); tiles.add( ListTile( title: Text(L10().saleHistory), trailing: Text( formatPriceRange( pricing.saleHistoryMin, pricing.saleHistoryMax, currency: pricing.currency ) ), ) ); } return tiles; } }