Generated by Rank Math SEO, this is an llms.txt file designed to help LLMs better understand and index this website. # Consulenza, sviluppo Odoo e altro... ## Sitemaps [XML Sitemap](https://robertozanardo.com/sitemap_index.xml): Includes all crawlable and indexable pages. ## Articoli - [Plugin WooCommerce gratuito per il diritto di recesso online (art. 54-bis)](https://robertozanardo.com/blog/2026/07/02/plugin-woocommerce-diritto-di-recesso-gratuito/): Plugin WooCommerce gratuito per il pulsante di recesso obbligatorio dal 19/6/2026 (art. 54-bis). Doppia conferma, ricevuta email, flusso ospite. Scaricalo. - [Remake del gioco Qix](https://robertozanardo.com/blog/2026/06/02/remake-del-gioco-qix/): Remake del gioco Qix (fatto con Claude Code e Antigravity Google Gemini 3.1 Pro) - [Eliminare File Bloccati su Windows 11](https://robertozanardo.com/blog/2025/11/15/eliminare-file-bloccati-su-windows-11/): Hai mai provato a eliminare un file su Windows 11 e ti sei trovato di fronte a errori frustranti come "File in uso" o "Accesso negato"? È un problema comune che può bloccare il tuo flusso di lavoro, specialmente quando lavori con progetti di sviluppo o gestione file. - [Spostare la barra laterale di Odoo (chatter) con un modulo gratuito](https://robertozanardo.com/blog/2025/11/01/spostare-barra-laterale-odoo-in-basso/): Il chatter di Odoo ti occupa spazio a destra? Ti spiego come spostarlo in basso usando il modulo gratuito OCA web_responsive, valido anche per Odoo 18. - [Script SQL anonimizzazione db Odoo 14](https://robertozanardo.com/blog/2025/10/20/script-sql-anonimizzazione-db-odoo-14/): -- Odoo 14 – Anonimizzazione DB (PostgreSQL) – compatibile e safe -- Esegui su una COPIA del database. CREATE EXTENSION IF NOT EXISTS pgcrypto; -- ========================= -- Funzioni helper -- ========================= -- Email fittizia deterministica CREATE OR REPLACE FUNCTION _anon_email(p_id bigint, p_prefix text DEFAULT 'u') RETURNS text LANGUAGE sql IMMUTABLE AS $$ SELECT p_prefix || substring(encode(digest(p_id::text,'sha256'),'hex') FROM 1 FOR 10) || '@example.invalid' $$; -- Telefono fittizio deterministico CREATE OR REPLACE FUNCTION _anon_phone(p_id bigint) RETURNS text LANGUAGE sql IMMUTABLE AS $$ SELECT '+39 3' || substring(encode(digest(p_id::text,'sha256'),'hex') FROM 1 FOR 1) || ' ' || substring(encode(digest(p_id::text,'sha256'),'hex') FROM 2 FOR 8) $$; -- Nome sintetico deterministico CREATE OR REPLACE FUNCTION _anon_name(p_id bigint, p_prefix text) RETURNS text LANGUAGE sql IMMUTABLE AS $$ SELECT p_prefix || ' ' || upper(substring(encode(digest(p_id::text,'sha256'),'hex') FROM 1 FOR 8)) $$; -- VAT fittizia deterministica CREATE OR REPLACE FUNCTION _anon_vat(p_id bigint) RETURNS text LANGUAGE sql IMMUTABLE AS $$ WITH h AS (SELECT encode(digest(p_id::text,'sha256'),'hex') AS hx) SELECT 'IT' || substring(regexp_replace(hx,'\D','0','g') FROM 1 FOR 11) FROM h $$; -- Indirizzo sintetico deterministico CREATE OR REPLACE FUNCTION _anon_address(p_id bigint) RETURNS TABLE (street text, street2 text, zip text, city text, state_id int, country_id int) LANGUAGE plpgsql IMMUTABLE AS $$ DECLARE h text; BEGIN h := encode(digest(p_id::text,'sha256'),'hex'); street := 'Via ' || upper(substring(h,1,8)) || ', ' || ((p_id % 200)+1)::text; street2 := NULL; zip := lpad(((p_id % 90000) + 10000)::text, 5, '0'); city := 'Citta' || substring(h,9,4); state_id := NULL; country_id := NULL; RETURN; END $$; -- Prefisso robusto per partner: usa is_company se presente, altrimenti 'Partner' CREATE OR REPLACE FUNCTION _partner_prefix(p_id bigint) RETURNS text LANGUAGE plpgsql STABLE AS $$ DECLARE has_is_company boolean; is_comp boolean := false; BEGIN SELECT EXISTS ( SELECT 1 FROM information_schema.columns WHERE table_schema='public' AND table_name='res_partner' AND column_name='is_company' ) INTO has_is_company; IF has_is_company THEN EXECUTE 'SELECT COALESCE(is_company,false) FROM res_partner WHERE id=$1' INTO is_comp USING p_id; END IF; RETURN CASE WHEN is_comp THEN 'Company' ELSE 'Partner' END; END $$; -- ========================= -- res.partner -- ========================= UPDATE res_partner p SET name = _anon_name(p.id, _partner_prefix(p.id)), email = _anon_email(p.id, 'p'), phone = CASE WHEN p.phone IS NOT NULL THEN _anon_phone(p.id) ELSE NULL END, mobile = CASE WHEN p.mobile IS NOT NULL THEN _anon_phone(p.id+999999) ELSE NULL END, vat = CASE WHEN p.vat IS NOT NULL THEN _anon_vat(p.id) ELSE NULL END, website = NULL, function = CASE WHEN p.function IS NOT NULL THEN 'Role ' || substring(encode(digest(p.id::text,'sha256'),'hex') FROM 1 FOR 6) ELSE NULL END, comment = NULL, street = (SELECT street FROM _anon_address(p.id)), street2 = (SELECT street2 FROM _anon_address(p.id)), zip = (SELECT zip FROM _anon_address(p.id)), city = (SELECT city FROM _anon_address(p.id)), state_id = (SELECT state_id FROM _anon_address(p.id)), country_id = (SELECT country_id FROM _anon_address(p.id)) WHERE p.id != 1; -- opzionale: preserva il partner "Your Company" se è 1 -- ========================= -- res.company (compatibile) -- ========================= -- La maggior parte dei campi contatto è related al partner: l'anonimizzazione sopra basta. UPDATE res_company c SET name = _anon_name(c.id,'Company'); -- Azzeramento difensivo di colonne opzionali, solo se presenti DO $$ DECLARE col text; BEGIN FOREACH col IN ARRAY ARRAY LOOP IF EXISTS ( SELECT 1 FROM information_schema.columns WHERE table_schema='public' AND table_name='res_company' AND column_name=col ) THEN EXECUTE format('UPDATE res_company SET %I=NULL', col); END IF; END LOOP; END $$; -- ========================= -- res.users (compatibile) -- ========================= WITH keep AS ( SELECT id FROM res_users WHERE login IN ('admin','__system__') OR id IN (2) ) UPDATE res_users u SET login='user.' || substring(encode(digest(u.id::text,'sha256'),'hex') FROM 1 FOR 10), signature=NULL WHERE u.id NOT IN (SELECT id FROM keep); -- Azzeramento difensivo di colonne opzionali se esistono DO $$ DECLARE col text; BEGIN FOREACH col IN ARRAY ARRAY LOOP IF EXISTS ( SELECT 1 FROM information_schema.columns WHERE table_schema='public' AND table_name='res_users' AND column_name=col ) THEN EXECUTE format( 'UPDATE res_users SET %I=NULL WHERE id NOT IN (SELECT id FROM res_users WHERE login IN (''admin'',''__system__'') OR id IN (2))', col ); END IF; END LOOP; END $$; -- ========================= -- Mail server off -- ========================= UPDATE ir_mail_server SET active=FALSE, smtp_pass=NULL; -- ========================= -- CRM lead/opportunity -- ========================= UPDATE crm_lead l SET contact_name = CASE WHEN l.contact_name IS NOT NULL THEN _anon_name(l.id,'Contact') ELSE NULL END, email_from = CASE WHEN l.email_from IS NOT NULL THEN _anon_email(l.id,'l') ELSE NULL END, phone = CASE WHEN l.phone IS NOT NULL THEN _anon_phone(l.id) ELSE NULL END, mobile = CASE WHEN l.mobile IS NOT NULL THEN _anon_phone(l.id+777777) ELSE NULL END, street = (SELECT street FROM _anon_address(l.id)), street2 = (SELECT street2 FROM _anon_address(l.id)), city = (SELECT city FROM _anon_address(l.id)), zip = (SELECT zip FROM _anon_address(l.id)), description = NULL; -- ========================= -- HR (se presente) -- ========================= UPDATE hr_employee e SET name = _anon_name(e.id,'Employee'), work_email = _anon_email(e.id,'e'), mobile_phone = CASE WHEN e.mobile_phone IS NOT NULL THEN _anon_phone(e.id) ELSE NULL END, work_phone = NULL, identification_id = NULL, address_home_id = address_home_id WHERE EXISTS (SELECT 1 FROM pg_class WHERE relname='hr_employee'); -- ========================= -- Vendite/Acquisti/Contabilità (testi liberi) -- ========================= UPDATE sale_order SET client_order_ref=NULL, note=NULL; UPDATE purchase_order SET notes=NULL; UPDATE account_move SET narration=NULL; UPDATE account_move_line aml SET name = CASE WHEN aml.display_type IS NULL THEN 'Line ' || substring(encode(digest(aml.id::text,'sha256'),'hex') FROM 1 FOR 6) ELSE aml.name END; -- ========================= -- Messaggistica -- ========================= UPDATE mail_message SET body=NULL, email_from=NULL, message_id=NULL, reply_to=NULL; -- mail_mail – compatibile con schemi senza alcune colonne DO $$ DECLARE col text; BEGIN FOREACH col IN ARRAY ARRAY LOOP IF EXISTS ( SELECT 1 FROM information_schema.columns WHERE table_schema='public' AND table_name='mail_mail' AND column_name=col ) THEN EXECUTE format('UPDATE mail_mail SET %I = NULL', col); END IF; END LOOP; IF EXISTS ( SELECT 1 FROM information_schema.columns WHERE table_schema='public' AND table_name='mail_mail' AND column_name='state' ) THEN EXECUTE 'UPDATE mail_mail SET state = ''cancel'''; END IF; END $$; -- ========================= -- Allegati (compatibile con varianti di schema) -- ========================= DO $$ DECLARE has_res_model boolean; has_type boolean; where_expr text := '1=1'; col text; BEGIN SELECT EXISTS ( SELECT 1 FROM information_schema.columns WHERE table_schema='public' AND table_name='ir_attachment' AND column_name='res_model' ) INTO has_res_model; SELECT EXISTS ( SELECT 1 FROM information_schema.columns WHERE table_schema='public' AND table_name='ir_attachment' AND column_name='type' ) INTO has_type; IF has_res_model THEN where_expr := where_expr || ' AND res_model IN (' || quote_literal('res.partner') || ',' || quote_literal('res.company') || ',' || quote_literal('crm.lead') || ',' || quote_literal('sale.order') || ',' || quote_literal('purchase.order') || ',' || quote_literal('account.move') || ',' || quote_literal('mail.message') || ',' || quote_literal('mail.mail') || ',' || quote_literal('hr.employee') || ')'; END IF; IF has_type THEN where_expr := where_expr || ' AND type = ' || quote_literal('binary'); END IF; FOREACH col IN ARRAY ARRAY LOOP IF EXISTS ( SELECT 1 FROM information_schema.columns WHERE table_schema='public' AND table_name='ir_attachment' AND column_name=col ) THEN EXECUTE format('UPDATE ir_attachment SET %I = NULL WHERE %s', col, where_expr); END IF; END LOOP; IF EXISTS ( SELECT 1 FROM information_schema.columns WHERE table_schema='public' AND table_name='ir_attachment' AND column_name='file_size' ) THEN EXECUTE format('UPDATE ir_attachment SET file_size = 0 WHERE %s', where_expr); END IF; END $$; -- ========================= -- Marketing/Tracking -- ========================= UPDATE utm_source SET name='SRC-' || substring(encode(digest(id::text,'sha256'),'hex') FROM 1 FOR 6); UPDATE utm_medium SET name='MED-' || substring(encode(digest(id::text,'sha256'),'hex') FROM 1 FOR 6); UPDATE utm_campaign SET name='CMP-' || substring(encode(digest(id::text,'sha256'),'hex') FROM 1 FOR 6); -- ========================= -- Parametri/config esterni – safe (no NULL su value) -- ========================= DO $$ BEGIN UPDATE ir_config_parameter SET value = CASE WHEN key IN ('web.base.url', 'web.base.url.freeze') THEN 'http://example.invalid' WHEN key = 'mail.catchall.domain' THEN 'example.invalid' WHEN key IN ('mail.catchall.alias', 'mail.bounce.alias', 'fetchmail.user') THEN 'disabled' WHEN key = 'fetchmail.server' THEN 'localhost' WHEN key = 'fetchmail.port' THEN '0' WHEN key = 'fetchmail.password' THEN '' -- vuoto per rispettare NOT NULL WHEN key = 'database.uuid' THEN substring(encode(digest(current_database() || '-' || now()::text, 'sha256'),'hex') FROM 1 FOR 32) ELSE value END WHERE key IN ( 'web.base.url.freeze','web.base.url','database.uuid', 'mail.catchall.domain','mail.catchall.alias','mail.bounce.alias', 'fetchmail.server','fetchmail.port','fetchmail.user','fetchmail.password' ); END $$;   - [Gemma 3B vs Qwen 8B con Ollama](https://robertozanardo.com/blog/2025/10/18/gemma-3b-vs-qwen-8b-con-ollama/): Gemma 3B vs Qwen 8B con Ollama - [Equalizzatore audio Windows: guida completa a Equalizer APO + Peace GUI](https://robertozanardo.com/blog/2025/07/27/equalizzatore-audio-windows-guida-completa-a-equalizer-apo-peace-gui/): Qual è il miglior equalizzatore audio per Windows? Equalizer APO + Peace GUI è gratuito, leggero e professionale. Scopri come installarlo in 5 minuti. - [La verità è funzione del tempo: una riflessione tra filosofia, programmazione ed ERP moderni](https://robertozanardo.com/blog/2025/07/09/la-verita-e-funzione-del-tempo-una-riflessione-tra-filosofia-programmazione-ed-erp-moderni/): Una riflessione sull’evoluzione della verità nel tempo, tra filosofia, educazione e sviluppo software. Dal pensiero di Foucault a Odoo: quando anche il codice diventa liquido. - [Monitor HDR vs Standard: Differenze reali per Gaming e Streaming](https://robertozanardo.com/blog/2025/06/29/monitor-hdr-vs-standard-differenze-reali-per-gaming-e-streaming/): Scopri cosa cambia tra un monitor HDR e uno standard. Vantaggi per gaming e streaming, requisiti per Netflix, Prime e Disney+. Guida completa 2025. - [Recuperare ritenuta d’acconto prestazione occasionale 2025](https://robertozanardo.com/blog/2025/05/19/recuperare-ritenuta-acconto-prestazione-occasionale/): Scopri come recuperare la ritenuta d'acconto prestazione occasionale tramite la dichiarazione precompilata: guida pratica e dove inserire l’IBAN. - [Come usare l’Intelligenza Artificiale nel lavoro in modo consapevole](https://robertozanardo.com/blog/2025/05/08/come-usare-lintelligenza-artificiale-nel-lavoro-ia-e-i-large-language-model-llm-in-modo-consapevole/): Come usare l’Intelligenza Artificiale nel lavoro : Scopri come usare al meglio l’intelligenza artificiale e i modelli linguistici LLM: vantaggi, limiti e consigli pratici per un uso consapevole e produttivo. - [Utopia di un’economia evoluta in un mondo gestito con AI](https://robertozanardo.com/blog/2025/04/29/utopia-di-uneconomia-evoluta-in-un-mondo-gestito-con-ai/): Introduzione – I dazi, il ritorno del passato - [E-bike pieghevoli 2025:  alternative alla Engwe EP-2 Pro](https://robertozanardo.com/blog/2025/04/19/e-bike-pieghevoli-2025-alternative-alla-engwe-ep-2-pro/): Nel 2025 il mercato delle e-bike pieghevoli continua a crescere con modelli sempre più versatili, compatti e tecnologici. In questo articolo analizziamo e confrontiamo alcune delle migliori opzioni disponibili, inclusa la popolare Engwe EP-2 Pro, ma con uno sguardo attento anche alle alternative più affidabili e pratiche per l'uso quotidiano. - [Calcolo costi trasporto gratis con API Nomitanim e ORS (Beta)](https://robertozanardo.com/blog/2025/03/27/calcolo-costi-trasporto-con-api-nomitanim-e-ors-beta/): Calcolo costi trasporto gratis con API Nomitanim e ORS per preventivi e integrazioni a software gestionali - [Come Risolvere il Problema SSH Agent GitHub](https://robertozanardo.com/blog/2025/02/14/come-risolvere-il-problema-dellssh-agent-che-blocca-i-permessi-di-git-pull-da-github/): Se sei un utente di Git che utilizza SSH per connetterti a GitHub e hai riscontrato il problema di riuscire a collegarti tramite SSH, ma senza poter eseguire operazioni come git pull, il motivo potrebbe essere l'agent SSH che non sta passando la chiave correttamente. Questo errore può sembrare confuso, ma la causa principale è che l'agente SSH non è attivo o non sta gestendo correttamente la chiave. - [Differenze Chiave tra DeepSeek e ChatGTP](https://robertozanardo.com/blog/2025/01/28/deepseek-vs-openai-chatgtp-differenze-chiave-tra-i-due-modelli-di-intelligenza-artificiale/): Differenze Chiave tra DeepSeek e ChatGTP - [Quando Andrò in Pensione? Calcolo della pensione INPS e opzioni di pensione anticipata](https://robertozanardo.com/blog/2025/01/23/quando-andro-in-pensione-calcolo-della-pensione-e-opzioni-di-pensione-anticipata-inps/): A volte ci poniamo questa domanda e spesso dobbiamo programmare un appuntamento con il CAF della zona per avere le idee più chiare. - [Immagini prodotto in stampa offerta odoo](https://robertozanardo.com/blog/2024/12/19/immagini-prodotto-in-offerta-odoo/): Come aggiungere Immagini prodotto in stampa offerta odoo - [Classificare immagini con intelligenza artificiale](https://robertozanardo.com/blog/2024/12/11/smart-image-classification-tool-pixclassifier/): Classificare immagini con intelligenza artificiale: Organizzare la propria collezione di immagini può essere un compito difficile, soprattutto quando si tratta di qualità, dimensione e rumore. Per questo ho sviluppato PixClassifier, un semplice strumento che rende l'organizzazione delle immagini semplice ed efficiente. - [App Orametro per monitoraggio dei tempi motore aerei](https://robertozanardo.com/blog/2024/11/11/app-orametro-in-django-per-il-monitoraggio-dei-tempi-motore-un-supporto-digitale-per-i-corsi-di-volo-di-pilotapersempre/): Applicazione in Django per il monitoraggio dei tempi motore degli aerei (orametro). Questa app consente ai piloti, durante i corsi di volo, di registrare i tempi motore tramite smartphone e periodicamente esportare i dati in formato Excel per facilitare le statistiche e la fatturazione. - [Scaricare singole cartelle da GitHub](https://robertozanardo.com/blog/2024/10/30/scaricare-singole-cartelle-da-github/): Se ti è capitato di voler scaricare solo una cartella specifica da un progetto su GitHub senza dover clonare l’intero repository, sappi che è possibile! In questa guida esploreremo DownGit, uno strumento gratuito e facile da usare che ti consente di ottenere solo le parti del codice che ti servono. - [Stampa diretta da Odoo con Direct Print PRO o Printnode](https://robertozanardo.com/blog/2024/10/30/stampa-diretta-da-odoo-con-direct-print-pro-o-printnode/): Stampa diretta da Odoo con Direct Print PRO o Printnode - [Calcolare assenze scolastiche con Excel](https://robertozanardo.com/blog/2024/10/21/calcolo-assenze-scolastiche-con-excel/): Per facilitare il monitoraggio delle assenze, possiamo utilizzare Excel per calcolare velocemente la percentuale di assenza rispetto ai giorni scolastici effettivi. In questo articolo, ti mostrerò come Calcolare assenze scolastiche con Excel e ti spiegherò anche come ottenere la percentuale tra due numeri con Excel. - [I Limiti della Matematica e la Nostra Natura: Una Riflessione sull’Origine dell’Universo](https://robertozanardo.com/blog/2024/10/08/i-limiti-della-matematica-e-la-nostra-natura-una-riflessione-sullorigine-delluniverso/): I Limiti della Matematica e la Nostra Natura: Una Riflessione sull'Origine dell'Universo - [Roadshow Milan 2024: Networking e nuove opportunità con Odoo](https://robertozanardo.com/blog/2024/09/18/odoo-roadshow-milan-2024-networking-innovation-and-new-opportunities/): Un evento davvero appagante presso il fantastico NH Now Hotel di via Tortona, in una location perfetta per networking e innovazione, tra l'altro nel pieno della fashion week milanese! La partecipazione è stata eccezionale, con rappresentanti di Odoo e i 4 partner sponsor impegnati in conversazioni stimolanti.Per noi di Aion-Tech, in qualità di partner e sponsorizzatori dell'evento, non c'è stata tregua! Siamo tornati a casa con nuovi contatti entusiasti del mondo Odoo, pronti a nuove collaborazioni. È stato un evento ben organizzato, che ci ha confermato l'importanza di continuare a investire in questi momenti di confronto e crescita per Networking e nuove opportunità con Odoo.Grazie a tutti coloro che hanno reso questa giornata speciale!hashtag#OdooRoadshow hashtag#Milano hashtag#Networking hashtag#AionTech hashtag#Odoo hashtag#Innovazione hashtag#Crescita hashtag#NuoveOpportunità hashtag#nhnow hashtag#fashionweek - [Come Abilitare il Tema Scuro su WhatsApp Web da Browser](https://robertozanardo.com/blog/2024/09/12/come-abilitare-il-tema-scuro-su-whatsapp-web-da-browser-guida-passo-passo/): Se stai cercando di ridurre l'affaticamento degli occhi o semplicemente preferisci un aspetto più elegante, abilitare il tema scuro su WhatsApp Web è una scelta intelligente. Ecco come abilitare il Tema Scuro su WhatsApp Web da Browser. Questa guida ti mostrerà come attivare la modalità scura direttamente dal browser, sia su Windows che su Mac. - [Stato fatture IN PAGAMENTO in Odoo](https://robertozanardo.com/blog/2024/08/08/stato-fatture-in-pagamento-in-odoo/): Se ti trovi nella situazione in cui le fatture su Odoo risultano "in pagamento" invece di essere contrassegnate come "pagate", ecco i passaggi che devi seguire per risolvere il problema: - [Solving Odoo Multicompany Access Rights Issue on Contact Model](https://robertozanardo.com/blog/2024/06/24/solving-odoo-multicompany-access-rights-issue-on-contact-model/): Managing multiple companies in Odoo can be a complex task, especially when it comes to setting access rights and permissions. A common problem many Odoo users face is that the default permissions on the contact model (res.partner) do not allow access to users managed companies, even if they have the relevant companies selected in their company_ids settings. This blog post will guide you through a solution to this issue by modifying the default permission rules. - [odoo db restore permissions [SOLVED]](https://robertozanardo.com/blog/2024/05/30/odoo-db-restore-db-permissions/): odoo db restore permissions - [Spostare directory dati postgresql Windows](https://robertozanardo.com/blog/2024/05/29/spostare-directory-dati-postgresql-windows/): Spostare i dati di postgreSQL in un'altra directory o su un'altro pc è più semplice di quanto potrebbe sembrare: - [Definizione campi nei modelli Odoo con ChatGPT](https://robertozanardo.com/blog/2024/04/06/definizione-campi-json-in-odoo-con-chatgpt/): Semplificare il processo di definizione campi nei modelli Odoo con ChatGPT - [Install Python External Dependencies on Odoo.sh](https://robertozanardo.com/blog/2024/04/02/odoo-sh-install-python-external-dipendency/): Install Python External Dependencies on Odoo.sh - [Convertire csv in xml](https://robertozanardo.com/blog/2024/02/24/convertire-csv-in-xml/): Convertire csv in xml è un'esigenza comune, con questo breve script in python è semplicissimo. - [Eseguire un programma python](https://robertozanardo.com/blog/2024/02/23/eseguire-un-programma-python/): Per eseguire un programma in python è possibile utilizzare uno dei i diversi interpreti disponibili online, come: - [Impossibile confermare ordine di produzione](https://robertozanardo.com/blog/2024/02/04/impossibile-confermare-ordine-di-produzione/): Codice (per la versione 16, nelle versioni precedenti basta sostituire reserved_qty e reserved_uom_qty con product_qty e product_uom_qty): - [Ripulire inquinamento del lago di Como con l’aiuto di un ‘mostro’](https://robertozanardo.com/blog/2024/01/06/inquinamento-lago-di-como-re-lake-proteus-lariomoon/): Ripulire il lago di Como dall'inquinamento accumulato negli anni è possibile ? Si stanno già prendendo provvedimenti e se non altro si sta provando a non far peggiorare la situazione ma sicuramente c'è del lavoro da fare anche per sistemare il 'pregresso'. - [Come Personalizzare Cerca Ancora in Odoo](https://robertozanardo.com/blog/2023/12/06/personalizzare-vista-funzione-cerca-ancora-in-odoo/): In Odoo, può essere utile personalizzare la funzione accessibile dall'opzione "Cerca ancora" nei menu a discesa (dropdown). Questa personalizzazione permette di migliorare l'esperienza utente, semplificare le ricerche e adattare il sistema alle esigenze aziendali. - [Risolutore cubo di rubik avanzato](https://robertozanardo.com/blog/2023/09/11/risolutore-cubo-di-rubik-avanzato/): Risolutore cubo di rubik avanzato in assembler a cura di Rick Ostidich - [Configurare invio mail odoo gmail](https://robertozanardo.com/blog/2023/09/01/configurare-invio-mail-odoo-gmail/): Per abilitare l’invio mail da un indirizzo gmail è possibile impostare una password specifica da utilizzare da parte di odoo (App passwords). - [odoo qweb page break table](https://robertozanardo.com/blog/2023/06/10/odoo-qweb-page-break-table/): Le interruzioni di pagina nei report qweb di Odoo possono essere un vero incubo! - [Ricerca prodotti woocommerce non funziona per SKU](https://robertozanardo.com/blog/2023/05/20/ricerca-prodotti-woocommerce-non-funziona/): Se la ricerca prodotti woocommerce non funzione può capitare, specialmente su grossi archivi, che si sia corrotta la tabella indice di ricerca. - [Errore “General Ledger Can Be Computed Only If Selected Company Have Only One Unaffected Account” in Odoo: Come Risolverlo](https://robertozanardo.com/blog/2023/05/19/errore-general-ledger-odoo-come-risolvere-il-problema-degli-account-non-assegnati/): "General ledger can be computed only if selected company have only one unaffected account" - [Comprimere video mantenendo qualità windows](https://robertozanardo.com/blog/2023/03/27/miglior-compressore-video-gratis-per-windows/): Il miglior compressore video gratis non è semplice da trovare: in rete ci sono infinite soluzioni per ridurre le dimensioni dei propri video. - [Forzare ricalcolo campi calcolati in odoo](https://robertozanardo.com/blog/2023/03/09/forzare-il-ricalcolo-dei-campi-calcolati-in-odoo/): Forzare il ricalcolo dei campi calcolati in odoo può essere necessario in alcuni casi specifici. - [Estrarre immagini da excel](https://robertozanardo.com/blog/2022/11/21/estrarre-immagini-da-excel/): Nel caso di un file Excel con all'interno delle immagini (no path, no url) semplicemente 'incollate' dentro, come nel caso, ad esempio, di un listino prezzi, un catalogo o altro possiamo utilizzare un codice pyton per farci creare una cartella contenente le immagini e rinominate secondo nostre specifiche. - [Nuove funzionalità in Odoo 16](https://robertozanardo.com/blog/2022/10/13/odoo-16-new-features/): Nuove funzionalità in Odoo 16 - [Python formattazione Qweb decimali e migliaia](https://robertozanardo.com/blog/2022/10/06/python-formattazione-qweb-decimali-e-migliaia/): Ci sono diversi modi per formattare i campi nei report qweb in odoo, però spesso non si trova quello che esattamente fa al caso nostro. - [Odoo failed to load registry error](https://robertozanardo.com/blog/2022/09/26/odoo-failed-to-load-registry-error/): Ci sono alcuni workaround a fronte dell'errore generico nell'aggiornamento di un modulo Odoo: 'failed to load registry' nel caso in cui siano poche altre informazioni aggiuntive. - [Reverse charge per fatture estero](https://robertozanardo.com/blog/2022/07/26/reverse-charge-per-fatture-estero/): Reverse charge per fatture estero - [soluzione odoo.define is not a function](https://robertozanardo.com/blog/2022/06/16/soluzione-odoo-define-is-not-a-function/): soluzione odoo.define is not a function : questo problema si verifica spesso quando si effettua il restore di un database su un altro ambiente, il più delle volte è collegata anche al messaggio: could not get content for ... defined in bundle 'web.assets_backend', etc... ## Pagine - [Fire Rescue Remake del gioco Fire per Smart & Watch](https://robertozanardo.com/fire-rescue-remake-del-gioco-fire-per-smart-watch/): Remake del gioco Fire per Smart & Watch (fatto con Antigravity Google Gemini 3.1 Pro) - [Gestionale torrefazione caffè](https://robertozanardo.com/gestionale-torrefazione-caffe/): Il settore delle torrefazioni sta attraversando una trasformazione digitale sempre più rapida. Tra gestione della produzione, controllo delle miscele, logistica, tentata vendita e normative sempre più stringenti, affidarsi a strumenti separati o fogli Excel non è più sostenibile. - [Progetto MicroTax: Una sola tassa per cambiare tutto](https://robertozanardo.com/progetto-microtax-una-sola-tassa-per-cambiare-tutto/): Addio IRPEF. Addio IVA. Addio commercialisti, scadenze, F24. Basta burocrazia, basta evasione, basta complicazioni. - [Calcolo costi trasporto su strada (beta)](https://robertozanardo.com/calcolo-costi-trasporto-su-strada-beta/): Calcola Costo di Trasporto Indirizzo di Partenza: Indirizzo Destinazione: Costo per KM (€): Costo Aggiuntivo (€): Tipo Veicolo: Auto Camion Peso Camion (kg): Altezza Camion (m): Larghezza Camion (m): Lunghezza Camion (m): Calcola Result: - [Convertire Fatture elettroniche xml excel](https://robertozanardo.com/fatture-elettroniche-in-excel/): Se hai bisogno di convertire fatture elettroniche XML in Excel o CSV, sei nel posto giusto. Carica i tuoi file direttamente dal browser — XML, P7M o uno ZIP con più fatture — e ottieni in pochi secondi un file Excel pronto da usare, senza installare nulla. - [E-commerce Alimentari con Odoo e WooCommerce : Portare un negozio o un supermercato Online](https://robertozanardo.com/e-commerce-negozio-alimentari-online/): Portare un supermercato o un negozio di alimentari online può sembrare un'impresa complessa. Con migliaia di prodotti da gestire, aggiornamenti continui di prezzi e scorte, e l'integrazione con il software di cassa, è fondamentale adottare la strategia giusta per rendere il processo più semplice ed efficiente. - [Music!](https://robertozanardo.com/music/): Amo la musica, suono la batteria fin da adolescente e cerco di mantenere viva questa passione, anche se non è sempre facile! - [Creare un E-commerce: Guida Passo Passo al Processo di Realizzazione](https://robertozanardo.com/processo-creazione-e-commerce/): Ho sintetizzato l'avviamento in questi semplici passi, per Creare un E-commerce: Guida Passo Passo al Processo di Realizzazione - [SHOP](https://robertozanardo.com/shop/): Consulenza e sviluppo odoo , soluzioni per la fatturazione elettronica e la gestione trasporti - [Checkout](https://robertozanardo.com/checkout/) - [Carrello](https://robertozanardo.com/carrello/): Il tuo carrello contiene: Il tuo carrello è vuoto. Ritorna al negozio - [Gestione taglie e colori per ingrosso, dettaglio ed e-commerce](https://robertozanardo.com/gestione-taglie-e-colori-open-source-ingrosso/): Il modulo, specifico per Odoo, gestisce il ciclo completo di acquisto, magazzino, vendita e fatturazione per colli e assortimenti e articoli singoli. - [Consulenza e sviluppo Odoo](https://robertozanardo.com/): Benvenuti nel mondo di Odoo: il software open source che trasforma la gestione aziendale - [Gestione trasporti e logistica in cloud](https://robertozanardo.com/gestione-trasporti-e-logistica-in-cloud/): Odoo permette in maniera semplice la gestione di Fatture e Pagamenti anche con poche conoscenze di contabilità. - [Consulenza dedicata personalizzazioni Odoo](https://robertozanardo.com/verticalizzazioni-odoo/): Mi occupo di consulenza tecnica e funzionale su Odoo, aiutando aziende di diversi settori a implementare soluzioni ERP personalizzate e realmente efficaci. Con oltre 10 anni di esperienza nello sviluppo di verticalizzazioni, accompagno imprese nella digitalizzazione dei processi attraverso soluzioni Odoo mirate e scalabili. - [Portfolio siti web](https://robertozanardo.com/portfolio-siti-web/): Alcuni dei siti web realizzati: - [Programmare col Martello](https://robertozanardo.com/programmare-col-martello/): E' da tempo che volevo scrivere un 'metodo' di programmazione semplice, che fosse accessibile senza particolari competenze. - [Gestionale in Cloud per la fatturazione elettronica](https://robertozanardo.com/gestionale-in-cloud/): La nostra versione di Odoo, adattata alla normativa italiana, permette in maniera semplice la gestione di Fatture e Pagamenti anche con poche conoscenze di contabilità. - [Blog](https://robertozanardo.com/blog/) - [Servizi](https://robertozanardo.com/servizi/): Consulenza e sviluppo su implementazioni personalizzate CRM/ERP, e-commerce, siti e applicazioni web/mobile. - [Links](https://robertozanardo.com/links/): Partner, supporter, link utili, amici e collaborazioni: Odoo Odoo Community Association eGlue Why Not Onlus The Art of Pabryoda Pubblicazioni Sogni d'oro ICI - Porte e Pannelli Associazione Veronica Sacchi Rockin 1000 N.P.S. New Partner Shipping Goertz International LS Transport Sicur System TLS International Studio podologia di Flavio Offer Zacchetti Arredamenti Re Lyon Magniolio Latteria Locatelli Blog Giorni di luce Pasticceria Ponti Agenzia Viaggi RossoCorallo Table Project NET Informatica MKT Prosaber Pilota per sempre Iginio Massari Srl 2C Solution Paeurope Studio Dentistico Dott.Giovanni Burgio Incomincio da Lunedì: Ricette per uno stile di vita sano La tua spesa online a Como e provincia - [Tech notes](https://robertozanardo.com/tech-notes/): Alcune note utili di sviluppo, un mio promemoria che spero possa essere utile anche ad altri. - [About me (CV)](https://robertozanardo.com/about-me-cv/): I'm an experienced professional with skills applied in different fields of business. My approach is enthusiast, curious and practical. This has awarded me to date allowing to cover a wide range of customers: from small to enterprise sized businesses companies and institutions. I am very methodic and autonomous on problem solving and team management. - [Home](https://robertozanardo.com/home/): Benvenuti nel mio blog, mi occupo di sistemi gestionali CRM/ERP e sviluppo da più di 20 anni. Qui trovate appunti tecnici di sviluppo, aggiornamenti su Odoo e alcune personalizzazioni realizzate. - [Contatti](https://robertozanardo.com/contatti/): Hai bisogno di una consulenza su Odoo, vuoi sviluppare un progetto su misura o richiedere una demo personalizzata? Sono qui per aiutarti. - [Gestione agenzie di trasporto in cloud](https://robertozanardo.com/odoo-agenzie-trasporto/): Gestione agenzie di trasporto in cloud: efficienza, automazione e flessibilità ## Prodotti - [Consulenza Oraria Odoo (Offerta valida solo per acquisto via Web)](https://robertozanardo.com/prodotto/consulenza-odoo-offerta-valida-solo-per-acquisto-via-web/): 🔹 Supporto flessibile e su misura per la tua aziendaOttieni assistenza professionale per la configurazione, personalizzazione e sviluppo su Odoo. La nostra consulenza copre:✅ Analisi e ottimizzazione dei processi aziendali✅ Formazione per il tuo team✅ Configurazioni avanzate e personalizzazioni✅ Sviluppo di moduli e integrazioni - [Consulenza Giornata Odoo (Offerta valida solo per acquisto via Web)](https://robertozanardo.com/prodotto/consulenza-odoo/): 🔹 Supporto flessibile e su misura per la tua aziendaOttieni assistenza professionale per la configurazione, personalizzazione e sviluppo su Odoo. La nostra consulenza copre:✅ Analisi e ottimizzazione dei processi aziendali✅ Formazione per il tuo team✅ Configurazioni avanzate e personalizzazioni✅ Sviluppo di moduli e integrazioni - [FExplore FREE per Windows – Visualizza dati Fatture elettroniche con demo esportazione Excel](https://robertozanardo.com/prodotto/fexplore-per-windows-visualizza-dati-fatture-elettroniche-con-demo-esportazione-excel/): FExport 1.1 per Windows Il programma permette di leggere tutti i file contenuti in una cartella di fatture elettroniche in formato XML o P7M ed esportare in un file formato CSV, apribile da Excel. E' possibile inoltre esportare solo le intestazioni o il dettaglio righe e modificare i campi che si desidera esportare dalle fatture.   - [FExplore per Windows – Esporta XML Fatture elettroniche in CSV per Excel](https://robertozanardo.com/prodotto/fexplore-per-windows-esporta-xml-fatture-elettroniche-in-csv-per-excel/): FExport 1.1 per Windows Il programma permette di leggere tutti i file contenuti in una cartella di fatture elettroniche in formato XML o P7M ed esportare in un file formato CSV, apribile da Excel. E' possibile inoltre esportare solo le intestazioni o il dettaglio righe e modificare i campi che si desidera esportare dalle fatture.   ## Categorie - [AI](https://robertozanardo.com/blog/category/ai/) - [Altro](https://robertozanardo.com/blog/category/altro/) - [Banche e finanza personale](https://robertozanardo.com/blog/category/banche-e-finanza-personale/) - [Blog](https://robertozanardo.com/blog/category/blog/) - [ChatGPT](https://robertozanardo.com/blog/category/chatgpt/) - [Django](https://robertozanardo.com/blog/category/django/) - [E-commerce](https://robertozanardo.com/blog/category/ecommerce/) - [Entertainment](https://robertozanardo.com/blog/category/entertainment/) - [Fatturazione Elettronica](https://robertozanardo.com/blog/category/fatturazione-elettronica/) - [Food](https://robertozanardo.com/blog/category/food/) - [Fun](https://robertozanardo.com/blog/category/fun/) - [Gadgets](https://robertozanardo.com/blog/category/gadgets/) - [Gaming](https://robertozanardo.com/blog/category/gaming/) - [Goodies](https://robertozanardo.com/blog/category/goodies/) - [Lifestyle](https://robertozanardo.com/blog/category/lifestyle/) - [News](https://robertozanardo.com/blog/category/news/) - [Odoo](https://robertozanardo.com/blog/category/odoo/) - [open source](https://robertozanardo.com/blog/category/open-source/) - [PHP](https://robertozanardo.com/blog/category/php/) - [Programmare col martello](https://robertozanardo.com/blog/category/programmare-col-martello/) - [Python](https://robertozanardo.com/blog/category/python/) - [Science](https://robertozanardo.com/blog/category/science/) - [SEO](https://robertozanardo.com/blog/category/seo/) - [Smartphone e App](https://robertozanardo.com/blog/category/smartphone-e-app/) - [Sports](https://robertozanardo.com/blog/category/sports/) - [Tech notes](https://robertozanardo.com/blog/category/tech-notes/) - [Technology](https://robertozanardo.com/blog/category/technology/) - [Travel](https://robertozanardo.com/blog/category/travel/) - [Uncategorized](https://robertozanardo.com/blog/category/uncategorized/) - [Wordpress](https://robertozanardo.com/blog/category/wordpress/) - [World](https://robertozanardo.com/blog/category/world/)