2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-06-15 03:35:28 +00:00
Files
inventree-app/lib/widget/part/part_pricing.dart
Asterix\Oliver 387dc1eb39 Format code
2025-06-14 10:59:13 +10:00

133 lines
3.6 KiB
Dart

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<PartPricingWidget> {
@override
String getAppBarTitle() {
return L10().partPricing;
}
@override
List<Widget> getTiles(BuildContext context) {
List<Widget> 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;
}
}