Impacted versions:
10.0

Steps to reproduce:

Take a Vendor Bill created based on a purchase order.
Change a price
Change the invoice date

Current behavior:

The price is reset to the purchase order line value.

Expected behavior:

The price should stay at the value set by the user.

**Please note that the taxes are also reset.**

Video/Screenshot link (optional):
https://youtu.be/B6FastTxSWc
addons/purchase/models/account_invoice.py
from odoo import api, fields, models, _
from odoo.tools.float_utils import float_compare
class AccountInvoice(models.Model):
    _inherit = 'account.invoice'
    purchase_id = fields.Many2one('purchase.order', string='Add Purchase Order',
        help='Encoding help. When selected, the associated purchase order lines are added to the vendor bill. Several PO can be selected.')
    @api.onchange('state', 'partner_id', 'invoice_line_ids')
    def _onchange_allowed_purchase_ids(self):
        '''
        The purpose of the method is to define a domain for the available
        purchase orders.
        '''
        result = {}
        
        purchase_line_ids = self.invoice_line_ids.mapped('purchase_line_id')
        purchase_ids = self.invoice_line_ids.mapped('purchase_id').filtered(lambda r: r.order_line <= purchase_line_ids)
        result['domain'] = {'purchase_id': [
            ('invoice_status', '=', 'to invoice'),
            ('partner_id', 'child_of', self.partner_id.id),
            ('id', 'not in', purchase_ids.ids),
            ]}
        return result
    def _prepare_invoice_line_from_po_line(self, line):