Para conseguir que el botón Validar no aparezca hasta que se firme la transferencia podemos a la vista formulario: "stock.picking.form" y en dentro de esta vista nos vamos al header:

aquí eliminamos las lineas con el boton: "button_validate" y escribimos la siguiente:
<field name="message_main_attachment_id"/>

aquí eliminamos las lineas con el boton: "button_validate" y escribimos la siguiente:
<button name="button_validate"
attrs="{'invisible': [('state', 'in', 'assigned'),
('message_main_attachment_id','=', False)
]}"
string="Validate"
type="object"
groups="stock.group_stock_user"
class="o_btn_validate"/>
y en sheet agegas la siguiente linea;
<field name="message_main_attachment_id"/>
después del campo: <field name = "partner_id . . . .
Y listo...
Y listo...