Questo sito utilizza cookie per le proprie funzionalità e per inviarti pubblicità e servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookie.

Accedendo al link http://www.odoo-italia.org/index.php/home/cookie-policy puoi leggere in dettaglio le modalità di trattamento dei cookie da parte dell'Associazione Odoo Italia.

Benvenuto, Ospite
Nome utente: Password: Ricordami
Ricordati di inserire la versioni di Odoo per cui poni la domanda

ARGOMENTO: KETTLE TERMINATOOOR

Re:KETTLE TERMINATOOOR 8 Anni 6 Mesi fa #2632

  • angedras
  • Avatar di angedras
  • Offline
  • Platinum Boarder
  • Messaggi: 330
  • Ringraziamenti ricevuti 4
  • Karma: 10
Ciao,
In generale credo che potresti agire in questo modo:
  • Creazione delle funzioni da posizione (se è questo il senso del campo posizione della rubrica)
  • Creazione dei partner per i contatti di rubrica in cui è presente 'società', verificando ovviamente che non sia già presente nel sistema un Partner con quel nome (potresti associare alla creazione un invio di request ad un gruppo di revisori che andranno a riempire i campi mancanti tipo IVA etc. così vai ad eliminare un controllo automatico sul tipo di partner)
  • Creazione dei contatti con tutte le informazioni su telefono, fax, e funzione creata all'inizio
  • Creazione degli address con riferimento agli uffici per i Partner ed alle abitazioni per i contatti, quindi se un record della rubrica presenta un nome società ed uno o più indirizzi uffici, creare l'indirizzo o gli indirizzi e legarli al Partner appena creato. Allo stesso modo collegare, alla creazione, gli indirizzi con i contatti appena creati
Prendi questi passi con beneficio d'inventario..
Non avendo verificato l'omogeneità e la qualità dei dati potrei anche essermi sbagliato e questo discorso potrebbe non andare bene; a mio avviso comunque, qualunque strada tu decida di percorrere, rimane necessario un intervento manuale di una o più persone esperte per valutare la qualità dell 'importazione e soprattutto per aggiungere i dati che risulterebbero mancanti, come ad esempio indirizzo di sede legale Partner, IVA etc.

Facci sapere che strada hai scelto per l'import!

angedras
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:KETTLE TERMINATOOOR 8 Anni 6 Mesi fa #2633

  • Dr.Dran
  • Avatar di Dr.Dran
  • Offline
  • Gold Boarder
  • Messaggi: 187
  • Karma: 0
Ciao Angedras!

Mi hai dato un pò di spunti su cui ragionare, al momento per ragioni di "velocità" imposterò al rubrica sui dati che ho del cliente (non revisionati e anche incasinati), successivamente il cliente dovrà passarsi un pò alla volta tutti i dati... comunque sia vorrei dare una traccia e magari in futuro provare a sviluppare un modulo ad-hoc visto che il modulo ETL non è un gran chè... speriamo migliori!!! :D

Quindi ci sentiamo a breve dove posterò i pezzettini di codice fatto (non mi picchiate è da poco che programma in python, anzi fate critiche perchè c'è da imparare tanto)

Cheers

Franco
Franco Tampieri:
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:KETTLE TERMINATOOOR 8 Anni 6 Mesi fa #2655

  • Dr.Dran
  • Avatar di Dr.Dran
  • Offline
  • Gold Boarder
  • Messaggi: 187
  • Karma: 0
Dunque ho realizzato un script che prende su le informazioni direttamente dai dati excell, visto che utilizzando i csv ho avuto problemi con campi di tipo testo (vedi le classiche note o commenti) che possedevano internamente campi che potevano confondere il mio piccolo parser.

Altro problema: dover riportare le categorie esattamente ordinate e associate ai contatti com in outlook. (Dopo varie prove, anche ocn i plugin di Axelor, che ovviamente snobbano le categorie e altri parametri) ho deciso di generare un dump sql e importarlo nella tabella res_partner_category_rel. Fatto queste quando visualizzo un contatto ho la sua categoria abbinata. Solo che non vorrei aver sottavalutato altre tabelle che fanno riferimento a questa. In genere mi sembrava che in una relazione many-to-many dalla mia piccola esperienza php fosse + che sifficiente.

I dubbi mi sono venuti perchè ho notato un paio di comportamenti per me strani:
se apro un partner dalla ricerca per categoria e poi voglio modificarlo cambiandogli al categoria (anche solo aggiungendone un'altra) questo non riesco a farlo, poichè nella "dialog" mi propone sempre e solo la categoria attuale del partner e non l'elenco generale, anche se provo a fare una ricerca :S :S :S

A qualcuno di voi è capitata una cosa simile? Oppure è melgio che provo a mettere il client in debug e ad analizzare il log sul protocollo XML-RPC?

Cheers

Franco
Franco Tampieri:
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:KETTLE TERMINATOOOR 8 Anni 6 Mesi fa #2657

  • paleo
  • Avatar di paleo
  • Offline
  • Senior Boarder
  • Messaggi: 43
  • Karma: 0
Non so se ho capito bene quello che hai fatto... ma per come la vedo io non dovresti interessarti affatto di quali siano le tabelle del DB in cui OpenObject va a scrivere i contatti e le relazioni...
Il motivo principale è che l'implementazione del modello dati è affare di OpenObject/OpenERP e come tale potrebbe evolversi nel tempo creandoti diversi problemi.

Il mio consiglio è di seguire gli esempi XML-RPC dai link di seguito:
doc.openerp.com/developer/6_22_XML-RPC_web_services/index.html
snipplr.com/view/17608/openerp-xmlrpc-we...rvices-crud-example/

ed eventualmente (ebbene sì) lanciare il client in modalità Debug_XML-RPC, provare a registrare a mano un contatto e vedere dal log a video quali comandi RPC vengono eeguiti.
A tal proposito ripesco una vecchia discussione fra rbonazzo e enlightx che potrebbe esserti utile.
www.openerp-italia.org/index.php?option=...&catid=20&id=266#267
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:KETTLE TERMINATOOOR 8 Anni 6 Mesi fa #2659

  • Dr.Dran
  • Avatar di Dr.Dran
  • Offline
  • Gold Boarder
  • Messaggi: 187
  • Karma: 0
Hum, non sono troppo daccordo, è vero che esite l'ORM ma è anche vero che bisogna un pò alla volta capire come funziona :P :)

Allora qui ti facico vedere parte dello scriptino che ho utilizzato:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#       Contact-import.py
#
#       This program is based on the great work of Sean Boran
#
#       Copyright 2010 Franco Tampieri <info@francotampieri.com>
#
#       This program is free software; you can redistribute it and/or modify
#       it under the terms of the GNU General Public License as published by
#       the Free Software Foundation; either version 2 of the License, or
#       (at your option) any later version.
#
#       This program is distributed in the hope that it will be useful,
#       but WITHOUT ANY WARRANTY; without even the implied warranty of
#       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#       GNU General Public License for more details.
#
#       You should have received a copy of the GNU General Public License
#       along with this program; if not, write to the Free Software
#       Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#       MA 02110-1301, USA.

import xmlrpclib
import csv
import xlrd

## (Config) Legge i parmatri di configuraizone per connettersi ad OpenERP
import ConfigParser, os
config = ConfigParser.ConfigParser()
config.read(['openerp.cfg', os.path.expanduser('~/.openerp.cfg')])

## (Debug) Stampa i parametri di configurazione
print config.items('dbaccess')

db       = config.get('dbaccess','db')
username = config.get('dbaccess','username')
pwd      = config.get('dbaccess','pwd')
host     = config.get('dbaccess','host')
port     = config.getint('dbaccess','port')

## (Config) Predispongo la configurazione per la connessione xml-RPC
sock_common = xmlrpclib.ServerProxy('http://%s:%d/xmlrpc/common' % (host, port))
uid = sock_common.login(db, username, pwd)
sock = xmlrpclib.ServerProxy('http://%s:%d/xmlrpc/object' % (host, port))

## Creo il file csv di esportazione per la tabella di relazione fra categorie e partner
writer = csv.writer(open('relazionecategorie.csv', 'wb'), delimiter=',')
writer.writerow( ('partner_id', 'category_id') )

## Crea la Categoria principale
dcontatti = { 'name': 'Mailing List Estero',
              'active': 1,
            }
idcontatti =  sock.execute(db, uid, pwd, 'res.partner.category', 'create', dcontatti)
reader = csv.reader(file('Categorie_MLEstero.csv').readlines(), delimiter=',')

## Aggiunge una sigla ad ogni sottocategoria (Serve per non confondersi inizialmente con
## le gategorie omonime ma presenti in altre categorie principali)
for row in reader:
  sigla = "mle"
  nomecategoria = sigla+row[0]
  dccontatti = { 'name': nomecategoria,
                 'parent_id': idcontatti,
                 'active': 1,
               }
  idccontatti =  sock.execute(db, uid, pwd, 'res.partner.category', 'create', dccontatti)

## Apre il file excel con l'elenco dei contetti, per fare una importazione raw dei dati
wbcontatti = xlrd.open_workbook("mailing-estero.xls")
sh = wbcontatti.sheet_by_index(0)

## Inizia a fare l'inserimento e la creazione dei partner
for rownum in range(sh.nrows):
  if sh.cell_value(rownum,5)=='':
    nome_persona_azienda=sh.cell_value(rownum,0)+' '+sh.cell_value(rownum,1)+' '+sh.cell_value(rownum,2)+' '+sh.cell_value(rownum,3)
  else:
    nome_persona_azienda=sh.cell_value(rownum,0)+' '+sh.cell_value(rownum,1)+' '+sh.cell_value(rownum,2)+' '+sh.cell_value(rownum,3)+' Azienda: '+sh.cell_value(rownum,5)

  partner = {'name': nome_persona_azienda,
             'comment': sh.cell_value(rownum,67),
             'website': sh.cell_value(rownum,69),
             'supplier': 0,
             'customer': 1,
             'active': 1,
            }
  partner_id = sock.execute(db, uid, pwd, 'res.partner', 'create', partner)

  citta_partner=sh.cell_value(rownum,11)+' '+sh.cell_value(rownum,12)+' '+sh.cell_value(rownum,14)

  telefono = sh.cell_value(rownum,31)+' '+sh.cell_value(rownum,40)

  address = {'partner_id': partner_id,
             'type': 'default',
             'street': sh.cell_value(rownum,8),
             'zip': sh.cell_value(rownum,13),
             'city': citta_partner,
             'phone': telefono,
             'fax': sh.cell_value(rownum,30),
             'email':sh.cell_value(rownum,71),
             'mobile':sh.cell_value(rownum,40),
            }

  sock.execute(db, uid, pwd, 'res.partner.address', 'create', address)

  ## Visualizza l'id del partner
  print 'Questo è il numero id del partner = ',partner_id
  sigla='mle'
  sigla=sigla+sh.cell_value(rownum,51)
  print 'Questa è la sigla del gruppo associato numero id del partner = ',sigla
  category_id = sock.execute(db, uid, pwd, 'res.partner.category', 'search', [('name', 'ilike', sigla)])
  print 'Questo è il numero id della categoria = ',category_id

  ## Creo il file di esportazione per la tabella di collegamento fra partner e gruppi
  writer.writerow( (partner_id, category_id) )

Come puoi bene vedere si basa sulle impostazioni e sui link che mi hai fornito, il problema è che non sono riuscito a capire come creare la relazione many-to-many mediante l'interfaccia XML-RPC, ho provato a mettere il client in debug, ma ho visto che vengono fatte una seri edi letture, quindi ho fatto in altro modo (direi molto sporco).

Mi farebbe comodo capire come inserire una relazione del tipo tramite comandi xml-rpc.
Ah fra l'altro (a sottolineare che è importante conoscere la struttura del db e dell'ORM) è necessario fare l'importazione dare una occhiata a come sono strutturate le tabelle e capirne le relazioni. (scusa se sono pedante, ma da questa cosa non mi smuovo facilmente :P)

Comunque by the way mi sono tirato giù anche il codice del progetto ETL, anche se un bel pò spartano rappresenta una bella sfida :)

Grazie comunque Paleo per le dritte,ma ci ho già sbattuto la testa, ora provo pesantemente in debug, debbo capire :)
Franco Tampieri:
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:KETTLE TERMINATOOOR 8 Anni 6 Mesi fa #2662

  • eLBati
  • Avatar di eLBati
  • Online
  • Platinum Boarder
  • Messaggi: 1766
  • Ringraziamenti ricevuti 186
  • Karma: 38
Dr.Dran ha scritto:
Hum, non sono troppo daccordo, è vero che esite l'ORM ma è anche vero che bisogna un pò alla volta capire come funziona :P :)
Io invece sono d'accordo con paleo B)
Va benissimo capire come funziona l'ORM, ma questo non vuol dire che lo devi scavalcare. Anzi, se vedi che gli mancano delle funzionalità, allora lo si estende.
Come puoi bene vedere si basa sulle impostazioni e sui link che mi hai fornito, il problema è che non sono riuscito a capire come creare la relazione many-to-many mediante l'interfaccia XML-RPC
In generale, il modo per scrivere un many2many con l'ORM è descritto qui
doc.openerp.com/developer/2_5_Objects_Fi...ml#osv.osv.osv.write
Se vuoi degli esempi, potresti cercarli con
grep -r '\[(6, 0, \[' addons[/code] Ciau[code]grep -r '\[(6, 0, \
Ciau
Lorenzo Battistini
github.com/eLBati

TAKOBI
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Tempo creazione pagina: 0.158 secondi

Odoo Italia Associazione - C.F: 94200470485 - Sede: Viale dei Cadorna, 83 - Firenze - Italy

Protected by R Antispam