repackHandlingUnit method

Future<void> repackHandlingUnit({
  1. required UnitSSCC updatedUnit,
  2. required String headerMaterial,
  3. required String? batchNumber,
  4. required String regionString,
  5. HuDetails? huDetails,
  6. Json? unpackHUExtra,
  7. Json? packHUExtra,
  8. Json? getHUManagementCSRFExtra,
  9. Options? getHUDetailsOptions,
})

Implementation

Future<void> repackHandlingUnit({
  required UnitSSCC updatedUnit,
  required String headerMaterial,
  required String? batchNumber,
  required String regionString,
  HuDetails? huDetails,
  Json? unpackHUExtra,
  Json? packHUExtra,
  Json? getHUManagementCSRFExtra,
  Options? getHUDetailsOptions,
}) async {
  huDetails ??= await getHuDetails(
    ssccCode: updatedUnit.barcodeData.code,
    getHUDetailsOptions: getHUDetailsOptions,
  );

  HuItem? huItem = huDetails?.toHuItem?.firstWhereOrNull((item) {
    if (batchNumber != null && batchNumber.isNotEmpty) {
      return item.material == headerMaterial && item.batch == batchNumber;
    } else {
      return item.material == headerMaterial;
    }
  });

  if (huItem == null) return;

  double initialUnitQty = double.parse(huItem.packQuantity!);
  double updatedUnitQty = updatedUnit.getUnitQuantity();

  if (updatedUnitQty < initialUnitQty) {
    double updatedQty = initialUnitQty - updatedUnitQty;
    await _unitsApiProvider.unpackHandlingUnit(
      ssccNumber: updatedUnit.barcodeData.code,
      data: huItem.toUnpackJson(
        unpackMode: 2,
        unpackQty: updatedQty,
        regionString: regionString,
      ),
      unpackHUExtra: unpackHUExtra,
      csrfToken: await getHuManagementCSRFToken(
        getHUManagementCSRFExtra: getHUManagementCSRFExtra,
      ),
    );
  } else if (updatedUnitQty > initialUnitQty) {
    await _packHandlingUnit(
      ssccNumber: updatedUnit.barcodeData.code,
      packMode: 2,
      batchNumber: huItem.batch,
      uom: huItem.baseUnitQuantity,
      huManagementCSRFToken: await getHuManagementCSRFToken(
        getHUManagementCSRFExtra: getHUManagementCSRFExtra,
      ),
      materialNumber: huItem.material!,
      packQty: updatedUnitQty - initialUnitQty,
      regionString: regionString,
      packHUExtra: packHUExtra,
    );
  }
}