[ADD]l10n_es_SII: and refactoring pms documents

This commit is contained in:
Darío Lodeiros
2022-09-29 20:00:39 +02:00
parent 18590ee873
commit d3a7a6eb80
25 changed files with 754 additions and 136 deletions

View File

@@ -89,7 +89,6 @@
"views/precheckin_portal_templates.xml",
"wizards/wizard_massive_changes.xml",
"wizards/wizard_advanced_filters.xml",
"views/res_partner_id_category.xml",
"views/payment_transaction_views.xml",
"views/account_move_line_views.xml",
],

View File

@@ -3925,16 +3925,6 @@ msgstr "Documento"
msgid "Document Number"
msgstr "Nº de documento"
#. module: pms
#: model:ir.model.fields,field_description:pms.field_pms_checkin_partner__document_type
#: model:ir.model.fields,field_description:pms.field_pms_folio__document_type
#: model:ir.model.fields,field_description:pms.field_pms_property__vat_document_type
#: model:ir.model.fields,field_description:pms.field_pms_reservation__document_type
#: model:ir.model.fields,field_description:pms.field_res_partner__vat_document_type
#: model:ir.model.fields,field_description:pms.field_res_users__vat_document_type
msgid "Document Type"
msgstr "Tipo de documento"
#. module: pms
#: model_terms:ir.ui.view,arch_db:pms.traveller_report
msgid "Document number"
@@ -10724,15 +10714,6 @@ msgstr "Usuario que creo la ficha"
msgid "The value of the down payment amount must be positive."
msgstr "El valor del pago inicial debe ser positivo."
#. module: pms
#: model:ir.model.fields,help:pms.field_pms_property__vat_document_type
#: model:ir.model.fields,help:pms.field_res_partner__vat_document_type
#: model:ir.model.fields,help:pms.field_res_users__vat_document_type
msgid ""
"The vat document type of the partner,\n"
" set if is a fiscal document, passport, etc..."
msgstr ""
#. module: pms
#: model_terms:ir.ui.view,arch_db:pms.portal_my_folio
msgid "There are currently no folios for your account."

View File

@@ -3603,16 +3603,6 @@ msgstr ""
msgid "Document Number"
msgstr ""
#. module: pms
#: model:ir.model.fields,field_description:pms.field_pms_checkin_partner__document_type
#: model:ir.model.fields,field_description:pms.field_pms_folio__document_type
#: model:ir.model.fields,field_description:pms.field_pms_property__vat_document_type
#: model:ir.model.fields,field_description:pms.field_pms_reservation__document_type
#: model:ir.model.fields,field_description:pms.field_res_partner__vat_document_type
#: model:ir.model.fields,field_description:pms.field_res_users__vat_document_type
msgid "Document Type"
msgstr ""
#. module: pms
#: model_terms:ir.ui.view,arch_db:pms.traveller_report
msgid "Document number"
@@ -10413,15 +10403,6 @@ msgstr ""
msgid "The value of the down payment amount must be positive."
msgstr ""
#. module: pms
#: model:ir.model.fields,help:pms.field_pms_property__vat_document_type
#: model:ir.model.fields,help:pms.field_res_partner__vat_document_type
#: model:ir.model.fields,help:pms.field_res_users__vat_document_type
msgid ""
"The vat document type of the partner,\n"
" set if is a fiscal document, passport, etc..."
msgstr ""
#. module: pms
#: model_terms:ir.ui.view,arch_db:pms.portal_my_folio
msgid "There are currently no folios for your account."

View File

@@ -46,6 +46,5 @@ from . import pms_availability
from . import res_partner_id_number
from . import pms_automated_mails
from . import payment_transaction
from . import res_partner_id_category
from . import pms_team_member
from . import ir_pms_property

View File

@@ -124,11 +124,6 @@ class ResPartner(models.Model):
store=True,
compute="_compute_lastname2",
)
vat = fields.Char(
readonly=False,
store=True,
compute="_compute_vat",
)
country_id = fields.Many2one(
readonly=False,
store=True,
@@ -192,14 +187,6 @@ class ResPartner(models.Model):
string="Days from Checkout",
help="Days from Checkout to generate the invoice",
)
vat_document_type = fields.Selection(
string="Document Type",
help="""The vat document type of the partner,
set if is a fiscal document, passport, etc...""",
selection=lambda self: self._selection_vat_document_type(),
compute="_compute_vat_document_type",
store=True,
)
residence_street = fields.Char(
string="Street of residence",
help="Street of the guest's residence",
@@ -246,20 +233,6 @@ class ResPartner(models.Model):
comodel_name="res.country.state",
)
@api.model
def _selection_vat_document_type(self):
vat_document_types = [
("vat", _("VAT")),
]
document_categories = self.env["res.partner.id_category"].search(
[
("is_vat_equivalent", "=", False),
]
)
for doc_type in document_categories:
vat_document_types.append((doc_type.name, doc_type.name))
return vat_document_types
@api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.gender")
def _compute_gender(self):
if hasattr(super(), "_compute_gender"):
@@ -578,17 +551,6 @@ class ResPartner(models.Model):
elif not record.lastname2:
record.lastname2 = False
@api.depends("id_numbers", "id_numbers.name")
def _compute_vat(self):
if hasattr(super(), "_compute_vat"):
super()._compute_vat()
for record in self:
if not record.vat and record.id_numbers:
vat = list(filter(None, set(record.id_numbers.mapped("name"))))
record.vat = vat[0]
elif not record.vat:
record.vat = False
@api.depends("residence_country_id")
def _compute_country_id(self):
if hasattr(super(), "_compute_country_id"):
@@ -678,27 +640,6 @@ class ResPartner(models.Model):
]
)
@api.depends(
"vat", "id_numbers", "id_numbers.category_id", "id_numbers.vat_syncronized"
)
def _compute_vat_document_type(self):
self.vat_document_type = False
for record in self.filtered("vat"):
document = record.id_numbers.filtered("vat_syncronized")
if document:
if len(document) > 1:
raise ValidationError(
_("There is more than one document with vat syncronized")
)
if record.vat:
record.vat_document_type = (
document.category_id.name
if not document.category_id.is_vat_equivalent
else "vat"
)
else:
record.vat_document_type = "vat"
def action_partner_reservations(self):
self.ensure_one()
checkin_reservation_ids = (
@@ -853,21 +794,8 @@ class ResPartner(models.Model):
def _check_enought_invoice_data(self):
self.ensure_one()
if self.vat and self.country_id and self.city and self.street:
return True
return False
@api.constrains("vat_document_type")
def check_vat(self):
"""
Inherit constrain to allow set vat in
document ids like passport, etc...
"""
for partner in self:
if not partner.vat_document_type or partner.vat_document_type != "vat":
continue
elif hasattr(super(), "check_vat"):
super(ResPartner, partner).check_vat()
# Template to be inherited by localization modules
return True
def unlink(self):
dummy, various_partner_id = self.env["ir.model.data"].get_object_reference(

View File

@@ -1,11 +0,0 @@
from odoo import fields, models
class ResPartnerIdCategory(models.Model):
_inherit = "res.partner.id_category"
is_vat_equivalent = fields.Boolean(
string="Is VAT Equivalent",
help="If true, this document type is check by vat number",
default=False,
)

View File

@@ -65,12 +65,6 @@
<field name="is_agency" />
</group>
</xpath>
<xpath expr="//field[@name='vat']" position="after">
<field
name="vat_document_type"
attrs="{'invisible':[('vat','=',False)]}"
/>
</xpath>
<xpath
expr="//notebook/page[@name='sales_purchases']/group/group/field[@name='company_id']"
position="after"

View File

@@ -4,7 +4,6 @@
<record id="document_type_dni" model="res.partner.id_category">
<field name="name">DNI</field>
<field name="code">D</field>
<field name="is_vat_equivalent">True</field>
<field name="validation_code">
letters = {
0: "T",

View File

@@ -49,7 +49,13 @@ class PmsCheckinParnert(models.Model):
]
)
if depends or (country and country.code == CODE_SPAIN):
mandatory_fields.append("residence_state_id")
mandatory_fields.extend(
[
"residence_state_id",
"residence_street",
"residence_city",
]
)
return mandatory_fields
@api.model

View File

@@ -1,6 +1,9 @@
import logging
from odoo import api, fields, models
from odoo import _, api, fields, models
from odoo.exceptions import UserError
from odoo.addons.base_vat.models.res_partner import _eu_country_vat
CODE_SPAIN = "ES"
@@ -34,6 +37,71 @@ class ResPartner(models.Model):
if not res:
return res
if self.country_id.code == "ES":
if not self.state_id and not self.zip:
if (
not self.vat
or not self.country_id
or not self.city
or not (self.street and self.street2)
):
return False
return True
def write(self, vals):
res = super(ResPartner, self).write(vals)
# REVIEW: Force Contrain vat
# https://github.com/odoo/odoo/issues/23242
if vals.get("vat") or vals.get("country_id"):
self.check_vat()
self._pms_check_unique_vat()
return res
@api.model
def create(self, vals):
records = super(ResPartner, self).create(vals)
# REVIEW: Force Contrain vat
# https://github.com/odoo/odoo/issues/23242
if vals.get("vat") or vals.get("country_id"):
records.check_vat()
records._pms_check_unique_vat()
return records
# This function is a candidate to be moved to the module
# partner_vat_unique
def _pms_check_unique_vat(self):
Partner = self.with_context(active_test=False).sudo()
europe = self.env.ref("base.europe")
if not europe:
europe = self.env["res.country.group"].search(
[("name", "=", "Europe")], limit=1
)
for partner in self.filtered(lambda p: p.vat and p.country_id):
partner_country_code = partner.commercial_partner_id.country_id.code
vat_country, vat_number = self._split_vat(partner.vat)
if europe and partner.country_id.id in europe.country_ids.ids:
vat_country = _eu_country_vat.get(vat_country, vat_country).upper()
vat_with_code = (
partner.vat
if partner_country_code.lower() == vat_country
else partner_country_code.upper() + partner.vat
)
vat_without_code = (
partner.vat
if partner_country_code.lower() != vat_country
else vat_country
)
domain = [
("company_id", "in", [False, partner.company_id.id]),
"|",
("vat", "=", vat_with_code),
("vat", "=", vat_without_code),
]
domain += [("id", "!=", partner.id), "!", ("id", "child_of", partner.id)]
repeat_partner = Partner.search(domain, limit=1)
if bool(partner.vat) and not partner.parent_id and repeat_partner:
raise UserError(
_("The VAT number %s already exists in other contacts: %s")
% (
vat_without_code,
repeat_partner.name,
)
)

View File

@@ -0,0 +1,81 @@
==============================
Payment Acquirer Multiproperty
==============================
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpms-lightgray.png?logo=github
:target: https://github.com/OCA/pms/tree/14.0/payment_acquirer_multi_pms_properties
:alt: OCA/pms
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/pms-14-0/pms-14-0-payment_acquirer_multi_pms_properties
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/293/14.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
Set the pms property in the payment acquirer to filter on website payments
**Table of contents**
.. contents::
:local:
Usage
=====
Sets one or more properties in the payment acquirer so that payment method is only available for documents of those properties.
If you leave it blank, it will be available to everyone.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/pms/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/pms/issues/new?body=module:%20payment_acquirer_multi_pms_properties%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* Commit [Sun]
Contributors
~~~~~~~~~~~~
* `Commit [Sun] <https://www.commitsun.com>`:
* Dario Lodeiros
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
This module is part of the `OCA/pms <https://github.com/OCA/pms/tree/14.0/payment_acquirer_multi_pms_properties>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@@ -0,0 +1 @@
from . import models

View File

@@ -0,0 +1,17 @@
# Copyright 2009-2020 Noviat.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "PMS AEAT SII Integration",
"author": "Commit [Sun], Odoo Community Association (OCA)",
"website": "https://github.com/OCA/pms",
"category": "Generic Modules/Property Management System",
"version": "14.0.1.0.2",
"license": "AGPL-3",
"depends": [
"pms",
"l10n_es_aeat_sii_oca",
],
"data": ["data/pms_data.xml", "views/res_partner_id_category.xml"],
"installable": True,
}

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data noupdate="1">
<!-- default partner simplified invoices -->
<record id="pms.various_pms_partner" model="res.partner">
<field name="aeat_anonymous_cash_customer">True</field>
</record>
<!-- aeat document type mapped -->
<record id="pms_l10n_es.document_type_dni" model="res.partner.id_category">
<field name="aeat_identification_type">02</field>
</record>
<record
id="pms.document_type_spanish_residence"
model="res.partner.id_category"
>
<field name="aeat_identification_type">05</field>
</record>
<record
id="pms.document_type_european_residence"
model="res.partner.id_category"
>
<field name="aeat_identification_type">05</field>
</record>
<record id="pms.document_type_passport" model="res.partner.id_category">
<field name="aeat_identification_type">03</field>
</record>
<record id="pms.document_type_driving_license" model="res.partner.id_category">
<field name="aeat_identification_type">06</field>
</record>
<record
id="pms.document_type_identification_document"
model="res.partner.id_category"
>
<field name="aeat_identification_type">06</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,2 @@
from . import res_partner_id_category
from . import res_partner

View File

@@ -0,0 +1,69 @@
from odoo import api, fields, models
class ResPartner(models.Model):
_inherit = "res.partner"
vat = fields.Char(
readonly=False,
store=True,
compute="_compute_vat",
)
aeat_identification_type = fields.Selection(
readonly=False,
store=True,
compute="_compute_aeat_identification_type",
)
aeat_identification = fields.Char(
readonly=False,
store=True,
compute="_compute_aeat_identification",
)
@api.depends(
"id_numbers",
"id_numbers.category_id",
"id_numbers.category_id.aeat_identification_type",
)
def _compute_aeat_identification_type(self):
if hasattr(super(), "_compute_aeat_identification_type"):
super()._compute_aeat_identification_type()
for record in self:
# Passport ("03"), Residential cert. ("04") and Another document ("05")
# are setted in aeat identificacion type.
# NIF/VAT ("02") are setted in partner vat field compute
document = record.id_numbers.filtered(
lambda i: i.category_id.aeat_identification_type in ["03", "05", "06"]
)
if document and not record.vat:
record.aeat_identification_type = document[
0
].category_id.aeat_identification_type
elif not record.aeat_identification_type or record.vat:
record.aeat_identification_type = False
@api.depends("id_numbers", "id_numbers.name")
def _compute_aeat_identification(self):
if hasattr(super(), "_compute_aeat_identification"):
super()._compute_aeat_identification()
for record in self:
document = record.id_numbers.filtered(
lambda i: i.category_id.aeat_identification_type in ["03", "05", "06"]
)
if document:
record.aeat_identification = document[0].name
elif not record.aeat_identification:
record.aeat_identification = False
@api.depends("id_numbers", "id_numbers.name")
def _compute_vat(self):
if hasattr(super(), "_compute_vat"):
super()._compute_vat()
for record in self:
vat = record.id_numbers.filtered(
lambda i: i.category_id.aeat_identification_type == "02"
)
if vat:
record.vat = vat[0].name
elif not record.vat:
record.vat = False

View File

@@ -0,0 +1,26 @@
from odoo import fields, models
class ResPartnerIdCategory(models.Model):
_inherit = "res.partner.id_category"
aeat_identification_type = fields.Selection(
string="AEAT Identification type equivalent",
help=(
"Used to specify an identification type to send to SII. Normally for "
"sending national and export invoices to SII where the customer country "
"is not Spain, it would calculate an identification type of 04 if the VAT "
"field is filled and 06 if it was not. This field is to specify "
"types of 03 through 05, in the event that the customer doesn't identify "
"with a foreign VAT and instead with their passport "
"or residential certificate. If there is no value it will work as before."
),
selection=[
("02", "NIF - VAT"),
("03", "Passport"),
("04", "Official document from the original country"),
("05", "Residential certificate"),
("06", "Another document"),
("07", "Not registered on census"),
],
)

View File

@@ -0,0 +1,3 @@
* `Commit [Sun] <https://www.commitsun.com>`:
* Dario Lodeiros

View File

@@ -0,0 +1 @@
Set automatically SII fields from Checkin document Partners

View File

@@ -0,0 +1,2 @@
When you create a new checkin document, this is copied to aeat identification type
Set the various client like a anonimous AEAT

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -0,0 +1,428 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.15.1: http://docutils.sourceforge.net/" />
<title>Payment Acquirer Multiproperty</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="payment-acquirer-multiproperty">
<h1 class="title">Payment Acquirer Multiproperty</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/pms/tree/14.0/payment_acquirer_multi_pms_properties"><img alt="OCA/pms" src="https://img.shields.io/badge/github-OCA%2Fpms-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/pms-14-0/pms-14-0-payment_acquirer_multi_pms_properties"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/293/14.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>Set the pms property in the payment acquirer to filter on website payments</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="id1">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="id2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="id3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="id4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="id5">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="id6">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#id1">Usage</a></h1>
<p>Sets one or more properties in the payment acquirer so that payment method is only available for documents of those properties.
If you leave it blank, it will be available to everyone.</p>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#id2">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/pms/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/pms/issues/new?body=module:%20payment_acquirer_multi_pms_properties%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#id3">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#id4">Authors</a></h2>
<ul class="simple">
<li>Commit [Sun]</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#id5">Contributors</a></h2>
<ul class="simple">
<li><cite>Commit [Sun] &lt;https://www.commitsun.com&gt;</cite>:<ul>
<li>Dario Lodeiros</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#id6">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/pms/tree/14.0/payment_acquirer_multi_pms_properties">OCA/pms</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View File

@@ -8,7 +8,7 @@
/>
<field name="arch" type="xml">
<xpath expr="//field[@name='code']" position="after">
<field name="is_vat_equivalent" />
<field name="aeat_identification_type" />
</xpath>
</field>
</record>

View File

@@ -0,0 +1 @@
../../../../pms_l10n_es_SII

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)