skip to Main Content

we have warehouse LOCATIONS in a system like this.

D2705B, D2805C, F3805C, F3805F

So we used these all locations but want to know which locations are not used YET.

Case 1: D2705B USED means missing D2705A (Need to go back so ending with A is the missing location)

Case 1:D2805C USED means missing D2805B, D2805A (Need to go back so ending with A and B is the missing location)

Case 3: F3805C, F3805F First 4 digits same so C and F are used but B, A and D is missing

Basic Requirments are: For example, we have a stock location in system D2705A, D2705E, but if no product is using D2705B, C, D, then the system should show missing location D2705B, C, D;

2

Answers


  1. Chosen as BEST ANSWER
    $locations = ['A' , 'C']; #it will return me B
    $locations = ['M']; #it will return me A to N
    
     if ($locations) {
    
        $first = strtoupper(current($locations));
        $last = strtoupper(end($locations));
    
        if (count($locations) == 1)
           $first = 'A';
    
            foreach (range($first, $last) as $letter) {
             if ($letter === $last) {
                break;
             }
             if (in_array($letter, $locations)) continue;
                 $foundMissingLocations[] = $loc->stock_location_4 . $letter;
             }
    
       print_r($foundMissingLocations);
     }
    

  2. As far as I understand your question, you need to generate all missing "locations" based on the last letter from the number. So if you have:
    F3805F, you need to get F3805A, F3805B, F3805C, F3805D, F3805E.

    $location = 'F3805F'; // last location 
    $base = substr($location, 0, 5); // gives 'F3805'
    $lastLetter = substr($location, -1); // gives 'F'
    
    $missingLocations = [];
    
    foreach (range('A', $lastLetter)as $letter) {
      if ($letter === $lastLetter) {
        break;
      }
      $missingLocations[] = $base.$letter;
    }
    
    print_r($missingLocations);
    

    That gives you an array of missing locations:

    Array
    (
    [0] => F3805A
    [1] => F3805B
    [2] => F3805C
    [3] => F3805D
    [4] => F3805E
    )

    You can now diff this array with existing locations.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search