Feature/fatura porcentagem precofixo2

Olá @MStuttgart,

Na verdade o método do core _prepare_advance_invoice_vals que é chamado pelo create_invoices do objeto sale.advance.payment.inv seria o correspondente do _prepare_order_line_invoice_line que é chamado pelo método invoice_line_create do objeto sale.order, lá no sale.advance.payment.inv ele não chama o _prepare_order_line_invoice_line porque a formação dos dados seriam diferentes, mas eu diria que no sale.advance.payment.inv você poderia remover as linhas:

    res_aux = {}

    res_aux = order_line_obj.l10n_br_sale_prepare_order_line_invoice_line(
                    cr, uid, order_line, res_aux, context)

    res_aux = order_line_obj.l10n_br_sale_product_prepare_order_line_invoice_line(
                      cr, uid, order_line, res_aux, context)


E no dicionário que é montado com os valores da invoice que hoje esta assim:


    # create the invoice
    inv_line_values = {
        .....
        'fiscal_category_id': res_aux.get('fiscal_category_id'),
        'fiscal_position': res_aux.get('fiscal_position'),
        'cfop_id': res_aux.get('cfop_id'),
    }


Poderia ser assim:

    # create the invoice
    inv_line_values = {
        ....
        'fiscal_category_id': order_line.fiscal_category_id.id,
        'fiscal_position': order_line.fiscal_position.id,
        'cfop_id': order_line.fiscal_position.cfop_id.id,
    }


Eu imagino que a forma como você implementou teria o objetivo de diminuir a implementação e os pontos de mudança já que se houvesse alguma mudança você mudaria apenas a função l10n_br_sale_prepare_order_line_invoice_line e os dois _prepared funcionaria, de certa forma isso é verdade,  mas como no método _prepare_advance_invoice_vals você tem que preencher o dicionário inv_line_values você certamente teria que fazer mudanças também no _prepare_advance_invoice_vals, como a necessidade de preencher um novo campo na account.invoice.line. Por isso que eu fiz a sugestão acima, já que você tem o objeto order_line.

De qualquer forma não esta errado, eu fiz o pull request, mas poderíamos posteriormente refatorar isso.