Deployment

Installazione di una nuova release

  1. Collegarsi in ssh a 3152857630:

    localhost$ ssh admin@terraform.exhibitio.net
  2. Entrare nella cartella /opt/exhibitio.ws:

    terraform$ cd /opt/exhibitio.ws
  3. Impostare la versione editando ./cfg/terraform.tfvars:

    terraform$ sed -re 's/(odoo_addons_version =).*/\1 "NUMERO_VERSIONE"/' -i \
                   ./cfg/terraform.tfvars
  4. Preparare il plan di build e verificare l’output:

    terraform$ ./bin/plan build

    Le uniche azioni di modifica dovrebbero riguardare i seguenti target:

    • run_command.odoo

    • module.docker_build_odoo.run_command.docker_build

  5. Lanciare la build

    terraform$ ./bin/apply build
  6. Preparare il plan di aggiornamento dei servizi di staging e verificare l’output:

    terraform$ ./bin/plan services -target aws_ecs_service.odoo_stg

    Le uniche azioni di modifica dovrebbero riguardare i seguenti target:

    • aws_ecs_service.odoo_stg

    • aws_ecs_task_definition.odoo_stg

  7. Lanciare l’aggiornamento

    terraform$ ./bin/apply services
  8. Verificare che l’aggiornamento sia andato a buon fine.

  9. Preparare il plan di aggiornamento dei servizi di produzione e verificare l’output:

    terraform$ ./bin/plan services -target aws_ecs_service.odoo

    Le uniche azioni di modifica dovrebbero riguardare i seguenti target:

    • aws_ecs_service.odoo

    • aws_ecs_task_definition.odoo

  10. Lanciare l’aggiornamento:

    terraform$ ./bin/apply services
  11. Se è tutto in regola, committare la modifica ed inviarla al repository:

    terraform$ git commit -a -m "New odoo release <NUOVA VERSIONE>"
    ...(omissis)...
    terraform$ git push origin master
    ...(omissis)...

    Viceversa, in caso di problemi, recuperare la versione precedente con:

    terraform$ git reset --hard HEAD

    E infine ripertere i passaggi dal 6 al 10.

Legacy

Abbinamento project.project (Odoo) → Commesse (GiNet)

Alcuni Project presenti su Odoo vengono abbinati alle Commesse GiNet tramite una collezione di collegamento. Il criterio di abbinamento è:

  1. la collezione di collegamento contiene la lista degli Account Analytic Tag collegati a ciascuna Commessa GiNet;

  2. sono quindi abbinati alla Commessa GiNet tutti i Project di Odoo che sono taggati con i suddetti Account Analytic Tag;

  3. per ciascuna commessa presente nella collezione di collegamento è specificato l’id di un’Area GiNet.

Sincronizzazione res.partner (Odoo) → Espositori (GiNet)

I Partner sono sincronizzati con le Commesse usando i seguenti criteri:

  1. i Partner sono marcati come Espositori;

  2. i Partner sono impostati come Customer di un Project;

  3. il Project è abbinato ad una Commessa tramite l’apposita collezione.

Da cui conseguono i seguenti trigger:

Table Action Result

account_analytic_account_tag_rel

INSERT / UPDATE

Estrarre Projects → Verificare Abbinamento → Aggiornare Partner

account_analytic_account

INSERT / UPDATE

Estrarre Projects → Verificare Abbinamento → Aggiornare Partner

project_project

INSERT / UPDATE

Verificare Abbinamento → Aggiornare Partner

res_partner

INSERT / UPDATE

Estrarre Project → Verificare Abbinamento → Aggiornare Partner

Mappatura campi res.partner (Odoo) → Espositori (GiNet)

GiNet Odoo Type Note

IDEspositore

NULL

int IDENTITY(1,1) NOT NULL

IDCliente

NULL

int NULL

No update

Padiglione

public.crm_lead.pavillion

nvarchar(10) NULL

Corsia

public.crm_lead.aisle

nvarchar(10) NULL

Posteggio

public.crm_lead.place

nvarchar(10) NULL

mq

?

real NULL

IDFormatoStand

NULL

int NULL

No update

NoteFrontalino

NULL

nvarchar(1000) NULL

No update

NoteAllestimento

NULL

nvarchar(1000) NULL

No update

Frontalino

NULL

nvarchar(150) NULL

No update

RagSoc

public.res_partner.name

nvarchar(150) NULL

tel

public.res_partner.phone

nvarchar(50) NULL

fax

NULL

nvarchar(50) NULL

No update

email

public.res_partner.email

nvarchar(50) NULL

PI

public.res_partner.vat

nchar(13) NULL

Indirizzo

public.res_partner.street

nvarchar(150) NULL

Localita

public.res_partner.city

nvarchar(150) NULL

Prov

public.res_country_state.code

nchar(2) NULL

CAP

public.res_partner.zip

nchar(5) NULL

NumScritte

NULL

tinyint NULL

No update

LatiLiberi

NULL

tinyint NULL

No update

NoteVarie

NULL

nvarchar(1000) NULL

No update

Citta

public.res_partner.city

nvarchar(80) NULL

timestamp

NULL

timestamp NULL

No update

IDArea

ginet_area_id

int NOT NULL

IDDimensioniStand

?

int NULL

Personalizzato

0

bit NOT NULL

No update

Completo

0

bit NOT NULL

No update

CodFisc

?

nchar(30) NULL

Username

NULL

nvarchar(50) NULL

No update

Password

NULL

nvarchar(50) NULL

No update

Referente

public.crm_lead.contact_name

nvarchar(50) NULL

TelReferente

public.crm_lead.mobile

nvarchar(30) NULL

emailReferente

public.crm_lead.email_from

nvarchar(50) NULL

LettoConferma

0

bit NOT NULL

No update

IDSchedaPersonale

NULL

int NULL

No update

IDSchedaGenerale

NULL

int NULL

No update

ChiaveUnica

NULL

nvarchar(20) NULL

No update

VSRiferimento

NULL

nvarchar(80) NULL

No update

ModPagamento

NULL

varchar(7) NULL

No update

Cellulare

public.res_partner.mobile

nvarchar(50) NULL

SchedaInviata

0

bit NOT NULL

No update

SchedaRicevuta

0

bit NOT NULL

No update

CittaFrontalino

NULL

varchar(60) NULL

No update

TipoIVA

practor_tiva

int NULL

CodCF

NULL

varchar(15) NULL

No update

Nazione

public.res_country.code

varchar(3) NULL

LatoChiusoSopra

(public.crm_lead.stand_type = "lane" OR public.crm_lead.stand_type = "head")

bit NULL

LatoChiusoSotto

NULL

bit NULL

No update

LatoChiusoDestra

(publc.crm_lead.stand_type = "lane" OR public.crm_lead.stand_type = "right")

bit NULL

LatoChiusoSinistra

(publc.crm_lead.stand_type = "lane" OR public.crm_lead.stand_type = "left")

bit NULL

LatoChiusoNessuno

public.crm_lead.stand_type = "isle"

bit NULL

IDEspositoreEsterno

"odoo:" + public.project_project.id

varchar(50) NULL

IDSettoreMerceologico

NULL

int NULL

No update

Zona

NULL

varchar(10) NULL

No update

ColonnaCoordX

NULL

smallint NULL

No update

ColonnaCoordY

NULL

smallint NULL

No update

IDDimensioniColonna

NULL

smallint NULL

No update

ColonnaDimY

NULL

smallint NULL

No update

IDOpCRM

NULL

int NULL

No update

IDStatus

NULL

int NULL

No update

DataOraUltimaModifica

public.res_partner.write_date

smalldatetime NULL

PubblicazioneWeb

0

bit NULL

No update

Sincronizzazione stock.move (Odoo) → ArticoliEspositori (GiNet)

Le Stock Move sono sincronizzate con la lista degli Articoli ordinati da un Espositore utilizzando i seguenti criteri:

  1. la Stock Move è abbinata ad una Sale Order Line che è abbinata ad un Sale Order che è abbinato ad un Project;

  2. la Stock Move è abbinata ad uno Stock Picking che è in stato Pronto (ready) o in stato Annullato (cancel);

  3. il Project è abbinato ad una Commessa tramite l’apposita collezione.

  4. la somma di tutte le quantità delle Stock Move in stato Pronto è aggiunta al relativo record di ArticoliEspositori;

  5. la somma di tutte le quantità delle Stock Move in stato Annullato è sottratta al relativo record di ArticoliEspositori. Da cui conseguono i seguenti trigger:

Table Action Result

stock_move

INSERT / UPDATE

Estrarre Stock Move → Verificare Abbinamento → Aggiornare Partner

sale_order_line

INSERT / UPDATE

Estrarre Stock Move → Verificare Abbinamento → Aggiornare Partner

sale_order

INSERT / UPDATE

Estrarre Stock Move → Verificare Abbinamento → Aggiornare Partner

account_analytic_account_tag_rel

INSERT / UPDATE

Estrarre Stock Move → Verificare Abbinamento → Aggiornare Partner

account_analytic_account

INSERT / UPDATE

Estrarre Stock Move → Verificare Abbinamento → Aggiornare Partner

project_project

INSERT / UPDATE

Estrarre Stock Move → Verificare Abbinamento → Aggiornare Partner

res_partner

INSERT / UPDATE

Estrarre Stock Move → Verificare Abbinamento → Aggiornare Partner

Mappatura campi stock.move (Odoo) → ArticoliEspositore (GiNet)

GiNet Odoo Type Note

IDArticoloEspositori

NULL

int IDENTITY(1,1) NOT NULL

IDArticolo

public.product_product

int NOT NULL

Tipo

map(ARREDO=A,G=GRAFICA,I=IMPIANTO ELETTRICO,O=STRUTTURA,S=SERVIZI,T=TECNOLOGIE)

char(1) NULL

Sconto

public.sale_order_line.discount

real NULL

Prezzo

public.sale_order_line.price_unit

smallmoney NULL

FattFiera

-1

bit NOT NULL

FattGI

0

bit NOT NULL

FattOmaggio

0

bit NOT NULL

FattAltro

0

bit NOT NULL

DataCreazione

public.stock_move.create_date

smalldatetime NOT NULL

Qta

public.sale_order_line.product_uom_qty

int NULL

IDEspositore

public.ginet_espositore_id

int NOT NULL

UM

public.product_uom.name

char(2) NULL

Nota

NULL

nvarchar(150) NULL

Dimensioni

NULL

nvarchar(20) NULL

IDConfermaOrdine

NULL

int NULL

Path

NULL

varchar(200) NULL

timestamp

NULL

timestamp NULL

NotaGiprint

NULL

varchar(150) NULL

Base

NULL

decimal(10, 2) NULL

Altezza

NULL

decimal(10, 2) NULL

mq

NULL

decimal(10, 2) NULL

Costo

NULL

smallmoney NULL

Allegato

NULL

char(1) NULL

DataConsegna

NULL

smalldatetime NULL

OraConsegna

NULL

datetime NULL

Abbinamento res.company (Odoo) → ana_azie (Practor)

Alcune Company presenti su Odoo vengono abbinate alle Aziende di Practor qualora abbiano la medesima VAT (res.company.vat ⇒ ana_azie.azie_partiva).

Abbinamento res.partner (Odoo) → sma_enan (Practor)

Alcuni Partner presenti su Odoo vengono abbinati ai Clienti/Fornitori di Practor qualora abbiano:

  1. la medesima VAT (res.company.vat ⇒ ana_azie.azie_partiva); e

  2. la medesima Company di riferimento.

Abbinamento event.event (Odoo) → sma_cmte (Practor)

Alcun Eventi presenti su Odoo vengono abbinati alle Commesse di Practor qualora abbiano il medesimo codice a 5 cifre.

Abbinamento product.template (Odoo) → sma_

Reset procedure

Kibana (/kibana.exhibitio.ws)

  1. Dev Tools: DELETE /_all

Nifi (/nifi.exhibitio.ws/nifi)

  1. Exhibitio Integration → Ginet → ETL Ginet→ElasticSearch: Stoppare gruppo

  2. Exhibitio Integration → GiNet → ETL Ginet→ElasticSearch → ETL Ginet Commesse: Resettare stato "Export GiNet Table"

  3. Exhibitio Integration → GiNet → ETL Ginet→ElasticSearch → ETL Ginet Aree: Resettare stato "Export GiNet Table"

  4. Exhibitio Integration → GiNet → ETL Ginet→ElasticSearch → ETL Ginet Articoli: Resettare stato "Export GiNet Table"

  5. Exhibitio Integration → GiNet → ETL Ginet→ElasticSearch → ETL Ginet Espositori: Resettare stato "Export GiNet Table"

  6. Exhibitio Integration → GiNet → ETL Ginet→ElasticSearch → ETL Ginet ClientiFornitori: Resettare stato "Export GiNet Table"

  7. Exhibitio Integration → GiNet → ETL Ginet→ElasticSearch → ETL Ginet DimensioniStand: Resettare stato "Export GiNet Table"

  8. Exhibitio Integration → GiNet → ETL Ginet→ElasticSearch → ETL Ginet Nazioni: Resettare stato "Export GiNet Table"

  9. Exhibitio Integration → Ginet → ETL Ginet→ElasticSearch: Riattivare gruppo

PostgreSQL

  1. INSERT INTO audit.log (schema_name, table_name, change_type, key_a_id) SELECT 'public' AS schema_name, 'project_project' AS table_name, 'UPDATE' as change_type, id AS key_a_id FROM public.project_project;

Odoo User Guide

Project Insert Checklist

  1. Is Partner marked as Exhibitor?

  2. Is Project mapped to a Partner?

  3. Is Project mapped to an Opportunity?