You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

141 lines
4.6 KiB

# Copyright 2020 Coop IT Easy SCRL fs
# Robin Keunen <robin@coopiteasy.be>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import _
from odoo.fields import Date
def date_validator(field, value, error):
try:
Date.from_string(value)
except ValueError:
return error(
field, _("{} does not match format '%Y-%m-%d'".format(value))
)
S_MANY_2_ONE = {
"type": "dict",
"schema": {
"id": {"type": "integer", "required": True},
"name": {"type": "string", "required": True, "empty": False},
},
}
S_SUBSCRIPTION_REQUEST_GET = {"_id": {"type": "integer"}}
S_SUBSCRIPTION_REQUEST_RETURN_GET = {
"id": {"type": "integer", "required": True},
"email": {"type": "string", "required": True, "empty": False},
"name": {"type": "string", "required": True, "empty": False},
"date": {"type": "string", "required": True, "empty": False},
"state": {"type": "string", "required": True, "empty": False},
"ordered_parts": {"type": "integer", "required": True},
"share_product": S_MANY_2_ONE,
"address": {
"type": "dict",
"schema": {
"street": {"type": "string", "required": True, "empty": False},
"zip_code": {"type": "string", "required": True, "empty": False},
"city": {"type": "string", "required": True, "empty": False},
"country": {"type": "string", "required": True, "empty": False},
},
},
"lang": {"type": "string", "required": True, "empty": False},
"capital_release_request": {
"type": "list",
"schema": {"type": "integer"},
"required": True,
"empty": True,
},
}
S_SUBSCRIPTION_REQUEST_SEARCH = {
"date_from": {"type": "string", "check_with": date_validator},
"date_to": {"type": "string", "check_with": date_validator},
}
S_SUBSCRIPTION_REQUEST_RETURN_SEARCH = {
"count": {"type": "integer", "required": True},
"rows": {
"type": "list",
"schema": {
"type": "dict",
"schema": S_SUBSCRIPTION_REQUEST_RETURN_GET,
},
},
}
S_SUBSCRIPTION_REQUEST_CREATE = {
"name": {"type": "string", "required": True, "empty": False},
"email": {"type": "string", "required": True, "empty": False},
"ordered_parts": {"type": "integer", "required": True},
"share_product": {"type": "integer", "required": True},
"address": {
"type": "dict",
"schema": {
"street": {"type": "string", "required": True, "empty": False},
"zip_code": {"type": "string", "required": True, "empty": False},
"city": {"type": "string", "required": True, "empty": False},
"country": {"type": "string", "required": True, "empty": False},
},
},
"lang": {"type": "string", "required": True, "empty": False},
}
S_SUBSCRIPTION_REQUEST_UPDATE = {
"name": {"type": "string"},
"email": {"type": "string"},
"ordered_parts": {"type": "integer"},
"state": {"type": "string"},
"address": {
"type": "dict",
"schema": {
"street": {"type": "string"},
"zip_code": {"type": "string"},
"city": {"type": "string"},
"country": {"type": "string"},
},
},
"lang": {"type": "string"},
"share_product": {"type": "integer"},
}
S_SUBSCRIPTION_REQUEST_VALIDATE = {"_id": {"type": "integer"}}
S_INVOICE_GET = {"_id": {"type": "integer"}}
S_INVOICE_LINE_RETURN_GET = {
"type": "list",
"schema": {
"type": "dict",
"schema": {
"name": {"type": "string", "required": True},
"account": S_MANY_2_ONE,
"product": S_MANY_2_ONE,
"quantity": {"type": "float", "required": True},
"price_unit": {"type": "float", "required": True},
},
},
"required": True,
"empty": True,
}
S_INVOICE_RETURN_GET = {
"id": {"type": "integer", "required": True},
"name": {"type": "string", "required": True, "empty": False},
"state": {"type": "string", "required": True, "empty": False},
"type": {"type": "string", "required": True, "empty": False},
"date": {"type": "string", "required": True, "empty": False},
"date_due": {"type": "string", "required": True, "empty": False},
"date_invoice": {"type": "string", "required": True, "empty": False},
"partner": S_MANY_2_ONE,
"journal": S_MANY_2_ONE,
"account": S_MANY_2_ONE,
"subscription_request": {
"type": "dict",
"schema": {"id": {"type": "integer"}, "name": {"type": "string"}},
},
"invoice_lines": S_INVOICE_LINE_RETURN_GET,
}