createAndAssignSSCCUnit method
Future<({UnitAssignStatus assignStatus, HuDetails? huDetails})>
createAndAssignSSCCUnit({
- required UnitSSCC unitSSCC,
- required ProcessOrderDetails poDetails,
- required PackingInstruction packingInstruction,
- required PackingFunction packingFunction,
- required ProcessType processType,
- required String regionString,
- HuDetails? proposalDetails,
- Json? createHUExtra,
- Json? packHUExtra,
- Json? getHUPackProposalExtra,
- Json? getHUManagementCSRFExtra,
- Options? getHUDetailsOptions,
Implementation
Future<({UnitAssignStatus assignStatus, HuDetails? huDetails})>
createAndAssignSSCCUnit({
required UnitSSCC unitSSCC,
required ProcessOrderDetails poDetails,
required PackingInstruction packingInstruction,
required PackingFunction packingFunction,
required ProcessType processType,
required String regionString,
HuDetails? proposalDetails,
Json? createHUExtra,
Json? packHUExtra,
Json? getHUPackProposalExtra,
Json? getHUManagementCSRFExtra,
Options? getHUDetailsOptions,
}) async {
String csrfToken = await getHuManagementCSRFToken(
getHUManagementCSRFExtra: getHUManagementCSRFExtra,
);
if (proposalDetails == null || unitSSCC.quantityIsChanged) {
proposalDetails = await getHUPackProposal(
csrfToken: csrfToken,
poDetails: poDetails,
packingInstruction: packingInstruction,
getHUPackProposalExtra: getHUPackProposalExtra,
getHUManagementCSRFExtra: getHUManagementCSRFExtra,
);
}
await _createHandlingUnit(
unitSSCC: unitSSCC,
packingFunction: packingFunction,
csrfToken: csrfToken,
processType: processType,
poDetails: poDetails,
proposalDetails: proposalDetails!,
regionString: regionString,
createHUExtra: createHUExtra,
getHUDetailsOptions: getHUDetailsOptions,
);
List<HuItem> materialItems =
proposalDetails.toHuItem
?.where((item) => item.huItemType == '2')
.toList() ??
[];
for (final HuItem item in materialItems) {
if (item.material != null && item.numberPackagingMaterial != null) {
await _packHandlingUnitWithPackMaterial(
ssccCode: unitSSCC.barcodeData.code,
uom: unitSSCC.getUnitOfMeasures(),
materialNumber: item.material!,
numberPackagingMaterial: item.numberPackagingMaterial!,
huManagementCSRFToken: csrfToken,
packHUExtra: packHUExtra,
);
}
}
await _packHandlingUnit(
ssccNumber: unitSSCC.barcodeData.code,
materialNumber: poDetails.headerMaterial,
batchNumber: poDetails.batchNumber,
uom: unitSSCC.getUnitOfMeasures(),
packQty: packingInstruction.npPIHeaderPositions
.getSSCCUnitQuantity(
currentObjectsPerHu: unitSSCC.getCurrentObjectsPerHU(),
defaultObjectsPerHU: unitSSCC.getDefaultObjectsPerHU(),
)
.toDouble(),
stockCategory: poDetails.stockType,
huManagementCSRFToken: csrfToken,
regionString: regionString,
packHUExtra: packHUExtra,
);
HuDetails? huDetails = await getHuDetails(
ssccCode: unitSSCC.barcodeData.code,
getHUDetailsOptions: getHUDetailsOptions,
);
if (!_huDetailsAreMatchingPoDetails(
poDetails: poDetails,
huDetails: huDetails,
)) {
return (assignStatus: UnitAssignStatus.inactive, huDetails: huDetails);
}
UnitAssignStatus assignStatus = getAssignStatusBasedOnPackingObject(
huDetails: huDetails!,
poDetails: poDetails,
);
return (assignStatus: assignStatus, huDetails: huDetails);
}