getPositionsBasedOnHuDetails method

List<NPPIHeaderPosition> getPositionsBasedOnHuDetails({
  1. required HuDetails? huDetails,
  2. required String? batchNumber,
  3. required String regionString,
})

Implementation

List<NPPIHeaderPosition> getPositionsBasedOnHuDetails({
  required HuDetails? huDetails,
  required String? batchNumber,
  required String regionString,
}) {
  final positions = getPositionsWithoutPalletPosition();
  if (huDetails == null) return positions;
  if (huDetails.toHuItem?.isEmpty ?? true) return [];

  for (int i = 0; i < positions.length; i++) {
    HuItem? huItem = huDetails.toHuItem?.firstWhereOrNull((item) {
      bool itemFound = item.material == positions[i].materialNumber;
      if (!itemFound) return false;

      return item.huItemType == '1' ? item.batch == batchNumber : itemFound;
    });

    if (huItem != null) {
      if (huItem.huItemType == '1') {
        positions[i] = positions[i].copyWith(
          targetQuantity: huItem.packQuantity,
        );
      }
      if (huItem.huItemType == '2') {
        positions[i] = positions[i].copyWith(
          targetQuantity: huItem.numberPackagingMaterial
              ?.toDouble()
              .getFormattedQuantityString(
                regionString: regionString,
                replaceComasAndAddDots: true,
              ),
        );
      }
    } else {
      positions.removeAt(i);
    }
  }

  return positions;
}