mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-23 00:32:03 +02:00
64 lines
2.1 KiB
Python
64 lines
2.1 KiB
Python
# Copyright 2011-2012 Nicolas Bessi (Camptocamp SA)
|
|
# Copyright 2023 ACSONE SA/NV
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
from odoo import fields, models
|
|
|
|
|
|
class NPA(models.Model):
|
|
|
|
"""GEO OSV SAMPLE"""
|
|
|
|
_name = "dummy.zip"
|
|
_description = "Geoengine demo ZIP"
|
|
|
|
priority = fields.Integer(default=100)
|
|
name = fields.Char("ZIP", index=True, required=True)
|
|
city = fields.Char(index=True, required=True)
|
|
the_geom = fields.GeoMultiPolygon("NPA Shape")
|
|
# the_geom_poly = fields.GeoPolygon()
|
|
# the_geom_multiLine = fields.GeoMultiLine()
|
|
# the_geom_multipoint = fields.GeoMultiPoint()
|
|
total_sales = fields.Float(
|
|
compute="_compute_ZIP_total_sales",
|
|
string="Spatial! Total Sales",
|
|
)
|
|
retail_machine_ids = fields.One2many(
|
|
"geoengine.demo.automatic.retailing.machine",
|
|
string="Retail machines",
|
|
inverse_name="zip_id",
|
|
)
|
|
|
|
def _compute_ZIP_total_sales(self):
|
|
"""Return the total of the invoiced sales for this npa"""
|
|
mach_obj = self.env["geoengine.demo.automatic.retailing.machine"]
|
|
for rec in self:
|
|
res = mach_obj.search(
|
|
[
|
|
(
|
|
"the_point",
|
|
"geo_intersect",
|
|
{"dummy.zip.the_geom": [("id", "=", rec.id)]},
|
|
)
|
|
]
|
|
)
|
|
cursor = self.env.cr
|
|
if res.ids:
|
|
cursor.execute(
|
|
"SELECT sum(total_sales) from"
|
|
" geoengine_demo_automatic_retailing_machine "
|
|
"where id in %s;",
|
|
(tuple(res.ids),),
|
|
)
|
|
res = cursor.fetchone()
|
|
if res:
|
|
rec.total_sales = res[0] or 0.0
|
|
else:
|
|
rec.total_sales = 0.0
|
|
else:
|
|
rec.total_sales = 0.0
|
|
|
|
def name_get(self):
|
|
res = []
|
|
for rec in self:
|
|
res.append((rec.id, "%s %s" % (rec.name, rec.city)))
|
|
return res
|