From 908af528e657560b3aa0c7406dd2925529b6428d Mon Sep 17 00:00:00 2001 From: miguelpadin Date: Tue, 18 May 2021 13:47:25 +0200 Subject: [PATCH] [REF] refactor content chckin list --- pms/controllers/pms_rest_controller.py | 98 --------- pms_l10n_es/models/pms_property.py | 26 ++- pms_l10n_es/static/cert.pem | 209 ++++++++++--------- pms_l10n_es/views/pms_property_views.xml | 10 +- pms_l10n_es/wizards/traveller_report.py | 249 ++++++++++++----------- pms_l10n_es/wizards/traveller_report.xml | 30 +-- 6 files changed, 268 insertions(+), 354 deletions(-) delete mode 100644 pms/controllers/pms_rest_controller.py diff --git a/pms/controllers/pms_rest_controller.py b/pms/controllers/pms_rest_controller.py deleted file mode 100644 index ff76a294c..000000000 --- a/pms/controllers/pms_rest_controller.py +++ /dev/null @@ -1,98 +0,0 @@ -import datetime - -from odoo import _, http -from odoo.http import request - -from odoo.tools.misc import formatLang, format_date, get_lang - - -class PmsReservationRestController(http.Controller): - @http.route( - "/reservations", - type="json", - website=True, - auth="public", - ) - def room_type_list(self): - payload = http.request.jsonrequest.get("params") - - return self._get_available_room_types(payload) - - def _get_available_room_types(self, payload): - room_types = [] - checkin = payload["checkin"] - checkin = datetime.datetime.strptime(checkin, get_lang(request.env).date_format).date() - - checkout = payload["checkout"] - checkout = datetime.datetime.strptime(checkout, get_lang(request.env).date_format).date() - - pms_property_id = int(payload["pms_property_id"]) - pricelist_id = int(payload["pricelist_id"]) - - reservation = False - if isinstance(payload["reservation_id"], int): - reservation_id = int(payload["reservation_id"]) - - reservation = ( - request.env["pms.reservation"] - .sudo() - .search([("id", "=", int(reservation_id))]) - ) - if not reservation: - reservation_line_ids = False - else: - reservation_line_ids = reservation.reservation_line_ids.ids - - rooms_avail = ( - request.env["pms.availability.plan"] - .sudo() - .rooms_available( - checkin=checkin, - checkout=checkout, - current_lines=reservation_line_ids, - pricelist_id=pricelist_id, - pms_property_id=pms_property_id, - ) - ) - - pms_room_types = request.env["pms.room.type"].sudo().search([]) - - for room_type in pms_room_types.filtered(lambda r: r.total_rooms_count > 0): - count = len( - rooms_avail.filtered(lambda r: r.room_type_id.id == room_type.id) - ) - room_types.append( - { - "id": room_type.id, - "name": room_type.name + " (" + str(count) + ")", - } - ) - - return room_types - - # - # @http.route( - # "/reservation/", - # type="http", - # auth="user", - # methods=["GET", "POST"], - # website=True, - # ) - # def reservation_detail(self, reservation_id, **post): - # reservation = request.env["pms.reservation"].browse([reservation_id]) - # if not reservation: - # raise MissingError(_("This document does not exist.")) - # values = { - # "page_name": "Reservation", - # "reservation": reservation, - # } - # if post and "message" in post: - # try: - # reservation.message_post( - # subject=_("PWA Message"), - # body=post["message"], - # message_type="comment", - # ) - # except Exception as e: - # _logger.critical(e) - # return http.request.render("pms_pwa.roomdoo_reservation_detail", values) diff --git a/pms_l10n_es/models/pms_property.py b/pms_l10n_es/models/pms_property.py index 6274af05b..7e9753e76 100644 --- a/pms_l10n_es/models/pms_property.py +++ b/pms_l10n_es/models/pms_property.py @@ -4,16 +4,26 @@ from odoo import fields, models class PmsProperty(models.Model): _inherit = "pms.property" - police_type = fields.Selection( + institution = fields.Selection( [ ("guardia_civil", "Guardia Civil"), - ("policia_nacional", "Policía Nacional"), - ("ertxaintxa", "Ertxaintxa"), - ("mossos", "Mossos_d'esquadra"), + ("policia_nacional", "Policía Nacional (soon)"), + ("ertxaintxa", "Ertxaintxa (soon)"), + ("mossos", "Mossos_d'esquadra (soon)"), ], - string="Police Type", + string="Institution", default="guardia_civil", + help="Institution to send daily guest data.", + ) + institution_property_id = fields.Char( + string="Institution property id", + size=10, + help="Id provided by institution to send data from property.", + ) + institution_user = fields.Char( + string="Institution user", help="User provided by institution to send the data." + ) + institution_password = fields.Char( + string="Institution password", + help="Password provided by institution to send the data.", ) - police_number = fields.Char("Police Number", size=10) - police_user = fields.Char("Police User") - police_pass = fields.Char("Police Password") diff --git a/pms_l10n_es/static/cert.pem b/pms_l10n_es/static/cert.pem index e498d6da4..7011ea9ea 100644 --- a/pms_l10n_es/static/cert.pem +++ b/pms_l10n_es/static/cert.pem @@ -1,105 +1,104 @@ ------BEGIN CERTIFICATE----- -MIIIwDCCB6igAwIBAgIQGBMhPyx6Rolez7EMhDFA1jANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQG -EwJFUzERMA8GA1UECgwIRk5NVC1SQ00xJTAjBgNVBAsMHEFDIENvbXBvbmVudGVzIEluZm9ybcOh -dGljb3MwHhcNMjAwNTI4MTIzOTQwWhcNMjIwNTI4MTIzOTM5WjCBmDELMAkGA1UEBhMCRVMxDzAN -BgNVBAcMBk1BRFJJRDEuMCwGA1UECgwlRElSRUNDSU9OIEdFTkVSQUwgREUgTEEgR1VBUkRJQSBD -SVZJTDESMBAGA1UEBRMJUzI4MTYwMDNEMRgwFgYDVQRhDA9WQVRFUy1TMjgxNjAwM0QxGjAYBgNV -BAMMESouZ3VhcmRpYWNpdmlsLmVzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApA++ -/lNaimrEGvflr1eNHDDLmEZF/FKIA9Bd9YJnieciGg+3ZJ9/Kd99eV1V9zIgfdSLLDucMeflp6s6 -8v563u4+zX7AgREB539rKAaCUwtqVcutZROL+NIjkoHHtMHgMlCbbQaKC32n8awaB0YRNGI+eLMJ -4u7X2iBR1OohEjGFa1xfDS2UHOeWsxW5eDPGhK3iaDSHmcy1jtIGVmas4YtcNFRf/8y2v2I2QqHY -2l7IbiDMAdSW2nPme/5HZXvIlkDdD4SG17xhIAe1uPEBKd0g6lt89OLCFetNwcRaqjFtA5DrpmiQ -0hqHQTk8AST6ibpRvAZCKvln+uXNWcDDywIDAQABo4IFVDCCBVAwDAYDVR0TAQH/BAIwADCBgQYI -KwYBBQUHAQEEdTBzMDsGCCsGAQUFBzABhi9odHRwOi8vb2NzcGNvbXAuY2VydC5mbm10LmVzL29j -c3AvT2NzcFJlc3BvbmRlcjA0BggrBgEFBQcwAoYoaHR0cDovL3d3dy5jZXJ0LmZubXQuZXMvY2Vy -dHMvQUNDT01QLmNydDCCASgGA1UdIASCAR8wggEbMIIBDQYKKwYBBAGsZgMJETCB/jApBggrBgEF -BQcCARYdaHR0cDovL3d3dy5jZXJ0LmZubXQuZXMvZHBjcy8wgdAGCCsGAQUFBwICMIHDDIHAQ2Vy -dGlmaWNhZG8gd2lsZGNhcmQgZGUgYXV0ZW50aWNhY2nDs24gZGUgc2l0aW8gd2ViIHNlZ8O6biBy -ZWdsYW1lbnRvIGV1cm9wZW8gZUlEQVMuIFN1amV0byBhIGNvbmRpY2lvbmVzIGRlIHVzbyBzZWfD -um4gRFBDIGRlIEZOTVQtUkNNLCBOSUY6IFEyODI2MDA0LUogKEMvSm9yZ2UgSnVhbiAxMDYtMjgw -MDktTWFkcmlkLUVzcGHDsWEpMAgGBgQAj3oBBzAcBgNVHREEFTATghEqLmd1YXJkaWFjaXZpbC5l -czATBgNVHSUEDDAKBggrBgEFBQcDATAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0OBBYEFEMrHDu3J/7S -OVend+G0LsfbflPRMIGmBggrBgEFBQcBAwSBmTCBljALBgYEAI5GAQMCAQ8wEwYGBACORgEGMAkG -BwQAjkYBBgMwcgYGBACORgEFMGgwMhYsaHR0cHM6Ly93d3cuY2VydC5mbm10LmVzL3Bkcy9QRFNf -Q09NUF9lcy5wZGYTAmVzMDIWLGh0dHBzOi8vd3d3LmNlcnQuZm5tdC5lcy9wZHMvUERTX0NPTVBf -ZW4ucGRmEwJlbjAfBgNVHSMEGDAWgBQZ+FgvFNamzJsEmAgNTNerAKeDZTCB4AYDVR0fBIHYMIHV -MIHSoIHPoIHMhoGebGRhcDovL2xkYXBjb21wLmNlcnQuZm5tdC5lcy9DTj1DUkwxLE9VPUFDJTIw -Q29tcG9uZW50ZXMlMjBJbmZvcm1hdGljb3MsTz1GTk1ULVJDTSxDPUVTP2NlcnRpZmljYXRlUmV2 -b2NhdGlvbkxpc3Q7YmluYXJ5P2Jhc2U/b2JqZWN0Y2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9pbnSG -KWh0dHA6Ly93d3cuY2VydC5mbm10LmVzL2NybHNjb21wL0NSTDEuY3JsMIIBfwYKKwYBBAHWeQIE -AgSCAW8EggFrAWkAdwApeb7wnjk5IfBWc59jpXflvld9nGAK+PlNXSZcJV3HhAAAAXJbS5kkAAAE -AwBIMEYCIQDxUFJkb+yYGmvDckxbKLZvcycZmEvAX6g8GH3jqr7RjAIhAOshzUdC84VntNxq56Dx -160eCj65UVL9A64z7hnXnUKBAHYARqVV63X6kSAwtaKJafTzfREsQXS+/Um4havy/HD+bUcAAAFy -W0ua9gAABAMARzBFAiEAj3S5/JDapowZIsHUOFXQuxxb26oIhOy/YfNLZI01pQMCIEN8b4AxHp9Z -mj8StFvP4/YLqvYgQbhgewCvFExlsRtVAHYAQcjKsd8iRkoQxqE6CUKHXk4xixsD6+tLx2jwkGKW -BvYAAAFyW0ucLAAABAMARzBFAiEAt+XKebp1KrEamXlKU2VkKt6lsRiylbNFTCTpGm5GAP8CIEUT -WXZee7o83zyXQ9nBy0t8TcRtI70vuheLQ909va6dMA0GCSqGSIb3DQEBCwUAA4IBAQBJAplPXRRv -b4nLZFqQvQjHlr0TSKTiC21vAzXe/1iiuPOPZF3AE1ZcOMEqiPWTN6GOR3UYksZE2Cfm0xqNOytr -bj/INmu5tX5U7yvGQxiB8EdHaTdQQknAi/IBEx0KJE+EAT+upOPYbne5km1lffN19WwQ2f3ybAbj -l5ZpWR6lSuV3JStUllHAS/0HjwBbqHhxJZ2BTG4Ca5SkHnbK/K1mfwLe2VGVYp7WWUzKkSQQ8Hs0 -RuY9EZ0sovRH7lL/EIf7uV/5d1V4kW1h7F38jEPDH4UVTHDMMaR9NV/4pES0zQnI6y5NJCiRP39k -GFyKTE/4x7pFeIFnXXIwswUWFA9h ------END CERTIFICATE----- - ------BEGIN CERTIFICATE----- -MIIG1jCCBL6gAwIBAgIQNMarBE42mRJRyCULbJTWwDANBgkqhkiG9w0BAQsFADA7MQswCQYDVQQG -EwJFUzERMA8GA1UECgwIRk5NVC1SQ00xGTAXBgNVBAsMEEFDIFJBSVogRk5NVC1SQ00wHhcNMTMw -NjI0MTA1MjU5WhcNMjgwNjI0MTA1MjU5WjBHMQswCQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1S -Q00xJTAjBgNVBAsMHEFDIENvbXBvbmVudGVzIEluZm9ybcOhdGljb3MwggEiMA0GCSqGSIb3DQEB -AQUAA4IBDwAwggEKAoIBAQCXVx8rdbF7/xY44CaSqzzGo5BhvzA8knxC/3KJYVzTf+CkOvMxMUDu -b8b0h38MDujm/RKZhBNOWbKhxF3U61ZVhcR9xOCciuS/soT80m3BByxAKcZsNka0jCA4XRkglDaA -FxCHEZ06MOnvXsSOZDfPYahbQ3VFCVycJuhlHdAwSpmceQwcRYkR6YgXwTiyzCNGivMKAmRS3dIt -qDOmDW/nxiDFq/Jd8VWY7GFkwbbAeqYId8FjN8zfvafunsB9SLFkUjPPMeqfmC7Bdh7HMxLpaOXR -OwH201cmlebiPkn0xSFxXFqwhhr6yN8UQYZ3O/+xdHLrS6DS9+CJUF6d09ijAgMBAAGjggLIMIIC -xDASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUGfhYLxTWpsyb -BJgIDUzXqwCng2UwgZgGCCsGAQUFBwEBBIGLMIGIMEkGCCsGAQUFBzABhj1odHRwOi8vb2NzcGZu -bXRyY21jYS5jZXJ0LmZubXQuZXMvb2NzcGZubXRyY21jYS9PY3NwUmVzcG9uZGVyMDsGCCsGAQUF -BzAChi9odHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9jZXJ0cy9BQ1JBSVpGTk1UUkNNLmNydDAfBgNV -HSMEGDAWgBT3fcX9xOiaG3dkp/UdoMy/h2CabTCB6wYDVR0gBIHjMIHgMIHdBgRVHSAAMIHUMCkG -CCsGAQUFBwIBFh1odHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzCBpgYIKwYBBQUHAgIwgZkM -gZZTdWpldG8gYSBsYXMgY29uZGljaW9uZXMgZGUgdXNvIGV4cHVlc3RhcyBlbiBsYSBEZWNsYXJh -Y2nDs24gZGUgUHLDoWN0aWNhcyBkZSBDZXJ0aWZpY2FjacOzbiBkZSBsYSBGTk1ULVJDTSAoIEMv -IEpvcmdlIEp1YW4sIDEwNi0yODAwOS1NYWRyaWQtRXNwYcOxYSkwgdQGA1UdHwSBzDCByTCBxqCB -w6CBwIaBkGxkYXA6Ly9sZGFwZm5tdC5jZXJ0LmZubXQuZXMvQ049Q1JMLE9VPUFDJTIwUkFJWiUy -MEZOTVQtUkNNLE89Rk5NVC1SQ00sQz1FUz9hdXRob3JpdHlSZXZvY2F0aW9uTGlzdDtiaW5hcnk/ -YmFzZT9vYmplY3RjbGFzcz1jUkxEaXN0cmlidXRpb25Qb2ludIYraHR0cDovL3d3dy5jZXJ0LmZu -bXQuZXMvY3Jscy9BUkxGTk1UUkNNLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAo2bsQ2xLDcyodieq -jd+uy/lfxDw/MbrAq/ZaNFkIlcypUYamOM4vrm5rz8oLjPCoLkJ48P+nP08Gkcl5Q6q6VFcZLia+ -U3gfHXrkyqToQlrtViGCGH3xA4u56XtMHGXSdk9vQ0yDnW5f7bUEkp+uvcKewrOvNcpbIAgD4eU7 -gdOS0w7BagcFRBgTKBw2s3z73fRZtouJg/atmWYtXbBsfNjph+pCh+h5sbSyZUVzO5AemyjpYYYN -MWDQrTXq+7O8zIPuPaNESjEexuzn+VjHG90RlUK1LygARi+Ir0opD2w6erb/hK8Eea7MFdKQ2ASq -NBGJggNo5vfPVvjHiL+Antmh7mQSKL+4YwFU64d4KK9k0C1mbJethDQFKcjTK1vMvnXFiupsIuyT -qwKauo7u2zMKzY4r3VYOW9TpMyLPFIY8pII5GyNzXlL0F4nscOvduTEPEYqxeNJfpDDPY/DO8Wfx -gdRTy2W3D/UoAulb+Y+nuzGGCtFQrsSMQX487R+aY0nWot/hajef6BcPuxhDfQrg5IafrISVmcJA -plb3tXhh0sz7RbYz6jf1bke4eU5fnrTMtGlVteUL2vjrfUPHW07kBJuaQ7sxORNV3bpHisOnHj+A -riQzCn5vINpSHW6hTm7IfRkbltu/aQrsMuUhP7HE/v+uXe5CuboV5ubZhHU= ------END CERTIFICATE----- - ------BEGIN CERTIFICATE----- -MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNVBAYT -AkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTAeFw0wODEw -MjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJD -TTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC -ggIBALpxgHpMhm5/yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcf -qQgfBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAzWHFctPVr -btQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxFtBDXaEAUwED653cXeuYL -j2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z374jNUUeAlz+taibmSXaXvMiwzn15Cou -08YfxGyqxRxqAQVKL9LFwag0Jl1mpdICIfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mw -WsXmo8RZZUc1g16p6DULmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnT -tOmlcYF7wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peSMKGJ -47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2ZSysV4999AeU14EC -ll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMetUqIJ5G+GR4of6ygnXYMgrwTJbFaa -i0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE -FPd9xf3E6Jobd2Sn9R2gzL+HYJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1o -dHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD -nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1RXxlDPiyN8+s -D8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYMLVN0V2Ue1bLdI4E7pWYjJ2cJ -j+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrT -Qfv6MooqtyuGC2mDOL7Nii4LcK2NJpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW -+YJF1DngoABd15jmfZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7 -Ixjp6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp1txyM/1d -8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B9kiABdcPUXmsEKvU7ANm -5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wokRqEIr9baRRmW1FMdW4R58MD3R++Lj8UG -rp1MYp3/RgT408m2ECVAdf4WqslKYIYvuu8wd+RU4riEmViAqhOLUTpPSPaLtrM= ------END CERTIFICATE----- - +-----BEGIN CERTIFICATE----- +MIIIwDCCB6igAwIBAgIQGBMhPyx6Rolez7EMhDFA1jANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQG +EwJFUzERMA8GA1UECgwIRk5NVC1SQ00xJTAjBgNVBAsMHEFDIENvbXBvbmVudGVzIEluZm9ybcOh +dGljb3MwHhcNMjAwNTI4MTIzOTQwWhcNMjIwNTI4MTIzOTM5WjCBmDELMAkGA1UEBhMCRVMxDzAN +BgNVBAcMBk1BRFJJRDEuMCwGA1UECgwlRElSRUNDSU9OIEdFTkVSQUwgREUgTEEgR1VBUkRJQSBD +SVZJTDESMBAGA1UEBRMJUzI4MTYwMDNEMRgwFgYDVQRhDA9WQVRFUy1TMjgxNjAwM0QxGjAYBgNV +BAMMESouZ3VhcmRpYWNpdmlsLmVzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApA++ +/lNaimrEGvflr1eNHDDLmEZF/FKIA9Bd9YJnieciGg+3ZJ9/Kd99eV1V9zIgfdSLLDucMeflp6s6 +8v563u4+zX7AgREB539rKAaCUwtqVcutZROL+NIjkoHHtMHgMlCbbQaKC32n8awaB0YRNGI+eLMJ +4u7X2iBR1OohEjGFa1xfDS2UHOeWsxW5eDPGhK3iaDSHmcy1jtIGVmas4YtcNFRf/8y2v2I2QqHY +2l7IbiDMAdSW2nPme/5HZXvIlkDdD4SG17xhIAe1uPEBKd0g6lt89OLCFetNwcRaqjFtA5DrpmiQ +0hqHQTk8AST6ibpRvAZCKvln+uXNWcDDywIDAQABo4IFVDCCBVAwDAYDVR0TAQH/BAIwADCBgQYI +KwYBBQUHAQEEdTBzMDsGCCsGAQUFBzABhi9odHRwOi8vb2NzcGNvbXAuY2VydC5mbm10LmVzL29j +c3AvT2NzcFJlc3BvbmRlcjA0BggrBgEFBQcwAoYoaHR0cDovL3d3dy5jZXJ0LmZubXQuZXMvY2Vy +dHMvQUNDT01QLmNydDCCASgGA1UdIASCAR8wggEbMIIBDQYKKwYBBAGsZgMJETCB/jApBggrBgEF +BQcCARYdaHR0cDovL3d3dy5jZXJ0LmZubXQuZXMvZHBjcy8wgdAGCCsGAQUFBwICMIHDDIHAQ2Vy +dGlmaWNhZG8gd2lsZGNhcmQgZGUgYXV0ZW50aWNhY2nDs24gZGUgc2l0aW8gd2ViIHNlZ8O6biBy +ZWdsYW1lbnRvIGV1cm9wZW8gZUlEQVMuIFN1amV0byBhIGNvbmRpY2lvbmVzIGRlIHVzbyBzZWfD +um4gRFBDIGRlIEZOTVQtUkNNLCBOSUY6IFEyODI2MDA0LUogKEMvSm9yZ2UgSnVhbiAxMDYtMjgw +MDktTWFkcmlkLUVzcGHDsWEpMAgGBgQAj3oBBzAcBgNVHREEFTATghEqLmd1YXJkaWFjaXZpbC5l +czATBgNVHSUEDDAKBggrBgEFBQcDATAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0OBBYEFEMrHDu3J/7S +OVend+G0LsfbflPRMIGmBggrBgEFBQcBAwSBmTCBljALBgYEAI5GAQMCAQ8wEwYGBACORgEGMAkG +BwQAjkYBBgMwcgYGBACORgEFMGgwMhYsaHR0cHM6Ly93d3cuY2VydC5mbm10LmVzL3Bkcy9QRFNf +Q09NUF9lcy5wZGYTAmVzMDIWLGh0dHBzOi8vd3d3LmNlcnQuZm5tdC5lcy9wZHMvUERTX0NPTVBf +ZW4ucGRmEwJlbjAfBgNVHSMEGDAWgBQZ+FgvFNamzJsEmAgNTNerAKeDZTCB4AYDVR0fBIHYMIHV +MIHSoIHPoIHMhoGebGRhcDovL2xkYXBjb21wLmNlcnQuZm5tdC5lcy9DTj1DUkwxLE9VPUFDJTIw +Q29tcG9uZW50ZXMlMjBJbmZvcm1hdGljb3MsTz1GTk1ULVJDTSxDPUVTP2NlcnRpZmljYXRlUmV2 +b2NhdGlvbkxpc3Q7YmluYXJ5P2Jhc2U/b2JqZWN0Y2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9pbnSG +KWh0dHA6Ly93d3cuY2VydC5mbm10LmVzL2NybHNjb21wL0NSTDEuY3JsMIIBfwYKKwYBBAHWeQIE +AgSCAW8EggFrAWkAdwApeb7wnjk5IfBWc59jpXflvld9nGAK+PlNXSZcJV3HhAAAAXJbS5kkAAAE +AwBIMEYCIQDxUFJkb+yYGmvDckxbKLZvcycZmEvAX6g8GH3jqr7RjAIhAOshzUdC84VntNxq56Dx +160eCj65UVL9A64z7hnXnUKBAHYARqVV63X6kSAwtaKJafTzfREsQXS+/Um4havy/HD+bUcAAAFy +W0ua9gAABAMARzBFAiEAj3S5/JDapowZIsHUOFXQuxxb26oIhOy/YfNLZI01pQMCIEN8b4AxHp9Z +mj8StFvP4/YLqvYgQbhgewCvFExlsRtVAHYAQcjKsd8iRkoQxqE6CUKHXk4xixsD6+tLx2jwkGKW +BvYAAAFyW0ucLAAABAMARzBFAiEAt+XKebp1KrEamXlKU2VkKt6lsRiylbNFTCTpGm5GAP8CIEUT +WXZee7o83zyXQ9nBy0t8TcRtI70vuheLQ909va6dMA0GCSqGSIb3DQEBCwUAA4IBAQBJAplPXRRv +b4nLZFqQvQjHlr0TSKTiC21vAzXe/1iiuPOPZF3AE1ZcOMEqiPWTN6GOR3UYksZE2Cfm0xqNOytr +bj/INmu5tX5U7yvGQxiB8EdHaTdQQknAi/IBEx0KJE+EAT+upOPYbne5km1lffN19WwQ2f3ybAbj +l5ZpWR6lSuV3JStUllHAS/0HjwBbqHhxJZ2BTG4Ca5SkHnbK/K1mfwLe2VGVYp7WWUzKkSQQ8Hs0 +RuY9EZ0sovRH7lL/EIf7uV/5d1V4kW1h7F38jEPDH4UVTHDMMaR9NV/4pES0zQnI6y5NJCiRP39k +GFyKTE/4x7pFeIFnXXIwswUWFA9h +-----END CERTIFICATE----- + +-----BEGIN CERTIFICATE----- +MIIG1jCCBL6gAwIBAgIQNMarBE42mRJRyCULbJTWwDANBgkqhkiG9w0BAQsFADA7MQswCQYDVQQG +EwJFUzERMA8GA1UECgwIRk5NVC1SQ00xGTAXBgNVBAsMEEFDIFJBSVogRk5NVC1SQ00wHhcNMTMw +NjI0MTA1MjU5WhcNMjgwNjI0MTA1MjU5WjBHMQswCQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1S +Q00xJTAjBgNVBAsMHEFDIENvbXBvbmVudGVzIEluZm9ybcOhdGljb3MwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCXVx8rdbF7/xY44CaSqzzGo5BhvzA8knxC/3KJYVzTf+CkOvMxMUDu +b8b0h38MDujm/RKZhBNOWbKhxF3U61ZVhcR9xOCciuS/soT80m3BByxAKcZsNka0jCA4XRkglDaA +FxCHEZ06MOnvXsSOZDfPYahbQ3VFCVycJuhlHdAwSpmceQwcRYkR6YgXwTiyzCNGivMKAmRS3dIt +qDOmDW/nxiDFq/Jd8VWY7GFkwbbAeqYId8FjN8zfvafunsB9SLFkUjPPMeqfmC7Bdh7HMxLpaOXR +OwH201cmlebiPkn0xSFxXFqwhhr6yN8UQYZ3O/+xdHLrS6DS9+CJUF6d09ijAgMBAAGjggLIMIIC +xDASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUGfhYLxTWpsyb +BJgIDUzXqwCng2UwgZgGCCsGAQUFBwEBBIGLMIGIMEkGCCsGAQUFBzABhj1odHRwOi8vb2NzcGZu +bXRyY21jYS5jZXJ0LmZubXQuZXMvb2NzcGZubXRyY21jYS9PY3NwUmVzcG9uZGVyMDsGCCsGAQUF +BzAChi9odHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9jZXJ0cy9BQ1JBSVpGTk1UUkNNLmNydDAfBgNV +HSMEGDAWgBT3fcX9xOiaG3dkp/UdoMy/h2CabTCB6wYDVR0gBIHjMIHgMIHdBgRVHSAAMIHUMCkG +CCsGAQUFBwIBFh1odHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzCBpgYIKwYBBQUHAgIwgZkM +gZZTdWpldG8gYSBsYXMgY29uZGljaW9uZXMgZGUgdXNvIGV4cHVlc3RhcyBlbiBsYSBEZWNsYXJh +Y2nDs24gZGUgUHLDoWN0aWNhcyBkZSBDZXJ0aWZpY2FjacOzbiBkZSBsYSBGTk1ULVJDTSAoIEMv +IEpvcmdlIEp1YW4sIDEwNi0yODAwOS1NYWRyaWQtRXNwYcOxYSkwgdQGA1UdHwSBzDCByTCBxqCB +w6CBwIaBkGxkYXA6Ly9sZGFwZm5tdC5jZXJ0LmZubXQuZXMvQ049Q1JMLE9VPUFDJTIwUkFJWiUy +MEZOTVQtUkNNLE89Rk5NVC1SQ00sQz1FUz9hdXRob3JpdHlSZXZvY2F0aW9uTGlzdDtiaW5hcnk/ +YmFzZT9vYmplY3RjbGFzcz1jUkxEaXN0cmlidXRpb25Qb2ludIYraHR0cDovL3d3dy5jZXJ0LmZu +bXQuZXMvY3Jscy9BUkxGTk1UUkNNLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAo2bsQ2xLDcyodieq +jd+uy/lfxDw/MbrAq/ZaNFkIlcypUYamOM4vrm5rz8oLjPCoLkJ48P+nP08Gkcl5Q6q6VFcZLia+ +U3gfHXrkyqToQlrtViGCGH3xA4u56XtMHGXSdk9vQ0yDnW5f7bUEkp+uvcKewrOvNcpbIAgD4eU7 +gdOS0w7BagcFRBgTKBw2s3z73fRZtouJg/atmWYtXbBsfNjph+pCh+h5sbSyZUVzO5AemyjpYYYN +MWDQrTXq+7O8zIPuPaNESjEexuzn+VjHG90RlUK1LygARi+Ir0opD2w6erb/hK8Eea7MFdKQ2ASq +NBGJggNo5vfPVvjHiL+Antmh7mQSKL+4YwFU64d4KK9k0C1mbJethDQFKcjTK1vMvnXFiupsIuyT +qwKauo7u2zMKzY4r3VYOW9TpMyLPFIY8pII5GyNzXlL0F4nscOvduTEPEYqxeNJfpDDPY/DO8Wfx +gdRTy2W3D/UoAulb+Y+nuzGGCtFQrsSMQX487R+aY0nWot/hajef6BcPuxhDfQrg5IafrISVmcJA +plb3tXhh0sz7RbYz6jf1bke4eU5fnrTMtGlVteUL2vjrfUPHW07kBJuaQ7sxORNV3bpHisOnHj+A +riQzCn5vINpSHW6hTm7IfRkbltu/aQrsMuUhP7HE/v+uXe5CuboV5ubZhHU= +-----END CERTIFICATE----- + +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNVBAYT +AkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTAeFw0wODEw +MjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJD +TTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBALpxgHpMhm5/yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcf +qQgfBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAzWHFctPVr +btQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxFtBDXaEAUwED653cXeuYL +j2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z374jNUUeAlz+taibmSXaXvMiwzn15Cou +08YfxGyqxRxqAQVKL9LFwag0Jl1mpdICIfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mw +WsXmo8RZZUc1g16p6DULmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnT +tOmlcYF7wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peSMKGJ +47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2ZSysV4999AeU14EC +ll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMetUqIJ5G+GR4of6ygnXYMgrwTJbFaa +i0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FPd9xf3E6Jobd2Sn9R2gzL+HYJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1o +dHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD +nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1RXxlDPiyN8+s +D8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYMLVN0V2Ue1bLdI4E7pWYjJ2cJ +j+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrT +Qfv6MooqtyuGC2mDOL7Nii4LcK2NJpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW ++YJF1DngoABd15jmfZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7 +Ixjp6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp1txyM/1d +8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B9kiABdcPUXmsEKvU7ANm +5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wokRqEIr9baRRmW1FMdW4R58MD3R++Lj8UG +rp1MYp3/RgT408m2ECVAdf4WqslKYIYvuu8wd+RU4riEmViAqhOLUTpPSPaLtrM= +-----END CERTIFICATE----- diff --git a/pms_l10n_es/views/pms_property_views.xml b/pms_l10n_es/views/pms_property_views.xml index 58bbda1dc..ab0646f9f 100644 --- a/pms_l10n_es/views/pms_property_views.xml +++ b/pms_l10n_es/views/pms_property_views.xml @@ -8,11 +8,11 @@ - - - - - + + + + + diff --git a/pms_l10n_es/wizards/traveller_report.py b/pms_l10n_es/wizards/traveller_report.py index 0ab88579a..5ca84197e 100644 --- a/pms_l10n_es/wizards/traveller_report.py +++ b/pms_l10n_es/wizards/traveller_report.py @@ -1,11 +1,13 @@ import base64 import datetime +import io from datetime import date -from odoo.modules.module import get_module_resource import requests from odoo import _, fields, models +from odoo.exceptions import ValidationError +from odoo.modules.module import get_module_resource class TravellerReport(models.TransientModel): @@ -17,150 +19,151 @@ class TravellerReport(models.TransientModel): txt_message = fields.Char() def generate_file(self): - date_start = str(date.today()) + " 0:00:00" - date_end = str(date.today()) + " 23:59:59" - lines = self.env["pms.checkin.partner"].search( - [ - ("state", "=", "onboard"), - ("arrival", ">=", date_start), - ("arrival", "<=", date_end), - ] - ) - if not lines: - return + + # get the active property pms_property = self.env["pms.property"].search( [("id", "=", self.env.user.get_active_property_ids()[0])] ) - if pms_property.police_number and pms_property.name: - content = ( - "1|" - + pms_property.police_number.upper() - + "|" - + pms_property.name.upper() + + # build content + content = self.generate_checkin_list(pms_property.id) + + # get next sequence + sequence_num = self.env["ir.sequence"].next_by_code("traveller.report.wizard") + + # file creation + txt_binary = self.env["traveller.report.wizard"].create( + { + "txt_filename": pms_property.institution_property_id + + "." + + sequence_num, + "txt_binary": base64.b64encode(str.encode(content)), + "txt_message": content, + } + ) + return { + "name": _("Download File"), + "res_id": txt_binary.id, + "res_model": "traveller.report.wizard", + "target": "new", + "type": "ir.actions.act_window", + "view_id": self.env.ref("pms_l10n_es.traveller_report_wizard").id, + "view_mode": "form", + "view_type": "form", + } + + def generate_checkin_list(self, property_id): + + # check if there's guests info pending to send + if ( + self.env["pms.checkin.partner"].search_count( + [ + ("state", "=", "onboard"), + ("arrival", ">=", str(date.today()) + " 0:00:00"), + ("arrival", "<=", str(date.today()) + " 23:59:59"), + ] ) - content += "|" - content += datetime.datetime.now().strftime("%Y%m%d|%H%M") - content += "|" + str(len(lines)) + == 0 + ): + raise ValidationError(_("There's no guests info to send")) + else: + + # get the active property + pms_property = self.env["pms.property"].search([("id", "=", property_id)]) + + # check if the GC configuration info is properly set + if not ( + pms_property.name + and pms_property.institution_property_id + and pms_property.institution_user + and pms_property.institution_password + ): + raise ValidationError( + _("Check the GC configuration to send the guests info") + ) + else: + # get checkin partners info to send + lines = self.env["pms.checkin.partner"].search( + [ + ("state", "=", "onboard"), + ("arrival", ">=", str(date.today()) + " 0:00:00"), + ("arrival", "<=", str(date.today()) + " 23:59:59"), + ] + ) + + # build the property info record + # 1 | property id | property name | date | nº of checkin partners + + content = ( + "1|" + + pms_property.institution_property_id.upper() + + "|" + + pms_property.name.upper() + + "|" + + datetime.datetime.now().strftime("%Y%m%d|%H%M") + + "|" + + str(len(lines)) + + "\n" + ) + + # build each checkin partner line's record + # 2|DNI nº|Doc.number|doc.type|exp.date|lastname|lastname2|name|... + # ...gender|birthdate|nation.|checkin + for line in lines: - if line.document_type == "D": - content += "\n2|" + line.document_number.upper() + "||" + content += "2" + # [P|N|..] + if line.document_type != "D": + content += "||" + line.document_number.upper() + "|" else: - content += "\n2||" + line.document_number.upper() + "|" + content += "|" + line.document_number.upper() + "||" content += line.document_type + "|" content += line.document_expedition_date.strftime("%Y%m%d") + "|" content += line.lastname.upper() + "|" if line.lastname2: - content += line.lastname2.upper() - content += "|" + line.firstname.upper() + "|" + content += line.lastname2.upper() + "|" + content += line.firstname.upper() + "|" if line.gender == "female": content += "F|" else: content += "M|" content += line.birthdate_date.strftime("%Y%m%d") + "|" - # REVIEW: nationality_id must be nationality content += line.nationality_id.name.upper() + "|" - content += line.arrival.strftime("%Y%m%d") + "|" - sequence_num = self.env["ir.sequence"].next_by_code( - "traveller.report.wizard" - ) - txt_binary = self.env["traveller.report.wizard"].create( - { - "txt_filename": pms_property.police_number + "." + sequence_num, - "txt_binary": base64.b64encode(str.encode(content)), - "txt_message": content, - } - ) - return { - "name": _("Download File"), - "res_id": txt_binary.id, - "res_model": "traveller.report.wizard", - "target": "new", - "type": "ir.actions.act_window", - "view_id": self.env.ref("pms_l10n_es.traveller_report_wizard").id, - "view_mode": "form", - "view_type": "form", - } + content += line.arrival.strftime("%Y%m%d") + "\n" - def send_guardia_civil_report(self): - # TODO: Review this + return content + + def send_file_gc(self): + # get the active property pms_property = self.env["pms.property"].search( [("id", "=", self.env.user.get_active_property_ids()[0])] ) - user = pms_property.police_user - password = pms_property.police_pass - headers = {'Content-Type': 'multipart/form-data;'} - date_start = str(date.today()) + " 0:00:00" - date_end = str(date.today()) + " 23:59:59" - lines = self.env["pms.checkin.partner"].search( - [ - ("state", "=", "onboard"), - ("arrival", ">=", date_start), - ("arrival", "<=", date_end), - ] - ) - content = ( - "1|" - + pms_property.police_number.upper() - + "|" - + pms_property.name.upper() - ) - content += "|" - content += datetime.datetime.now().strftime("%Y%m%d|%H%M") - content += "|" + str(len(lines)) - for line in lines: - if line.document_type == "D": - content += "\n2|" + line.document_number.upper() + "||" - else: - content += "\n2||" + line.document_number.upper() + "|" - content += line.document_type + "|" - content += line.document_expedition_date.strftime("%Y%m%d") + "|" - content += line.lastname.upper() + "|" - if line.lastname2: - content += line.lastname2.upper() - content += "|" + line.firstname.upper() + "|" - if line.gender == "female": - content += "F|" - else: - content += "M|" - content += line.birthdate_date.strftime("%Y%m%d") + "|" - content += line.nationality_id.name.upper() + "|" - content += line.arrival.strftime("%Y%m%d") + "|" + # get next sequence to send + sequence_num = self.env["ir.sequence"].next_by_code("traveller.report.wizard") - sequence_num = self.env["ir.sequence"].next_by_code( - "traveller.report.wizard" - ) - txt_binary = self.env["traveller.report.wizard"].create( - { - "txt_filename": pms_property.police_number + "." + sequence_num, - "txt_binary": base64.b64encode(str.encode(content)), - "txt_message": content, - } - ) - # print(txt_binary.content) + # generate content to send + f = io.StringIO(self.generate_checkin_list(pms_property.id)) - import io - f = io.StringIO( - content - ) - - # file_object = get_module_resource('pms_l10n_es', 'static', 'cert.pem') session = requests.Session() - # a = requests.Request( - # 'POST', - # url="https://28000JAM22:ESB01642958@hospederias.guardiacivil.es/hospederias/servlet/ControlRecepcionFichero", - # # data=f, - # files={'file': ('28000JAM22.169', f, 'application/octet-stream')}, - # # verify=get_module_resource('pms_l10n_es', 'static', 'cert.pem'), - # # headers={'Content-Type': "multipart/form-data"} - # ) - # # pre = a.prepare() - # fff = 0 - # - a = session.post( - url="https://28000JAM22:ESB01642958@hospederias.guardiacivil.es/hospederias/servlet/ControlRecepcionFichero", - files={'file': ('28000JAM22.169', f, 'application/octet-stream')}, - verify=get_module_resource('pms_l10n_es', 'static', 'cert.pem'), - # headers={'Content-Type': "multipart/form-data"} + + # send info to GC + response = session.post( + url="https://" + + pms_property.institution_user + + ":" + + pms_property.institution_password + + "@hospederias.guardiacivil.es/hospederias/servlet/" + "ControlRecepcionFichero", + files={ + "file": ( + pms_property.institution_user + "." + sequence_num, + f, + "application/octet-stream", + ) + }, + verify=get_module_resource("pms_l10n_es", "static", "cert.pem"), ) - print(a) + # if the response is not ok raise validation error + if response.content != b"CORRECTO\r\n": + raise ValidationError(response.content.decode()) diff --git a/pms_l10n_es/wizards/traveller_report.xml b/pms_l10n_es/wizards/traveller_report.xml index ab47cd40c..4f1def141 100644 --- a/pms_l10n_es/wizards/traveller_report.xml +++ b/pms_l10n_es/wizards/traveller_report.xml @@ -8,24 +8,24 @@