hunk.code_window:     def _onchange_product_id(self):
           if self.product_id:
               if not self.id and self.user_has_groups('stock.group_stock_multi_locations') and not self.result_package_id:
                   qty_done = self.product_uom_id._compute_quantity(self.qty_done, self.product_id.uom_id)
                   default_dest_location = self._get_default_dest_location()
                   self.location_dest_id = default_dest_location._get_putaway_strategy(
  
hunk.labels: keep keep keep keep add keep
hunk.after_edit:                 additional_qty = self._get_putaway_additional_qty()
  
hunk.file_path: addons/stock/models/stock_move_line.py
hunk.type: add
file: 
  .o_list_view {
      thead {
          background-color: #eee;
      }
  
      tbody > tr.o_group_header {
          background-image: linear-gradient(to bottom, #fcfcfc, #dedede);
  
          &:focus-within {
             background-image: linear-gradient(to bottom, #fcfcfc, $o-form-lightsecondary);
          }
      }
  
      .o_list_table .o_data_row.o_selected_row > .o_data_cell:not(.o_readonly_modifier):not(.o_invisible_modifier):not(.o_remaining_days_cell) {
          padding: .15rem;
          .o_input {
              border: none;
              padding: .15rem;
              .o_input {
                  box-shadow: none;
                  padding: 0;
              }
          }
          select.o_input {
              padding: .25rem 0;
          }
          .o_field_boolean {
              padding-top: .15rem;
              padding-bottom: .15rem;
          }
          &.o_invalid_cell .o_input {
              box-shadow: 0 0 0 1px theme-color('danger');
          }
          &.o_list_button {
              padding: .25rem;
          }
          &.o_color_cell > .o_field_widget {
              padding: .15rem;
          }
      }
  }
  