[IMP] pms_api_rest: add filters in partner service

This commit is contained in:
Sara Lago
2022-10-05 16:04:45 +02:00
committed by Darío Lodeiros
parent 4a6430dd25
commit 08bc00d7df
2 changed files with 25 additions and 1 deletions

View File

@@ -8,9 +8,11 @@ class PmsPartnerSearchParam(Datamodel):
_name = "pms.partner.search.param"
_inherit = "pms.rest.metadata"
id = fields.Integer(required=False, allow_none=True)
vatNumber = fields.String(required=False, allow_none=True)
documentType = fields.Integer(required=False, allow_none=True)
documentNumber = fields.String(required=False, allow_none=True)
name = fields.String(required=False, allow_none=True)
housed = fields.Boolean(required=False, allow_none=True)
filter = fields.String(required=False, allow_none=True)
class PmsPartnerInfo(Datamodel):

View File

@@ -3,6 +3,7 @@ from datetime import datetime
from odoo.addons.base_rest import restapi
from odoo.addons.base_rest_datamodel.restapi import Datamodel
from odoo.addons.component.core import Component
from odoo.odoo.osv import expression
class PmsPartnerService(Component):
@@ -26,7 +27,28 @@ class PmsPartnerService(Component):
)
def get_partners(self, pms_partner_search_params):
result_partners = []
domain_fields = []
if pms_partner_search_params.name:
domain_fields.append(("name", "ilike", pms_partner_search_params.name))
if pms_partner_search_params.housed:
partners_housed = self.env["pms.checkin.partner"].search([("state", "=", "onboard")]).mapped(
"partner_id")
domain_fields.append(("id", "in", partners_housed.ids))
domain_filter = list()
if pms_partner_search_params.filter:
for search in pms_partner_search_params.filter.split(" "):
subdomains = [
[("name", "ilike", search)],
[("firstname", "ilike", search)],
[("lastname", "ilike", search)],
]
domain_filter.append(expression.OR(subdomains))
domain = []
if domain_filter:
domain = expression.AND([domain_fields, domain_filter[0]])
else:
domain = domain_fields
PmsPartnerResults = self.env.datamodels["pms.partner.results"]
PmsPartnerInfo = self.env.datamodels["pms.partner.info"]
total_partners = self.env["res.partner"].search_count(domain)