[IMP]pms: improvement downpayment invoice manage

This commit is contained in:
Darío Lodeiros
2023-01-19 20:58:37 +01:00
parent 1f1e8bba5f
commit beebfb7652
3 changed files with 30 additions and 5 deletions

View File

@@ -199,4 +199,11 @@ class AccountPayment(models.Model):
for (account, _dummy), line_ids in group.items(): for (account, _dummy), line_ids in group.items():
if account.reconcile or account.internal_type == "liquidity": if account.reconcile or account.internal_type == "liquidity":
self.env["account.move.line"].browse(line_ids).reconcile() self.env["account.move.line"].browse(line_ids).reconcile()
# Set folio sale lines default_invoice_to to partner downpayment invoice
for folio in payment.folio_ids:
for sale_line in folio.sale_line_ids.filtered(
lambda l: not l.default_invoice_to
):
sale_line.default_invoice_to = move.partner_id.id
return move return move

View File

@@ -1862,7 +1862,11 @@ class PmsFolio(models.Model):
if not lines_to_invoice: if not lines_to_invoice:
self = self.with_context(lines_auto_add=True) self = self.with_context(lines_auto_add=True)
lines_to_invoice = dict() lines_to_invoice = dict()
for line in self.sale_line_ids: for line in self.sale_line_ids.filtered(
lambda l: l.qty_to_invoice > 0
or (l.qty_to_invoice < 0 and final)
or l.display_type == "line_note"
):
if not self._context.get("autoinvoice"): if not self._context.get("autoinvoice"):
lines_to_invoice[line.id] = ( lines_to_invoice[line.id] = (
0 if line.display_type else line.qty_to_invoice 0 if line.display_type else line.qty_to_invoice
@@ -1904,7 +1908,7 @@ class PmsFolio(models.Model):
) )
invoice_date = max( invoice_date = max(
self.env["pms.reservation"] self.env["pms.reservation"]
.search([("sale_line_ids", "in", list(lines_to_invoice.keys()))]) .search([("sale_line_ids", "in", lines_to_invoice.keys())])
.mapped("checkout") .mapped("checkout")
) + datetime.timedelta(days=margin_days_autoinvoice) ) + datetime.timedelta(days=margin_days_autoinvoice)
if invoice_date < datetime.date.today(): if invoice_date < datetime.date.today():

View File

@@ -671,6 +671,7 @@ class PmsProperty(models.Model):
[ [
("sale_line_ids.autoinvoice_date", "=", date_reference), ("sale_line_ids.autoinvoice_date", "=", date_reference),
("invoice_status", "=", "to_invoice"), ("invoice_status", "=", "to_invoice"),
("amount_total", ">", 0),
] ]
) )
paid_folios = folios.filtered(lambda f: f.pending_amount <= 0) paid_folios = folios.filtered(lambda f: f.pending_amount <= 0)
@@ -696,10 +697,23 @@ class PmsProperty(models.Model):
lambda l: not l.autoinvoice_date lambda l: not l.autoinvoice_date
): ):
line._compute_autoinvoice_date() line._compute_autoinvoice_date()
invoice = folio.with_context(autoinvoice=True)._create_invoices( # REVIEW: Reverse downpayment invoices if the downpayment is not included
grouped=True, # in the service invoice (qty_to_invoice < 0)
downpayment_invoices = (
folio.sale_line_ids.filtered(
lambda l: l.is_downpayment and l.qty_to_invoice < 0
)
.mapped("invoice_lines")
.mapped("move_id")
.filtered(lambda i: i.is_simplified_invoice)
) )
if invoice: if downpayment_invoices:
downpayment_invoices._reverse_moves(cancel=True)
invoices = folio.with_context(autoinvoice=True)._create_invoices(
grouped=True,
final=True,
)
for invoice in invoices:
if ( if (
invoice.amount_total invoice.amount_total
> invoice.pms_property_id.max_amount_simplified_invoice > invoice.pms_property_id.max_amount_simplified_invoice