createAndAssignSSCCUnitConsolidated method
Future<({UnitAssignStatus assignStatus, HuDetails? huDetails})>
createAndAssignSSCCUnitConsolidated({
- required UnitSSCC unitSSCC,
- required ProcessOrderDetails poDetails,
- required PackingInstruction packingInstruction,
- required PackingFunction packingFunction,
- required String regionString,
- required ProcessType processType,
- HuDetails? proposalDetails,
- Json? createHUExtra,
- Json? packHUExtra,
- Json? unpackHUExtra,
- Options? getHUDetailsOptions,
- Json? getHUManagementCSRFExtra,
- Json? getHUPackProposalExtra,
Implementation
Future<({UnitAssignStatus assignStatus, HuDetails? huDetails})>
createAndAssignSSCCUnitConsolidated({
required UnitSSCC unitSSCC,
required ProcessOrderDetails poDetails,
required PackingInstruction packingInstruction,
required PackingFunction packingFunction,
required String regionString,
required ProcessType processType,
HuDetails? proposalDetails,
Json? createHUExtra,
Json? packHUExtra,
Json? unpackHUExtra,
Options? getHUDetailsOptions,
Json? getHUManagementCSRFExtra,
Json? getHUPackProposalExtra,
}) 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,
csrfToken: csrfToken,
poDetails: poDetails,
proposalDetails: proposalDetails!,
processType: processType,
stockCategory: poDetails.stockType,
packingFunction: packingFunction,
regionString: regionString,
createHUExtra: createHUExtra,
getHUDetailsOptions: getHUDetailsOptions,
);
if (packingFunction != PackingFunction.full) {
await _packHandlingUnit(
ssccNumber: unitSSCC.barcodeData.code,
materialNumber: poDetails.headerMaterial,
batchNumber: poDetails.batchNumber,
uom: unitSSCC.getUnitOfMeasures(),
packQty: unitSSCC.getCurrentQuantity(),
stockCategory: poDetails.stockType,
huManagementCSRFToken: csrfToken,
regionString: regionString,
packHUExtra: packHUExtra,
);
}
HuDetails? huDetails = await getHuDetails(
ssccCode: unitSSCC.barcodeData.code,
getHUDetailsOptions: getHUDetailsOptions,
);
if (unitSSCC.quantityIsChanged) {
// TODO: can be potential issue for empty unit
await repackHandlingUnit(
updatedUnit: unitSSCC,
headerMaterial: poDetails.headerMaterial,
batchNumber: poDetails.batchNumber,
huDetails: huDetails,
regionString: regionString,
getHUDetailsOptions: getHUDetailsOptions,
unpackHUExtra: unpackHUExtra,
packHUExtra: packHUExtra,
getHUManagementCSRFExtra: getHUManagementCSRFExtra,
);
}
if (!_huDetailsAreMatchingPoDetails(
poDetails: poDetails,
huDetails: huDetails,
)) {
return (assignStatus: UnitAssignStatus.inactive, huDetails: huDetails);
}
UnitAssignStatus assignStatus = getAssignStatusBasedOnPackingObject(
huDetails: huDetails!,
poDetails: poDetails,
);
return (assignStatus: assignStatus, huDetails: huDetails);
}