[ADD] Optional Check Auto payment invoice on Wizard invoicing

This commit is contained in:
Dario Lodeiros
2019-04-05 12:26:14 +02:00
parent 467f667b9a
commit 8bf40768b1
4 changed files with 31 additions and 22 deletions

View File

@@ -4,7 +4,7 @@ import time
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT
from odoo import api, fields, models, _
import odoo.addons.decimal_precision as dp
from odoo.exceptions import UserError
from odoo.exceptions import UserError, ValidationError
from datetime import timedelta
@@ -66,6 +66,9 @@ class FolioAdvancePaymentInv(models.TransientModel):
('fixed', 'Down payment (fixed amount)')
], string='What do you want to invoice?', default=_get_advance_payment_method,
required=True)
auto_invoice = fields.Boolean('Auto Payment Invoice',
default=True,
help='Automatic validation and link payment to invoice')
count = fields.Integer(default=_count, string='# of Orders')
folio_ids = fields.Many2many("hotel.folio", string="Folios",
help="Folios grouped",
@@ -172,23 +175,25 @@ class FolioAdvancePaymentInv(models.TransientModel):
@api.model
def _validate_invoices(self, invoice):
invoice.action_invoice_open()
payment_ids = self.folio_ids.mapped('payment_ids.id')
domain = [('account_id', '=', invoice.account_id.id),
('payment_id', 'in', payment_ids), ('reconciled', '=', False),
'|', ('amount_residual', '!=', 0.0),
('amount_residual_currency', '!=', 0.0)]
if invoice.type in ('out_invoice', 'in_refund'):
domain.extend([('credit', '>', 0), ('debit', '=', 0)])
type_payment = _('Outstanding credits')
else:
domain.extend([('credit', '=', 0), ('debit', '>', 0)])
type_payment = _('Outstanding debits')
info = {'title': '', 'outstanding': True, 'content': [], 'invoice_id': invoice.id}
lines = self.env['account.move.line'].search(domain)
currency_id = invoice.currency_id
for line in lines:
invoice.assign_outstanding_credit(line.id)
if self.auto_invoice:
invoice.action_invoice_open()
payment_ids = self.folio_ids.mapped('payment_ids.id')
domain = [('account_id', '=', invoice.account_id.id),
('payment_id', 'in', payment_ids), ('reconciled', '=', False),
'|', ('amount_residual', '!=', 0.0),
('amount_residual_currency', '!=', 0.0)]
if invoice.type in ('out_invoice', 'in_refund'):
domain.extend([('credit', '>', 0), ('debit', '=', 0)])
type_payment = _('Outstanding credits')
else:
domain.extend([('credit', '=', 0), ('debit', '>', 0)])
type_payment = _('Outstanding debits')
info = {'title': '', 'outstanding': True, 'content': [], 'invoice_id': invoice.id}
lines = self.env['account.move.line'].search(domain)
currency_id = invoice.currency_id
for line in lines:
invoice.assign_outstanding_credit(line.id)
return True
@api.multi
def create_invoices(self):

View File

@@ -37,7 +37,7 @@
<field name="name" />
<field name="state" />
<field name="pending_amount" />
<field name="amount_total" />
<field name="amount_total" />
</tree>
</field>
<field name="reservation_ids" widget="many2many_tags"
@@ -65,6 +65,7 @@
<field name="price_total" />
</tree>
</field>
<field name="auto_invoice" />
</group>
<footer>
<button name="create_invoices" string="Create and View Invoices" type="object"

View File

@@ -4,11 +4,11 @@
import time
import logging
from datetime import datetime, timedelta
from openerp.exceptions import ValidationError
from openerp.tools import (
from odoo.exceptions import ValidationError
from odoo.tools import (
DEFAULT_SERVER_DATE_FORMAT,
DEFAULT_SERVER_DATETIME_FORMAT)
from openerp import models, fields, api, _
from odoo import models, fields, api, _
import odoo.addons.decimal_precision as dp
_logger = logging.getLogger(__name__)