14.0 pms account flow (#36)

* [WIP] Basic tests definition

* [DEL] Default diff invoicing

* [WIP] Reservation refact invoice fields

* [FIX] test price without taxes

* [FIX] Security csv merge

* [WIP]pms: Wizard adv inv views

* [ADD] Wizard Filter Invoice Days

* [WIP] Payment WorkFlow
This commit is contained in:
Darío Lodeiros
2021-01-20 11:41:31 +01:00
committed by GitHub
parent 7285dc3dc0
commit 19fffec6ba
42 changed files with 3025 additions and 580 deletions

View File

@@ -1,7 +1,7 @@
# Copyright 2017 Alexandre Díaz
# Copyright 2017 Dario Lodeiros
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
from odoo import fields, models
from odoo import api, fields, models
class AccountMoveLine(models.Model):
@@ -35,3 +35,82 @@ class AccountMoveLine(models.Model):
readonly=True,
copy=False,
)
folio_line_ids = fields.Many2many(
"folio.sale.line",
"folio_sale_line_invoice_rel",
"invoice_line_id",
"sale_line_id",
string="Folio Lines",
copy=False,
)
folio_ids = fields.Many2many(
"pms.folio",
"payment_folio_rel",
"move_id",
"folio_id",
string="Folios",
ondelete="cascade",
compute="_compute_folio_ids",
readonly=False,
store=True,
)
name = fields.Char(
compute="_compute_name",
readonly=False,
store=True,
)
@api.depends("service_ids", "reservation_ids")
def _compute_folio_ids(self):
for record in self:
if record.service_ids:
record.folio_ids = record.mapped("service_ids.folio_id")
elif record.reservation_ids:
record.folio_ids = record.mapped("reservation_ids.folio_id")
elif not record.folio_ids:
record.folio_ids = False
def invoice_filter_days(self):
action = self.env["ir.actions.act_window"]._for_xml_id(
"pms.pms_invoice_filter_days_action"
)
# Force the values of the move line in the context to avoid issues
ctx = dict(self.env.context)
ctx.pop("active_id", None)
ctx["active_ids"] = self.ids
ctx["active_model"] = "account.move.line"
action["context"] = ctx
return action
def _copy_data_extend_business_fields(self, values):
super(AccountMoveLine, self)._copy_data_extend_business_fields(values)
values["folio_line_ids"] = [(6, None, self.folio_line_ids.ids)]
values["reservation_line_ids"] = [(6, None, self.reservation_line_ids.ids)]
values["service_ids"] = [(6, None, self.service_ids.ids)]
values["reservation_ids"] = [(6, None, self.reservation_ids.ids)]
@api.depends("reservation_line_ids")
def _compute_name(self):
if hasattr(super(), "_compute_name"):
super()._compute_field()
for record in self:
if record.reservation_line_ids:
record.name = record._get_compute_name()
def _get_compute_name(self):
self.ensure_one()
if self.reservation_line_ids:
month = False
name = False
lines = self.reservation_line_ids.sorted("date")
for date in lines.mapped("date"):
if date.month != month:
name = name + "\n" if name else ""
name += date.strftime("%B-%Y") + ": "
name += date.strftime("%d")
month = date.month
else:
name += ", " + date.strftime("%d")
return name
else:
return False