Hi,
I’ve just upgrade Dolibarr from 2.9.0 to 3.2.0. I made the chain-upgrade (first 2.9.0 to 3.0.1, then 3.0.1 to 3.1.1 and finally 3.1.1 to 3.2.0).
After each upgrade step I verify that there were no errors and made a simple application walkthrough checking for errors. Everything seemed good.
Then I start using the new version for real, created a new invoice, feel the data and when I wanted to validate it, there was no effect on the operation. After clicking “Validate” the screen returns with no errors hiding the buttons as if the invoice were validated successful, but it wasn’t. If I refresh the screen or navigate to the invoice again, it looks like a draft.
I enabled the syslog module to see if there’s any error that could be helpful, but I didn’t found anything (below are the lines written during the operation). The only thing I could notice is that there is no UPDATE statement, so there’s no way the invoice to be really changed to the validated state.
I did the same operation in a testing environment I have in another server and could not reproduce the error. The production instance and testing instance are not identical, but I could not identify any difference that could be affecting the production environment.
Could please anybody give me some light here?
Thanks a lot!!!
====== BEGIN DOLIBARR.LOG ======
2012-08-01 17:16:08 INFO aaa.bbb.ccc.ddd nologin facture This is an already logged session. _SESSION[‘dol_login’]=user
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd nologin facture User::fetch sql=SELECT u.rowid, u.name, u.firstname, u.email, u.signature, u.office_phone, u.office_fax, u.user_mobile, u.admin, u.login, u.webcal_login, u.phenix_login, u.phenix_pass, u.note, u.pass, u.pass_crypted, u.pass_temp, u.fk_societe, u.fk_socpeople, u.fk_member, u.ldap_sid, u.statut, u.lang, u.entity, u.datec as datec, u.tms as datem, u.datelastlogin as datel, u.datepreviouslogin as datep, u.photo as photo, u.openid as openid, u.ref_int, u.ref_ext FROM llx_user as u WHERE u.entity IN (0,1) AND u.login = ‘user’
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture User::getrights sql=SELECT r.module, r.perms, r.subperms FROM llx_user_rights as ur, llx_rights_def as r WHERE r.id = ur.fk_id AND r.entity in (0,1) AND ur.fk_user= 1 AND r.perms IS NOT NULL
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture User::getrights sql=SELECT r.module, r.perms, r.subperms FROM llx_usergroup_rights as gr, llx_usergroup_user as gu, llx_rights_def as r WHERE r.id = gr.fk_id AND gr.fk_usergroup = gu.fk_usergroup AND gu.fk_user = 1 AND r.perms IS NOT NULL AND r.entity = 1 AND gu.entity IN (0,1)
2012-08-01 17:16:08 INFO aaa.bbb.ccc.ddd *user* facture — Access to /compta/facture.php
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture Facture::fetch sql=SELECT f.rowid,f.facnumber,f.ref_client,f.ref_ext,f.ref_int,f.type,f.fk_soc,f.amount,f.tva, f.localtax1, f.localtax2, f.total,f.total_ttc,f.remise_percent,f.remise_absolue,f.remise, f.datef as df, f.date_lim_reglement as dlr, f.datec as datec, f.date_valid as datev, f.tms as datem, f.note as note_private, f.note_public, f.fk_statut, f.paye, f.close_code, f.close_note, f.fk_user_author, f.fk_user_valid, f.model_pdf, f.fk_facture_source, f.fk_mode_reglement, f.fk_cond_reglement, f.fk_projet, f.extraparams, p.code as mode_reglement_code, p.libelle as mode_reglement_libelle, c.code as cond_reglement_code, c.libelle as cond_reglement_libelle, c.libelle_facture as cond_reglement_libelle_doc FROM llx_facture as f LEFT JOIN llx_c_payment_term as c ON f.fk_cond_reglement = c.rowid LEFT JOIN llx_c_paiement as p ON f.fk_mode_reglement = p.id WHERE f.entity = 1 AND f.rowid=28
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture Facture::fetch_lines sql=SELECT l.rowid, l.fk_product, l.fk_parent_line, l.description, l.product_type, l.price, l.qty, l.tva_tx, l.localtax1_tx, l.localtax2_tx, l.remise, l.remise_percent, l.fk_remise_except, l.subprice, l.rang, l.special_code, l.date_start as date_start, l.date_end as date_end, l.info_bits, l.total_ht, l.total_tva, l.total_localtax1, l.total_localtax2, l.total_ttc, l.fk_code_ventilation, l.fk_export_compta, p.ref as product_ref, p.fk_product_type as fk_product_type, p.label as product_label, p.description as product_desc FROM llx_facturedet as l LEFT JOIN llx_product as p ON l.fk_product = p.rowid WHERE l.fk_facture = 28 ORDER BY l.rang
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture Facture::fetch sql=SELECT f.rowid,f.facnumber,f.ref_client,f.ref_ext,f.ref_int,f.type,f.fk_soc,f.amount,f.tva, f.localtax1, f.localtax2, f.total,f.total_ttc,f.remise_percent,f.remise_absolue,f.remise, f.datef as df, f.date_lim_reglement as dlr, f.datec as datec, f.date_valid as datev, f.tms as datem, f.note as note_private, f.note_public, f.fk_statut, f.paye, f.close_code, f.close_note, f.fk_user_author, f.fk_user_valid, f.model_pdf, f.fk_facture_source, f.fk_mode_reglement, f.fk_cond_reglement, f.fk_projet, f.extraparams, p.code as mode_reglement_code, p.libelle as mode_reglement_libelle, c.code as cond_reglement_code, c.libelle as cond_reglement_libelle, c.libelle_facture as cond_reglement_libelle_doc FROM llx_facture as f LEFT JOIN llx_c_payment_term as c ON f.fk_cond_reglement = c.rowid LEFT JOIN llx_c_paiement as p ON f.fk_mode_reglement = p.id WHERE f.entity = 1 AND f.rowid=28
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture Facture::fetch_lines sql=SELECT l.rowid, l.fk_product, l.fk_parent_line, l.description, l.product_type, l.price, l.qty, l.tva_tx, l.localtax1_tx, l.localtax2_tx, l.remise, l.remise_percent, l.fk_remise_except, l.subprice, l.rang, l.special_code, l.date_start as date_start, l.date_end as date_end, l.info_bits, l.total_ht, l.total_tva, l.total_localtax1, l.total_localtax2, l.total_ttc, l.fk_code_ventilation, l.fk_export_compta, p.ref as product_ref, p.fk_product_type as fk_product_type, p.label as product_label, p.description as product_desc FROM llx_facturedet as l LEFT JOIN llx_product as p ON l.fk_product = p.rowid WHERE l.fk_facture = 28 ORDER BY l.rang
2012-08-01 17:16:08 INFO aaa.bbb.ccc.ddd *user* facture Menubase::menuLeftCharger sql=SELECT m.rowid, m.type, m.fk_menu, m.fk_mainmenu, m.fk_leftmenu, m.url, m.titre, m.langs, m.perms, m.enabled, m.target, m.mainmenu, m.leftmenu FROM llx_menu as m WHERE m.entity = 1 AND m.menu_handler IN (‘eldy’,‘all’) AND m.usertype IN (0,2) ORDER BY m.position, m.rowid
2012-08-01 17:16:08 INFO aaa.bbb.ccc.ddd *user* facture Menubase::menuLeftCharger sql=SELECT m.rowid, m.type, m.fk_menu, m.fk_mainmenu, m.fk_leftmenu, m.url, m.titre, m.langs, m.perms, m.enabled, m.target, m.mainmenu, m.leftmenu FROM llx_menu as m WHERE m.entity = 1 AND m.menu_handler IN (‘eldy’,‘all’) AND m.usertype IN (0,2) ORDER BY m.position, m.rowid
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture Facture::fetch sql=SELECT f.rowid,f.facnumber,f.ref_client,f.ref_ext,f.ref_int,f.type,f.fk_soc,f.amount,f.tva, f.localtax1, f.localtax2, f.total,f.total_ttc,f.remise_percent,f.remise_absolue,f.remise, f.datef as df, f.date_lim_reglement as dlr, f.datec as datec, f.date_valid as datev, f.tms as datem, f.note as note_private, f.note_public, f.fk_statut, f.paye, f.close_code, f.close_note, f.fk_user_author, f.fk_user_valid, f.model_pdf, f.fk_facture_source, f.fk_mode_reglement, f.fk_cond_reglement, f.fk_projet, f.extraparams, p.code as mode_reglement_code, p.libelle as mode_reglement_libelle, c.code as cond_reglement_code, c.libelle as cond_reglement_libelle, c.libelle_facture as cond_reglement_libelle_doc FROM llx_facture as f LEFT JOIN llx_c_payment_term as c ON f.fk_cond_reglement = c.rowid LEFT JOIN llx_c_paiement as p ON f.fk_mode_reglement = p.id WHERE f.entity = 1 AND f.rowid=28
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture Facture::fetch_lines sql=SELECT l.rowid, l.fk_product, l.fk_parent_line, l.description, l.product_type, l.price, l.qty, l.tva_tx, l.localtax1_tx, l.localtax2_tx, l.remise, l.remise_percent, l.fk_remise_except, l.subprice, l.rang, l.special_code, l.date_start as date_start, l.date_end as date_end, l.info_bits, l.total_ht, l.total_tva, l.total_localtax1, l.total_localtax2, l.total_ttc, l.fk_code_ventilation, l.fk_export_compta, p.ref as product_ref, p.fk_product_type as fk_product_type, p.label as product_label, p.description as product_desc FROM llx_facturedet as l LEFT JOIN llx_product as p ON l.fk_product = p.rowid WHERE l.fk_facture = 28 ORDER BY l.rang
2012-08-01 17:16:08 INFO aaa.bbb.ccc.ddd *user* facture Societe::fetch SELECT s.rowid, s.nom as name, s.entity, s.ref_ext, s.ref_int, s.address, s.datec as datec, s.prefix_comm, s.status, s.price_level, s.tms as date_update, s.tel, s.fax, s.email, s.url, s.cp as zip, s.ville as town, s.note, s.client, s.fournisseur, s.siren as idprof1, s.siret as idprof2, s.ape as idprof3, s.idprof4, s.capital, s.tva_intra, s.fk_typent as typent_id, s.fk_effectif as effectif_id, s.fk_forme_juridique as forme_juridique_code, s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur, s.parent, s.barcode, s.fk_departement, s.fk_pays as country_id, s.fk_stcomm, s.remise_client, s.mode_reglement, s.cond_reglement, s.tva_assuj, s.localtax1_assuj, s.localtax2_assuj, s.fk_prospectlevel, s.default_lang, s.logo, s.import_key, s.canvas, fj.libelle as forme_juridique, e.libelle as effectif, p.code as country_code, p.libelle as country, d.code_departement as state_code, d.nom as state, st.libelle as stcomm, te.code as typent_code FROM llx_societe as s LEFT JOIN llx_c_effectif as e ON s.fk_effectif = e.id LEFT JOIN llx_c_pays as p ON s.fk_pays = p.rowid LEFT JOIN llx_c_stcomm as st ON s.fk_stcomm = st.id LEFT JOIN llx_c_forme_juridique as fj ON s.fk_forme_juridique = fj.code LEFT JOIN llx_c_departements as d ON s.fk_departement = d.rowid LEFT JOIN llx_c_typent as te ON s.fk_typent = te.id WHERE s.rowid = 5
2012-08-01 17:16:08 INFO aaa.bbb.ccc.ddd *user* facture Societe::fetch SELECT s.rowid, s.nom as name, s.entity, s.ref_ext, s.ref_int, s.address, s.datec as datec, s.prefix_comm, s.status, s.price_level, s.tms as date_update, s.tel, s.fax, s.email, s.url, s.cp as zip, s.ville as town, s.note, s.client, s.fournisseur, s.siren as idprof1, s.siret as idprof2, s.ape as idprof3, s.idprof4, s.capital, s.tva_intra, s.fk_typent as typent_id, s.fk_effectif as effectif_id, s.fk_forme_juridique as forme_juridique_code, s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur, s.parent, s.barcode, s.fk_departement, s.fk_pays as country_id, s.fk_stcomm, s.remise_client, s.mode_reglement, s.cond_reglement, s.tva_assuj, s.localtax1_assuj, s.localtax2_assuj, s.fk_prospectlevel, s.default_lang, s.logo, s.import_key, s.canvas, fj.libelle as forme_juridique, e.libelle as effectif, p.code as country_code, p.libelle as country, d.code_departement as state_code, d.nom as state, st.libelle as stcomm, te.code as typent_code FROM llx_societe as s LEFT JOIN llx_c_effectif as e ON s.fk_effectif = e.id LEFT JOIN llx_c_pays as p ON s.fk_pays = p.rowid LEFT JOIN llx_c_stcomm as st ON s.fk_stcomm = st.id LEFT JOIN llx_c_forme_juridique as fj ON s.fk_forme_juridique = fj.code LEFT JOIN llx_c_departements as d ON s.fk_departement = d.rowid LEFT JOIN llx_c_typent as te ON s.fk_typent = te.id WHERE s.rowid = 5
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture Facture::getSommePaiement sql=SELECT sum(amount) as amount FROM llx_paiement_facture WHERE fk_facture = 28
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture DiscountAbsolute::getSumCreditNotesUsed sql=SELECT sum(rc.amount_ttc) as amount FROM llx_societe_remise_except as rc, llx_facture as f WHERE rc.fk_facture_source=f.rowid AND rc.fk_facture = 28 AND f.type = 2
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture DiscountAbsolute::getSumDepositsUsed sql=SELECT sum(rc.amount_ttc) as amount FROM llx_societe_remise_except as rc, llx_facture as f WHERE rc.fk_facture_source=f.rowid AND rc.fk_facture = 28 AND f.type = 3
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture DiscountAbsolute::getAvailableDiscounts sql=SELECT SUM(rc.amount_ttc) as amount FROM llx_societe_remise_except as rc WHERE (rc.fk_facture IS NULL AND rc.fk_facture_line IS NULL) AND rc.fk_soc = 5 AND (fk_facture_source IS NULL OR (fk_facture_source IS NOT NULL AND description=’(DEPOSIT)’))
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture DiscountAbsolute::getAvailableDiscounts sql=SELECT SUM(rc.amount_ttc) as amount FROM llx_societe_remise_except as rc WHERE (rc.fk_facture IS NULL AND rc.fk_facture_line IS NULL) AND rc.fk_soc = 5 AND (fk_facture_source IS NOT NULL AND description <> ‘(DEPOSIT)’)
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture User::fetch sql=SELECT u.rowid, u.name, u.firstname, u.email, u.signature, u.office_phone, u.office_fax, u.user_mobile, u.admin, u.login, u.webcal_login, u.phenix_login, u.phenix_pass, u.note, u.pass, u.pass_crypted, u.pass_temp, u.fk_societe, u.fk_socpeople, u.fk_member, u.ldap_sid, u.statut, u.lang, u.entity, u.datec as datec, u.tms as datem, u.datelastlogin as datel, u.datepreviouslogin as datep, u.photo as photo, u.openid as openid, u.ref_int, u.ref_ext FROM llx_user as u WHERE u.entity IN (0,1) AND u.rowid = 1
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture functions2::get_next_value sql=SELECT MAX(SUBSTRING(facnumber, 1, 8)) as val FROM llx_facture WHERE facnumber LIKE ‘________’ AND facnumber NOT LIKE ‘%PROV%’ AND entity IN (1)
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture functions2::get_next_value return 00000127
2012-08-01 17:16:08 INFO aaa.bbb.ccc.ddd *user* facture DiscountAbsolute::fetch sql=SELECT sr.rowid, sr.fk_soc, sr.fk_user, sr.amount_ht, sr.amount_tva, sr.amount_ttc, sr.tva_tx, sr.fk_facture_line, sr.fk_facture, sr.fk_facture_source, sr.description, sr.datec, f.facnumber as ref_facture_source FROM llx_societe_remise_except as sr LEFT JOIN llx_facture as f ON sr.fk_facture_source = f.rowid WHERE sr.fk_facture_source=28
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture Form::load_cache_conditions_paiements sql=SELECT rowid, code, libelle FROM llx_c_payment_term WHERE active=1 ORDER BY sortorder
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture Form::load_cache_types_paiements sql=SELECT id, code, libelle, type FROM llx_c_paiement WHERE active > 0 ORDER BY id
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture Translate::getLabelFromKey sql=SELECT libelle as label FROM llx_c_paiement WHERE code = ‘DEP’
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture Translate::getLabelFromKey sql=SELECT libelle as label FROM llx_c_paiement WHERE code = ‘DEB’
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture Translate::getLabelFromKey sql=SELECT label as label FROM llx_c_currencies WHERE code_iso = ‘ARP’
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture Project::fetch sql=SELECT rowid, ref, title, description, public, datec, tms, dateo, datee, fk_soc, fk_user_creat, fk_statut, note_private, note_public FROM llx_projet WHERE rowid=2
2012-08-01 17:16:08 INFO aaa.bbb.ccc.ddd *user* facture files.lib.php::dol_dir_list path=/usr/share/dolibarr/documents/facture/(PROV28) types=files recursive=0 filter= excludefilter=.meta$
2012-08-01 17:16:08 INFO aaa.bbb.ccc.ddd *user* facture Facture::fetchObjectLink sql=SELECT fk_source, sourcetype, fk_target, targettype FROM llx_element_element WHERE (fk_source = ‘28’ AND sourcetype = ‘facture’) OR (fk_target = ‘28’ AND targettype = ‘facture’)
2012-08-01 17:16:08 INFO aaa.bbb.ccc.ddd *user* facture ActionComm::getActions sql=SELECT a.id FROM llx_actioncomm as a WHERE a.entity = 1 AND a.fk_element = 28 AND a.elementtype = ‘invoice’
2012-08-01 17:16:08 DEBUG aaa.bbb.ccc.ddd *user* facture — End access to /compta/facture.php
====== END DOLIBARR.LOG ======