mirror of
https://github.com/bringout/oca-ocb-l10n_asia-pacific.git
synced 2026-04-27 04:02:01 +02:00
19.0 vanilla
This commit is contained in:
parent
7dc55599c6
commit
7f43bbbfcc
650 changed files with 45260 additions and 33436 deletions
|
|
@ -2,5 +2,5 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import base_document_layout
|
||||
from . import account_move
|
||||
from . import hr_timesheet
|
||||
from . import res_company
|
||||
from . import res_config_settings
|
||||
|
|
|
|||
|
|
@ -1,58 +0,0 @@
|
|||
from odoo import models, fields, _
|
||||
from odoo.tools import format_date
|
||||
|
||||
|
||||
class AccountMove(models.Model):
|
||||
_inherit = 'account.move'
|
||||
|
||||
l10n_din5008_template_data = fields.Binary(compute='_compute_l10n_din5008_template_data')
|
||||
l10n_din5008_document_title = fields.Char(compute='_compute_l10n_din5008_document_title')
|
||||
l10n_din5008_addresses = fields.Binary(compute='_compute_l10n_din5008_addresses', exportable=False)
|
||||
|
||||
def _compute_l10n_din5008_template_data(self):
|
||||
for record in self:
|
||||
record.l10n_din5008_template_data = data = []
|
||||
if record.name:
|
||||
data.append((_("Invoice No."), record.name))
|
||||
if record.invoice_date:
|
||||
data.append((_("Invoice Date"), format_date(self.env, record.invoice_date)))
|
||||
if record.invoice_date_due:
|
||||
data.append((_("Due Date"), format_date(self.env, record.invoice_date_due)))
|
||||
if record.invoice_origin:
|
||||
data.append((_("Source"), record.invoice_origin))
|
||||
if record.ref:
|
||||
data.append((_("Reference"), record.ref))
|
||||
|
||||
def _compute_l10n_din5008_document_title(self):
|
||||
for record in self:
|
||||
record.l10n_din5008_document_title = ''
|
||||
if record.move_type == 'out_invoice':
|
||||
if record.state == 'posted':
|
||||
record.l10n_din5008_document_title = _('Invoice')
|
||||
elif record.state == 'draft':
|
||||
record.l10n_din5008_document_title = _('Draft Invoice')
|
||||
elif record.state == 'cancel':
|
||||
record.l10n_din5008_document_title = _('Cancelled Invoice')
|
||||
elif record.move_type == 'out_refund':
|
||||
record.l10n_din5008_document_title = _('Credit Note')
|
||||
elif record.move_type == 'in_refund':
|
||||
record.l10n_din5008_document_title = _('Vendor Credit Note')
|
||||
elif record.move_type == 'in_invoice':
|
||||
record.l10n_din5008_document_title = _('Vendor Bill')
|
||||
|
||||
def _compute_l10n_din5008_addresses(self):
|
||||
for record in self:
|
||||
record.l10n_din5008_addresses = data = []
|
||||
if record.partner_shipping_id == record.partner_id:
|
||||
data.append((_("Invoicing and Shipping Address:"), record.partner_shipping_id))
|
||||
elif record.move_type in ("in_invoice", "in_refund") or not record.partner_shipping_id:
|
||||
data.append((_("Invoicing and Shipping Address:"), record.partner_id))
|
||||
else:
|
||||
data.append((_("Shipping Address:"), record.partner_shipping_id))
|
||||
data.append((_("Invoicing Address:"), record.partner_id))
|
||||
|
||||
def check_field_access_rights(self, operation, field_names):
|
||||
field_names = super().check_field_access_rights(operation, field_names)
|
||||
return [field_name for field_name in field_names if field_name not in {
|
||||
'l10n_din5008_addresses',
|
||||
}]
|
||||
|
|
@ -1,10 +1,34 @@
|
|||
from odoo import models, fields, _
|
||||
from odoo.tools import format_date
|
||||
from markupsafe import Markup
|
||||
import re
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
||||
from odoo import api, models, fields
|
||||
|
||||
|
||||
class BaseDocumentLayout(models.TransientModel):
|
||||
_inherit = 'base.document.layout'
|
||||
|
||||
@api.model
|
||||
def _default_report_footer(self):
|
||||
# OVERRIDE web/models/base_document_layout
|
||||
if self.env.company.external_report_layout_id == self.env.ref('l10n_din5008.external_layout_din5008'):
|
||||
company = self.env.company
|
||||
# Company VAT should not be present in this footer, as it is displayed elsewhere in the DIN5008 layout
|
||||
footer_fields = [field for field in [company.phone, company.email, company.website] if isinstance(field, str) and len(field) > 0]
|
||||
return Markup('<br>').join(footer_fields)
|
||||
return super()._default_report_footer()
|
||||
|
||||
@api.model
|
||||
def _default_company_details(self):
|
||||
# OVERRIDE web/models/base_document_layout
|
||||
default_company_details = super()._default_company_details()
|
||||
if self.env.company.external_report_layout_id == self.env.ref('l10n_din5008.external_layout_din5008'):
|
||||
# In order to respect the strict formatting of DIN5008, we need to remove empty lines from the address
|
||||
return re.sub(r'(( )*<br>( )*\n)+', r'<br>\n', default_company_details)
|
||||
return default_company_details
|
||||
|
||||
report_footer = fields.Html(default=_default_report_footer)
|
||||
company_details = fields.Html(default=_default_company_details)
|
||||
street = fields.Char(related='company_id.street', readonly=True)
|
||||
street2 = fields.Char(related='company_id.street2', readonly=True)
|
||||
zip = fields.Char(related='company_id.zip', readonly=True)
|
||||
|
|
@ -12,16 +36,6 @@ class BaseDocumentLayout(models.TransientModel):
|
|||
company_registry = fields.Char(related='company_id.company_registry', readonly=True)
|
||||
bank_ids = fields.One2many(related='company_id.partner_id.bank_ids', readonly=True)
|
||||
account_fiscal_country_id = fields.Many2one(related='company_id.account_fiscal_country_id', readonly=True)
|
||||
l10n_din5008_template_data = fields.Binary(compute='_compute_l10n_din5008_template_data')
|
||||
l10n_din5008_document_title = fields.Char(compute='_compute_l10n_din5008_document_title')
|
||||
|
||||
def _compute_l10n_din5008_template_data(self):
|
||||
self.l10n_din5008_template_data = [
|
||||
(_("Invoice No."), 'INV/2021/12345'),
|
||||
(_("Invoice Date"), format_date(self.env, fields.Date.today())),
|
||||
(_("Due Date"), format_date(self.env, fields.Date.add(fields.Date.today(), days=7))),
|
||||
(_("Reference"), 'SO/2021/45678'),
|
||||
]
|
||||
|
||||
def _compute_l10n_din5008_document_title(self):
|
||||
self.l10n_din5008_document_title = _('Invoice')
|
||||
l10n_din5008_invoice_date = fields.Date(default=fields.Date.today, store=False)
|
||||
l10n_din5008_due_date = fields.Date(default=fields.Date.today() + relativedelta(day=7), store=False)
|
||||
l10n_din5008_delivery_date = fields.Date(default=fields.Date.today() + relativedelta(day=7), store=False)
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
from odoo import models, fields
|
||||
|
||||
class AccountAnalyticLine(models.Model):
|
||||
_inherit = 'account.analytic.line'
|
||||
|
||||
l10n_din5008_template_data = fields.Binary(compute='_compute_l10n_din5008_template_data')
|
||||
l10n_din5008_document_title = fields.Char(compute='_compute_l10n_din5008_document_title')
|
||||
|
||||
def _compute_l10n_din5008_template_data(self):
|
||||
for record in self:
|
||||
record.l10n_din5008_template_data = []
|
||||
|
||||
def _compute_l10n_din5008_document_title(self):
|
||||
for record in self:
|
||||
record.l10n_din5008_document_title = ''
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
from odoo import fields, models
|
||||
|
||||
|
||||
class ResCompany(models.Model):
|
||||
_inherit = 'res.company'
|
||||
|
||||
has_position_column = fields.Boolean(string="Show Position Column in Reports")
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
from odoo import fields, models
|
||||
|
||||
|
||||
class ResConfigSettings(models.TransientModel):
|
||||
_inherit = 'res.config.settings'
|
||||
|
||||
has_position_column = fields.Boolean(
|
||||
related='company_id.has_position_column',
|
||||
readonly=False,
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue