createAndGetDelivery method

Future<Delivery> createAndGetDelivery({
  1. required String poNumber,
  2. required String? material,
  3. Options? getUnitsOfMeasureOptions,
  4. Options? getDeliveriesOptions,
  5. Json? getDeliveryCSRFExtra,
  6. Json? createDeliveryExtra,
})

Implementation

Future<Delivery> createAndGetDelivery({
  required String poNumber,
  required String? material,
  Options? getUnitsOfMeasureOptions,
  Options? getDeliveriesOptions,
  Json? getDeliveryCSRFExtra,
  Json? createDeliveryExtra,
}) async {
  await Future.delayed(
    Duration(seconds: 5),
  ); // Create delivery fails without waiting (time error)
  String deliveryNumber = await createDelivery(
    poNumber: poNumber,
    getDeliveryCSRFExtra: getDeliveryCSRFExtra,
    createDeliveryExtra: createDeliveryExtra,
  );
  Delivery? delivery = await getDelivery(
    deliveryNumber: deliveryNumber,
    getDeliveriesOptions: getDeliveriesOptions,
  );

  if (delivery == null) {
    throw Exception('Delivery not found');
  }

  if (material != null) {
    List<UnitOfMeasuresDto> recalculationUOMs =
        await UOMService(
          client: _deliveryApiProvider.client,
        ).loadUnitOfMeasures(
          material: material,
          getUnitsOfMeasureOptions: getUnitsOfMeasureOptions,
        );
    delivery = delivery.fillWithUOM(recalculationUOMs: recalculationUOMs);
  }

  return delivery;
}