Exemplo n.º 1
0
 /**
  * @internal
  * @param Sale\ShipmentCollection $shipmentCollection
  * @param int $deliveryId
  * @param array $requestFields
  * @return null|Sale\Shipment
  */
 public static function createShipmentFromRequest(Sale\ShipmentCollection $shipmentCollection, $deliveryId, array $requestFields)
 {
     $shipment = null;
     if (intval($deliveryId) > 0 && ($service = Sale\Delivery\Services\Manager::getService($deliveryId))) {
         $shipment = $shipmentCollection->createItem($service);
         $shipment->setField('DELIVERY_NAME', $service->getName());
         if (isset($requestFields['DELIVERY_PRICE']) && floatval($requestFields['DELIVERY_PRICE']) > 0) {
             $basePriceDelivery = $requestFields['DELIVERY_PRICE'];
             $priceDelivery = $requestFields['PRICE_DELIVERY'];
             if (!empty($requestFields['PRICE_DELIVERY_DIFF'])) {
                 $basePriceDelivery = $priceDelivery + floatval($requestFields['PRICE_DELIVERY_DIFF']);
             }
             $shipment->setFieldNoDemand('BASE_PRICE_DELIVERY', $basePriceDelivery);
             $shipment->setFieldNoDemand('CURRENCY', $requestFields['CURRENCY']);
             $shipment->setFieldNoDemand('PRICE_DELIVERY', $priceDelivery);
             if (isset($requestFields['PRICE_DELIVERY']) && $requestFields['PRICE_DELIVERY'] < $requestFields['DELIVERY_PRICE']) {
                 $shipment->setFieldNoDemand('PRICE_DELIVERY', $requestFields['PRICE_DELIVERY']);
             }
         }
     }
     return $shipment;
 }