Stock/Assigner/StockUnitAssigner.php
protected function compareStockUnit(StockUnitInterface $u1, StockUnitInterface $u2)
    {
        // TODO Review this code / make it configurable

        // Sorting is made for credit case

        $u1Result = $u1->getReceivedQuantity() + $u1->getAdjustedQuantity();
        $u2Result = $u2->getReceivedQuantity() + $u2->getAdjustedQuantity();

        // Prefer stock units with received/adjusted quantities
        if (0 < $u1Result && 0 == $u2Result) {
            return -1;
        } elseif (0 == $u1Result && 0 < $u2Result) {
            return 1;
        } elseif (0 < $u1Result && 0 < $u2Result) {
            // If both have received quantities, prefer cheapest
            if (0 != $result = $this->compareStockUnitByPrice($u1, $u2)) {
                return $result;
            }
        }

        $u1Result = $u1->getOrderedQuantity() + $u1->getAdjustedQuantity();
        $u2Result = $u2->getOrderedQuantity() + $u2->getAdjustedQuantity();

        // Prefer stock units with ordered quantities
        if (0 < $u1Result && 0 == $u2Result) {
            return -1;
        } elseif (0 == $u1Result && 0 < $u2Result) {
            return 1;
        }

        // By eta DESC
        /*$now = new \DateTime();
        // Positive if future / Negative if past
        $u1Diff = (null !== $date = $u1->getEstimatedDateOfArrival())
                ? $now->diff($date)->format('%R%a')
                : +9999;
        $u2Diff = (null !== $date = $u2->getEstimatedDateOfArrival())
                ? $now->diff($date)->format('%R%a')
                : +9999;
        if (abs($u1Diff) < 30 && abs($u2Diff) < 30) {

        }*/

        // By eta DESC
        if (0 != $result = $this->compareStockUnitByEda($u1, $u2)) {
            return $result;
        }

        // By price ASC
        if (0 != $result = $this->compareStockUnitByPrice($u1, $u2)) {
            return $result;
        }

        return 0;
    }
protected function compareStockUnit(StockUnitInterface $u1, StockUnitInterface $u2)
    {
        // TODO Review this code / make it configurable

        // Sorting is made for credit case

        $u1Result = $u1->getReceivedQuantity() + $u1->getAdjustedQuantity();
        $u2Result = $u2->getReceivedQuantity() + $u2->getAdjustedQuantity();

        // Prefer stock units with received/adjusted quantities
        if (0 < $u1Result && 0 == $u2Result) {
            return -1;
        } elseif (0 == $u1Result && 0 < $u2Result) {
            return 1;
        } elseif (0 < $u1Result && 0 < $u2Result) {
            // If both have received quantities, prefer cheapest
            if (0 != $result = $this->compareStockUnitByPrice($u1, $u2)) {
                return $result;
            }
        }

        $u1Result = $u1->getOrderedQuantity() + $u1->getAdjustedQuantity();
        $u2Result = $u2->getOrderedQuantity() + $u2->getAdjustedQuantity();

        // Prefer stock units with ordered quantities
        if (0 < $u1Result && 0 == $u2Result) {
            return -1;
        } elseif (0 == $u1Result && 0 < $u2Result) {
            return 1;
        }

        // By eta DESC
        /*$now = new \DateTime();
        // Positive if future / Negative if past
        $u1Diff = (null !== $date = $u1->getEstimatedDateOfArrival())
                ? $now->diff($date)->format('%R%a')
                : +9999;
        $u2Diff = (null !== $date = $u2->getEstimatedDateOfArrival())
                ? $now->diff($date)->format('%R%a')
                : +9999;
        if (abs($u1Diff) < 30 && abs($u2Diff) < 30) {

        }*/

        // By eta DESC
        if (0 != $result = $this->compareStockUnitByEda($u1, $u2)) {
            return $result;
        }

        // By price ASC
        if (0 != $result = $this->compareStockUnitByPrice($u1, $u2)) {
            return $result;
        }

        return 0;
    }
protected function compareStockUnit ( StockUnitInterface $ u1 , StockUnitInterface $ u2 ) { // TODO Review this code / make it configurable // Sorting is made for credit case $ u1Result = $ u1 -> getReceivedQuantity ( ) + $ u1 -> getAdjustedQuantity ( ) ; $ u2Result = $ u2 -> getReceivedQuantity ( ) + $ u2 -> getAdjustedQuantity ( ) ; // Prefer stock units with received/adjusted quantities if ( 0 < $ u1Result && 0 == $ u2Result ) { return - 1 ; } elseif ( 0 == $ u1Result && 0 < $ u2Result ) { return 1 ; } elseif ( 0 < $ u1Result && 0 < $ u2Result ) { // If both have received quantities, prefer cheapest if ( 0 != $ result = $ this -> compareStockUnitByPrice ( $ u1 , $ u2 ) ) { return $ result ; } } $ u1Result = $ u1 -> getOrderedQuantity ( ) + $ u1 -> getAdjustedQuantity ( ) ; $ u2Result = $ u2 -> getOrderedQuantity ( ) + $ u2 -> getAdjustedQuantity ( ) ; // Prefer stock units with ordered quantities if ( 0 < $ u1Result && 0 == $ u2Result ) { return - 1 ; } elseif ( 0 == $ u1Result && 0 < $ u2Result ) { return 1 ; } // By eta DESC /*$now = new \DateTime();
        // Positive if future / Negative if past
        $u1Diff = (null !== $date = $u1->getEstimatedDateOfArrival())
                ? $now->diff($date)->format('%R%a')
                : +9999;
        $u2Diff = (null !== $date = $u2->getEstimatedDateOfArrival())
                ? $now->diff($date)->format('%R%a')
                : +9999;
        if (abs($u1Diff) < 30 && abs($u2Diff) < 30) {

        }*/ // By eta DESC if ( 0 != $ result = $ this -> compareStockUnitByEda ( $ u1 , $ u2 ) ) { return $ result ; } // By price ASC if ( 0 != $ result = $ this -> compareStockUnitByPrice ( $ u1 , $ u2 ) ) { return $ result ; } return 0 ; }
Sorts the stock units for credit case (sold quantity).

@param StockUnitInterface $u1
@param StockUnitInterface $u2

@return int
Sorts the stock units for credit case ( sold quantity ) .