Managed to find a solution:
so_receipt_location=fields.Many2one('stock\.picking\.type','Τοποθεσία\ Παραλαβής'\)\ 
 \  \ 
def\ _available_locations\(self\):
 \  \  \ locations=self\.sudo\(\)\.search_read\(\[\('id','!=',self._origin.id)],{"so_receipt_location"})
      locations_list=[]
      for r in locations:
          if (r["so_receipt_location"]):
              locations_list.append(r["so_receipt_location"][0])
      return locations_list
@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False,submenu=False):
      res = super(SoftOneBranch,  self).fields_view_get(
                view_id=view_id,view_type=view_type,toolbar=toolbar,submenu=submenu)                            locations_list=self._available_locations()
      if ('so_receipt_location' in res['fields']):
            res['fields']['so_receipt_location']['domain']=[('id','not in',locations_list)]
      return res            
@api.onchange('so_receipt_location')    
def _get_locations(self):
      locations_list=self._available_locations()
      return {'domain':{'so_receipt_location':[('id','not in',locations_list)]}}   
Domain for so_receipt_location gets updated when form loads and every time the user picks another option from the list. Available values exclude current id's value.