Un peu perdu pour commencer par import de données

Répondre
poimlk
Messages : 1
Enregistré le : jeu. déc. 10, 2015 6:28 am

jeu. déc. 10, 2015 7:36 am

Bonjour,
Jusqu'ici j'utilisais EBP, mais pas satisfait par toute les fonctionnalités de ce logiciel je commence à m'intéresser à OpencConcerto.
Je n'ai pas de module d'export très evolué sur EBP car seulement une version de base afin d'éditer devis et factures.
J'ai créer un fichier Excel pour ma base clients en faisant de longs copié collé et maintenant je souhaiterais les insérer dans openConcerto. La je suis perdu car je ne trouve pas de module d'import malgré qu il en soit fait mention par ci par là. De plus je ne vois pas comment ajouter des modules a OC (je suis en 1.3)
Ailleurs sur le site je vois que l'on parle de console H2, j'ai essayé de men servir mais c'est un peu du chinois pour moi et pas trouver sur le net comment m'en sortir (idem avec razorsql et autres).
Par la suite si je suis confirmé par le choix de OC je migrerais sur une version multiposte, j'espère que la migration sera aisée....
Merci pour votre aide
Olivier
xantof
Messages : 504
Enregistré le : dim. juil. 10, 2011 2:33 pm

mar. déc. 15, 2015 11:19 am

Bonjour,

Avec PgAdmin (PostgreSQL) on s'en sort par un/des copié(s)/collé(s) à partir du tableur.
Je ne connais pas la console H2 mais j'imagine qu'en cherchant un peu, ce doit être assez similaire.

Si vous avez (disons) moins de 100 fiches à importer, il est parfois utile d'envisager une re-saisie. Ca permet de développer sa connaissance du logiciel (et parfois d'adapter/formater certaines saisies de champs comme les codes articles, etc...)

A mon avis (qui n'est que le mien :P ), si vous avez la moindre intention d'être un jour en multi-poste, il vaut mieux démarrer d'emblée avec PostgreSQL. Ce n'est pas plus compliqué et au moins, votre apprentissage ne se fera qu'une seule fois sur l'outil final.

Bonne exploration!

Stephan
Lubuntu 16.04 LTS au travail. Ubuntu 15.04 à la maison. 13 ans sous logiciel propriétaire. OC depuis 2012. Petit Commerce
Comment poser une question sur un forum : http://www.linux-france.org/article/the ... ns-fr.html
Julien_R
Messages : 15
Enregistré le : jeu. févr. 04, 2016 3:46 pm

ven. févr. 05, 2016 4:10 pm

Réponse modifiée et améliorée le 8 février 2016

Même pour l'utilisation sur un seul ordinateur, je vous conseille d'installer la version multipostes qui vous donnera accès à l'interface de gestion de bases de données pgAdmin.

Pour l'installation multipostes, vous pouvez vous appuyer sur le guide d'installation multipostes
http://www.openconcerto.org/fr/installation.html
ainsi que sur ce didacticiel :
http://www.openconcerto.org/forum/viewt ... f=4&t=1430

Pour importer des données, vous pouvez vous inspirer de ce fil de discussion consacré à l'importation d'articles par requête SQL:
http://www.openconcerto.org/forum/viewt ... f=9&t=1438
EricM
Messages : 5
Enregistré le : mer. févr. 10, 2016 9:32 pm

mer. févr. 10, 2016 10:13 pm

Bonsoir à tous,

Je suis comme poimlk, à la recherche de cette formidable fonctionnalité d'import/export tant vantée sur le site, les résultats de recherche et les articles divers mais non documentée dans le manuel ni ailleurs.
Je n'en trouve nulle trace dans la UI.

Existe-il un/des tuto(s)
  • 1) sur l'export de données (saisies pourquoi pas sur un Openconcerto monoposte H2)
    2) sur l'import de données vers un Openconcerto multiposte PostGreSQL et ce sans passer par pgAdmin3 ni des scripts SQL s'adressant plus à des personnes spécialisées type programmeurs et admins de SGBDs.
car le ticket d'entrée et l'overhead de boulot générés sur l'analyse de toutes tables et relations, clés étrangères et dépendances diverses ... sont assez important.

Exemple
Des imports au format RImport.txt seraient un plus (assez facile à générer; je l'ai déjà fait en Java pour importer dans CIEL des écritures auto imputées - car les filtres ne fonctionnent pas ou très très mal sur CIEL :evil: - à partir des relevés bancaires OFX ou QIF)

Mon problème
J'ai déjà fait l'import par SQL - sans avoir lu ce forum avant - en générant les scripts SQL à partir des données CSV depuis un tableur mais une fois les scripts SQL déroulés, il y a des problèmes de relation et de clés étrangères ailleurs (sur des ... devis !!! mais c'est à mon avis un effet de bord).
Ces imports d'écriture doivent être injectés dans les tables suivant l'ordre ci-dessous sans quoi des contraintes de clés étrangères rendent impossible les insertions :
  • 1 - JOURNAL
    2 - PIECE
    3 - MOUVEMENT
    4 - SAISIE_KM
    5 - COMPTE_PCE
    6 - ECRITURE
    7 - SAISIE_KM_ELEMENT
Une fois fait j'ai rencontré des problèmes d'utilisation du soft : lors de l'utilisation de OpenConcerto les d'enregistrements ne peuvent plus être insérés car les séquences sont restées à la position '2' alors qu'elles devraient avoir été mises à jour à 780 ... ect et les saisies ultérieures tentent d'éraser les données importées entre temps par SQL.
Je pense qu'il s'agit d'un problème au niveau des séquences qui ne sont pas incrémentées lors des INSERT INTO (pas auto_increment ou de type "serial" dans les champs ID des tables).
A la fin j'ai des stack traces Java à n'en plus finir après une tentative de création de DEVIS - n'ayant bien sûr aucun lien évident direct avec les saisies KM - ce qui provoque à l'invite, après la connexion l'affichage d'une relation ID_CLIENT_DEPARTEMENT ou équivalent qui explose et des NullPointerExceptions (je suis en version 1.3.2), ce qui est dommage et ne donne pas confiance coté utilisateur dans le soft qui est bon j'en suis convaincu.

Je salue l'initiative OpenConcerto et ne peux que l'encourager ainsi que remercier ses développeurs/concepteurs: merci de votre formidable boulot et bravo (et je pèse mes mots car le code est volumineux).

Même si ce n'est pas l'envie qui m'en manque de me plonger dedans, c'est le temps pour le moment.

Merci d'avance.

Cordialement,
Eric
Samuel_Burg
Messages : 144
Enregistré le : mer. juil. 22, 2015 12:17 pm

jeu. févr. 11, 2016 3:48 pm

Bonjour,

Votre ordre d'insertion des écritures au km ne me semble pas le bon.
Pour moi, ça fonctionne avec cet ordre là :
(attention aux ID et seq dans les différentes tables)

Code : Tout sélectionner

set client_encoding = 'utf-8';
SET search_path = "OpenConcerto48", pg_catalog;
puis si on veut faire le grand ménage :

Code : Tout sélectionner

 DELETE FROM ONLY "SAISIE_KM_ELEMENT" WHERE "ID" > 1;
 DELETE FROM ONLY "SAISIE_KM" WHERE "ID" > 1;
 DELETE FROM ONLY "ECRITURE" WHERE "ID" > 1;
 DELETE FROM ONLY "MOUVEMENT" WHERE "ID" > 1;
 DELETE FROM ONLY "PIECE" WHERE "ID" > 1;
 DELETE FROM ONLY "JOURNAL" WHERE "ID" > 1;
 DELETE FROM ONLY "COMPTE_PCE" WHERE "ID" > 1;
 
puis les insertions :

Code : Tout sélectionner

COPY "COMPTE_PCE" ("ORDRE", "ID_NATURE_COMPTE", "NUMERO", "NOM", "TOTAL_DEBIT", "TOTAL_CREDIT", "ID", "CREATION_DATE", "MODIFICATION_DATE", "ARCHIVE", "RACINE", "ID_USER_COMMON_CREATE", "ID_USER_COMMON_MODIFY", "INFOS")
 FROM '/home/postgres/ecritures/COMPTE_PCE_2014_ConcertoCSV.csv'
 (FORMAT "csv", NULL E'\\N', HEADER, ENCODING "UTF8");
 
COPY "JOURNAL" ("ORDRE", "CODE", "NOM", "ID", "TYPE_BANQUE", "CREATION_DATE", "MODIFICATION_DATE", "ID_USER_COMMON_CREATE", "ID_USER_COMMON_MODIFY", "ARCHIVE", "PAR_DEFAUT")
 FROM '/home/postgres/ecritures/JOURNAL_2014_ConcertoCSV.csv'
 (FORMAT "csv", NULL E'\\N', HEADER, ENCODING "UTF8");
 
COPY "PIECE" ("ID", "ORDRE", "CREATION_DATE", "MODIFICATION_DATE", "NOM", "ARCHIVE", "ID_USER_COMMON_CREATE", "ID_USER_COMMON_MODIFY")
 FROM '/home/postgres/ecritures/PIECE_2014_ConcertoCSV.csv'
 (FORMAT "csv", NULL E'\\N', HEADER, ENCODING "UTF8");
 
COPY "MOUVEMENT" ("ID", "NUMERO", "ORDRE", "SOURCE", "IDSOURCE", "CREATION_DATE", "MODIFICATION_DATE", "ID_PIECE", "ID_MOUVEMENT_PERE", "ARCHIVE", "ID_USER_COMMON_CREATE", "ID_USER_COMMON_MODIFY")
 FROM '/home/postgres/ecritures/MOUVEMENT_2014_ConcertoCSV.csv'
 (FORMAT "csv", NULL E'\\N', HEADER, ENCODING "UTF8");
 
COPY "ECRITURE" ("ID", "ORDRE", "ID_MOUVEMENT", "ID_JOURNAL", "JOURNAL_NOM", "JOURNAL_CODE", "NOM", "ID_COMPTE_PCE", "COMPTE_NUMERO", "COMPTE_NOM", "DATE", "DEBIT", "CREDIT", "LETTRAGE", "POINTEE", "VALIDE", "ARCHIVE", "CREATION_DATE", "MODIFICATION_DATE", "DATE_LETTRAGE", "DATE_POINTEE", "DATE_VALIDE", "DATE_EXPORT", "IDUSER_VALIDE", "ID_USER_COMMON_CREATE", "ID_USER_COMMON_MODIFY", "IDUSER_CREATE", "IDUSER_DELETE", "CODE_CLIENT")
 FROM '/home/postgres/ecritures/ECRITURE_2014_ConcertoCSV.csv'
 (FORMAT "csv", NULL E'\\N', HEADER, ENCODING "UTF8");

COPY "SAISIE_KM" ("ID", "ORDRE", "ID_MOUVEMENT", "ID_JOURNAL", "DATE", "NOM", "CREATION_DATE", "MODIFICATION_DATE", "ID_USER_COMMON_CREATE", "ID_USER_COMMON_MODIFY", "ARCHIVE")
 FROM '/home/postgres/ecritures/SAISIE_KM_2014_ConcertoCSV.csv'
 (FORMAT "csv", NULL E'\\N', HEADER, ENCODING "UTF8");

COPY "SAISIE_KM_ELEMENT" ("ID", "ORDRE", "ID_SAISIE_KM", "ID_ECRITURE", "NOM_ECRITURE", "NUMERO", "NOM", "DEBIT", "CREDIT", "CREATION_DATE", "MODIFICATION_DATE", "ID_USER_COMMON_CREATE", "ID_USER_COMMON_MODIFY", "ARCHIVE")
 FROM '/home/postgres/ecritures/SAISIE_KM_ELEMENT_2014_ConcertoCSV.csv'
 (FORMAT "csv", NULL E'\\N', HEADER, ENCODING "UTF8");
 
puis on conclut avec l'ajustement des séquences :

Code : Tout sélectionner

SELECT setval('"COMPTE_PCE_ID_seq"', (SELECT MAX("ID") FROM "COMPTE_PCE"));
 SELECT setval('"JOURNAL_ID_seq"', (SELECT MAX("ID") FROM "JOURNAL"));  
 SELECT setval('"PIECE_ID_seq"', (SELECT MAX("ID") FROM "PIECE"));
 SELECT setval('"MOUVEMENT_ID_seq"', (SELECT MAX("ID") FROM "MOUVEMENT"));
 SELECT setval('"ECRITURE_ID_seq"', (SELECT MAX("ID") FROM "ECRITURE"));
 SELECT setval('"SAISIE_KM_ID_seq"', (SELECT MAX("ID") FROM "SAISIE_KM"));
 SELECT setval('"SAISIE_KM_ELEMENT_ID_seq"', (SELECT MAX("ID") FROM "SAISIE_KM_ELEMENT"));
c'est un peu méchant en première lecture, mais une fois que l'on a ajuster son script à ses propres besoins, c'est très efficace.

Cordialement,

Samuel
Répondre