Skip to content
Extraits de code Groupes Projets
Valider 8869a952 rédigé par Benjamin - Le Filament's avatar Benjamin - Le Filament
Parcourir les fichiers

[delete] migration API in other module

parent 1c1e08c4
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import controllers
from . import models from . import models
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
"author": "Le Filament", "author": "Le Filament",
"license": "AGPL-3", "license": "AGPL-3",
"application": False, "application": False,
"depends": ['cgscop_partner', 'auth_api_key'], "depends": ['cgscop_partner'],
"data": [ "data": [
"security/security_rules.xml", "security/security_rules.xml",
"security/ir.model.access.csv", "security/ir.model.access.csv",
......
# © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import main
# © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import json
import time
from odoo import http
from odoo.http import request
class ApiTantiemo(http.Controller):
@http.route(['/api/tantiemo', '/api/tantiemo/<int:partner>'],
type="http", auth="api_key", method=['GET'],
csrf=False)
def get_partner(self, partner=None):
"""
Retourne la lise des coopératives adhérentes ou radiées sur une année
glissante selon la spécification pour Tantiemo
"""
partner_condition = ''
if partner:
partner_condition = 'AND id = %s' % (partner,)
query = """
SELECT array_to_json(array_agg(row_to_json(t)))
FROM (
SELECT
name AS "scopName",
COALESCE((SELECT name from res_partner_company_type WHERE id = partner.partner_company_type_id), '') AS "scopSocialForm",
member_number_int AS "scopAdherentId",
id AS "scopOdooId",
(
SELECT json_strip_nulls(row_to_json(status))
FROM (
SELECT
CASE membership_status
WHEN 'member' THEN 'Adherent'
WHEN 'not_member' THEN 'NoAdherent'
WHEN 'out' THEN 'Excluded'
END "tag",
CASE
WHEN last_period.end IS NOT NULL THEN
ARRAY[last_period.end::TEXT,(SELECT name FROM scop_membership_reason_end WHERE id = last_period.end_reason_id)]
ELSE null
END "contents"
FROM
res_partner
WHERE
id = partner.id
) status
) as "scopStatus",
CASE
WHEN dissolution_date is not null THEN ARRAY[dissolution_date::TEXT, (SELECT name from res_partner_dissolution_reason WHERE id = partner.dissolution_reason_id)]
ELSE
'{}'
END "scopDisparition",
(
SELECT row_to_json(contact)
FROM (
SELECT
COALESCE(sigle, '') AS "contactSigle",
CONCAT_WS(' ', street, street2, street3, zip, city, cedex) as "contactAddress",
COALESCE(zip_departement, '') as "contactDepartment",
COALESCE((SELECT name from res_country_state WHERE id = partner.region), '') AS "contactRegion",
COALESCE(phone, '') AS "contactTel1",
COALESCE(mobile, '') AS "contactTel2",
COALESCE(email, '') AS "contactEmail",
COALESCE(website, '') AS "contactWeb"
FROM
res_partner
WHERE
id = partner.id
) contact
) as "scopContact",
(
SELECT row_to_json(suivi)
FROM (
SELECT
COALESCE((SELECT name from union_regionale WHERE id = partner.ur_id), '') AS "suiviUR",
COALESCE((SELECT name from res_users WHERE id = partner.followup_delegate_id), '') AS "suiviDelegate",
COALESCE((SELECT name from res_users WHERE id = partner.support_delegate_id), '') AS "suiviDelegate2",
COALESCE((
SELECT string_agg(list.name, ', ')
FROM res_partner_res_partner_segment1_rel as rel
LEFT JOIN res_partner_segment1 AS list ON list.id = rel.segment_id
WHERE rel.partner_id = partner.id
), '') as "suiviSegmentation",
COALESCE((
SELECT string_agg(list.name, ', ')
FROM res_partner_res_partner_filiere_rel as rel
LEFT JOIN res_partner_filiere AS list ON list.id = rel.filiere_id
WHERE rel.partner_id = partner.id
), '') as "suiviSector",
COALESCE((SELECT name from ur_financial_system WHERE id = partner.ur_financial_system_id), '') AS "suiviFinancialFacility"
FROM
res_partner
WHERE
id = partner.id
) suivi
) as "scopSuiviUR",
(
SELECT row_to_json(activity)
FROM (
SELECT
COALESCE((SELECT name from res_partner_creation_origin WHERE id = partner.creation_origin_id), '') AS "activityOrigin",
COALESCE((SELECT name from res_partner_creation_origin WHERE id = partner.creation_suborigin_id), '') AS "activitySuborigin",
date_1st_sign AS "activityImmatDate",
registration_date AS "activityImmatRCS",
COALESCE(social_object, '') AS "activityName",
COALESCE((SELECT name from res_partner_naf WHERE id = partner.naf_id), '') AS "activityNAF",
COALESCE((
SELECT array_agg(list.name) FROM res_partner_res_partner_certification_rel as rel
LEFT JOIN res_partner_certification AS list ON list.id = rel.res_partner_certification_id
WHERE rel.res_partner_id = partner.id
), '{}') as "activityAgreement",
siret AS "activitySIRET",
SUBSTRING(siret, 1, 11) AS "activitySIREN",
COALESCE(capital, 0) AS "activityCapital",
first_closeout as "activityReportDate",
closeout_month - 12841 AS "activityExoMonth",
is_seed_scop AS "activityInitiation",
is_incubated AS "activityIncubation",
COALESCE(staff_last, 0) AS "activityWorkforce",
staff_last_date AS "activityWorkfoceDate"
FROM
res_partner
WHERE
id = partner.id
) activity
) as "scopActivity",
COALESCE((
SELECT array_to_json(array_agg(row_to_json(staff)))
FROM (
SELECT
effective_date AS "staffDate",
CASE type_entry
WHEN 'questionnaire' THEN 'Questionnaire'
WHEN 'questionnaire_inscription' THEN 'Questionnaire Inscription'
WHEN 'regul_ur' THEN 'Régularisation UR'
WHEN 'regul_cg' THEN 'Régularisation CG'
WHEN 'regul_diane' THEN 'Régularisation Diane'
ELSE ''
END "staffType",
staff_count AS "staffEmployees",
staff_shareholder_count AS "staffCorporate",
staff_average AS "staffFullTime",
COALESCE(comment, '') AS "staffComment"
FROM
scop_partner_staff
WHERE
partner_id = partner.id
) staff
), '[]'::JSON) as "scopStaffHistory",
COALESCE((
SELECT array_to_json(array_agg(row_to_json(c)))
FROM (
SELECT
COALESCE((SELECT value from ir_translation WHERE name = 'res.partner.title,name' AND type = 'model' AND lang = 'fr_FR' AND res_id = contact.title), '') AS "executiveTitle",
COALESCE(firstname, '') as "executiveFirstName",
COALESCE(lastname, '') as "executiveLastName",
COALESCE(email, '') as "executiveEmail",
COALESCE(phone, '') as "executivePhone",
COALESCE(mobile, '') as "executiveMobile",
COALESCE((
SELECT array_agg(list.name) FROM res_partner_res_partner_category_rel as rel
LEFT JOIN res_partner_category AS list ON list.id = rel.category_id
WHERE rel.partner_id = contact.id
), '{}') as "executiveLabels",
COALESCE((SELECT name from res_partner_mandate WHERE id = contact.mandate_id), '') AS "executivePosition",
COALESCE((SELECT name from res_partner_function_lst WHERE id = contact.function_lst_id), '') AS "executivePost",
COALESCE(function, '') as "executiveRoles",
employee as "executiveIsEmployee",
CASE associate
WHEN 'asso' THEN 'Associé extérieur'
WHEN 'coop' THEN 'Associé coopérateur'
WHEN 'none' THEN 'Non associé'
ELSE ''
END "executivePartner",
birthYear as "executiveBirthYear",
COALESCE((SELECT name from res_partner_rgpd_origin WHERE id = contact.contact_origin_id), '') AS "executiveContactOrigin",
COALESCE((SELECT name from res_users WHERE id = contact.followup_delegate_id), '') AS "executiveDelegate",
COALESCE((SELECT name from union_regionale WHERE id = contact.ur_id), '') AS "executiveUR"
FROM
res_partner as contact
WHERE
parent_id = partner.id AND
type = 'contact' AND
mandate_id is not null
) c
), '[]'::JSON) as "scopExecutives",
COALESCE((
SELECT array_to_json(array_agg(row_to_json(liasse)))
FROM (
SELECT
COALESCE(year, 0) as "reportYear",
COALESCE("L2052_FL", 0) as "reportTurnover",
COALESCE("L2052_GG", 0) as "reportOperating",
COALESCE("L2053_HN", 0) as "reportNetIncome",
COALESCE("daim", 0) as "reportDepreciationCharge",
COALESCE("L2051_DL", 0) as "reportOwnFunds",
-- reportIndebted :: Scientific -- ENDETTEMENT
-- reportNetPosition :: Scientific -- SITUATION NET
0 as "reportIndebted",
0 as "reportNetPosition",
COALESCE("L2050_GJ", 0) as "reportFinalBalance",
(
SELECT row_to_json(exo)
FROM (
SELECT
"L2050_DCLO" as "exoEnd",
"dureeExercice" as "exoDuration"
WHERE
"L2050_DCLO" IS NOT NULL AND
"dureeExercice" > 0 AND
id = liasse.id
) exo
) as "reportExo",
CASE type_id
WHEN 'lm' THEN 'Liste Ministère'
WHEN 'one_off' THEN 'Ponctuelle'
WHEN 'diane' THEN 'Diane'
WHEN 'survey_adjust' THEN 'Ajustement études'
ELSE ''
END "reportContext",
CASE source
WHEN 'manual' THEN 'SaisieManuelle'
WHEN 'inovatic_api' THEN 'APIInovatic'
WHEN 'xml' THEN 'ChargementXML'
WHEN 'riga' THEN 'ImportRIGA'
ELSE ''
END "reportSource"
FROM
scop_liasse_fiscale as liasse
WHERE
partner_id = partner.id AND
year > year - 5 AND
type_id != 'forecast' AND
revenue_cg > 0
ORDER BY year DESC
) liasse
), '[]'::JSON) as "scopReports"
FROM
res_partner as partner
INNER JOIN (
SELECT
max(start) as start,
partner_id
FROM
scop_membership_period
WHERE
type_id = 1
GROUP BY
partner_id
) periods
ON
periods.partner_id = partner.id
INNER JOIN (
SELECT
start,
"end",
partner_id,
end_reason_id
FROM
scop_membership_period
WHERE
type_id = 1
) last_period
ON
last_period.partner_id = partner.id AND last_period.start = periods.start
WHERE
is_company = true AND
is_cooperative = true AND
membership_status in ('member', 'out') AND
(last_period."end" is null OR last_period."end" > NOW() - INTERVAL '1 YEAR')
%s
) t;
""" % (partner_condition,)
request._cr.execute(query)
datalist = request._cr.fetchall()
if not datalist[0][0]:
return http.Response(
response=json.dumps([]),
headers=[('Content-Type', 'application/json')]
)
return http.Response(
response=json.dumps(datalist[0][0]),
headers=[('Content-Type', 'application/json')]
)
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter