repackHandlingUnit method
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,
);
}
}