Menu

Плащане по фактура от клиент частично в процент и пачване на модул sale за коректна работа

В продължение на темата Промяна на сметката по подразбиране за авансовo плащание при покупкa или продажбa - Odoo 8, днес ще решим един проблем, който към днешна дата не е решен в официалната версия на Odoo въпреки, че има пач за това от март 2015 г.

Става дума за това, че при плащане по фактура от клиент частично в процент, не се начислява ДДС, а цялото ДДС се начислява при окончателната фактура. Проблема е поставен тук - https://github.com/odoo/odoo/issues/530 и тук - https://github.com/odoo/odoo/issues/4653. Pешен e с пач, който се намира в Github на адрес - https://github.com/odoo/odoo/pull/6067/commits/dd4a330e6e2a04a3d721a31e99063c6710114646

По долу поставям кода на пача на файла addons/sale/wizard/sale_make_invoice_advance.py

@@ -105,9 +105,23 @@ def _prepare_advance_invoice_vals(self, cr, uid, ids, context=None):
 raise osv.except_osv(_('Incorrect Data'),
 _('The value of Advance Amount must be positive.'))
 if wizard.advance_payment_method == 'percentage':
- inv_amount = sale.amount_untaxed * wizard.amount / 100
- if not res.get('name'):
- res['name'] = self._translate_advance(cr, uid, percentage=True, context=dict(context, lang=sale.partner_id.lang)) % (wizard.amount)
+ inv_lines_values = []
+ for sale_line in sale.order_line :
+ name = self._translate_advance(cr, uid, percentage=True, context=dict(context, lang=sale.partner_id.lang)) % (wizard.amount)
+ # create the invoice line
+ inv_line_values = {
+ 'name': name + '\n' + sale_line.name,
+ 'origin': sale.name,
+ 'account_id': res['account_id'],
+ 'price_unit': (sale_line.product_uos_qty * sale_line.price_unit * wizard.amount) / 100,
+ 'quantity': 1.0,
+ 'discount': sale_line.discount,
+ 'uos_id': res.get('uos_id', False),
+ 'product_id': False,
+ 'invoice_line_tax_id': [(6, 0, sale_line.tax_id.ids)],
+ 'account_analytic_id': sale.project_id.id or False,
+ }
+ inv_lines_values.append((0, 0, inv_line_values))
 else:
 inv_amount = wizard.amount
 if not res.get('name'):
@@ -119,33 +133,35 @@ def _prepare_advance_invoice_vals(self, cr, uid, ids, context=None):
 symbol_order = (symbol, inv_amount)
 res['name'] = self._translate_advance(cr, uid, context=dict(context, lang=sale.partner_id.lang)) % symbol_order
 
- # determine taxes
- if res.get('invoice_line_tax_id'):
- res['invoice_line_tax_id'] = [(6, 0, res.get('invoice_line_tax_id'))]
- else:
- res['invoice_line_tax_id'] = False
+ # determine taxes
+ if res.get('invoice_line_tax_id'):
+ res['invoice_line_tax_id'] = [(6, 0, res.get('invoice_line_tax_id'))]
+ else:
+ res['invoice_line_tax_id'] = False
+
+ # create the invoice
+ inv_line_values = {
+ 'name': res.get('name'),
+ 'origin': sale.name,
+ 'account_id': res['account_id'],
+ 'price_unit': inv_amount,
+ 'quantity': wizard.qtty or 1.0,
+ 'discount': False,
+ 'uos_id': res.get('uos_id', False),
+ 'product_id': wizard.product_id.id,
+ 'invoice_line_tax_id': res.get('invoice_line_tax_id'),
+ 'account_analytic_id': sale.project_id.id or False,
+ }
+ inv_lines_values = [(0, 0, inv_line_values)]
 
- # create the invoice
- inv_line_values = {
- 'name': res.get('name'),
- 'origin': sale.name,
- 'account_id': res['account_id'],
- 'price_unit': inv_amount,
- 'quantity': wizard.qtty or 1.0,
- 'discount': False,
- 'uos_id': res.get('uos_id', False),
- 'product_id': wizard.product_id.id,
- 'invoice_line_tax_id': res.get('invoice_line_tax_id'),
- 'account_analytic_id': sale.project_id.id or False,
- }
 inv_values = {
 'name': sale.client_order_ref or sale.name,
 'origin': sale.name,
 'type': 'out_invoice',
 'reference': False,
 'account_id': sale.partner_id.property_account_receivable.id,
 'partner_id': sale.partner_invoice_id.id,
- 'invoice_line': [(0, 0, inv_line_values)],
+ 'invoice_line': inv_lines_values,
 'currency_id': sale.pricelist_id.currency_id.id,
 'comment': '',
 'payment_term': sale.payment_term.id,
 
Последно променена вНеделя, 31 Юли 2016 16:17
  • Оценете
    (2 гласа)
  • Публикувана в Odoo 8
  • Прочетена 4099 пъти
администратор

Odoo (OpenERP) интегратор и администратор

Уеб сайт: www.openerp.bg

Оставете коментар

Моля убедете се, че всички задължътелни полета (маркирани със звезда) са попълнени. Не е разрешен HTML код.

нагоре

Вход или Регистрирай се