diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index dad4089b6d2..9e696b9d2af 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -344,7 +344,7 @@ if ($action == 'delmouvconfirm') { } } -// Export into a file with format defined into setup +// Export into a file with format defined into setup (FEC, CSV, ...) if ($action == 'export_file') { $result = $object->fetchAll($sortorder, $sortfield, 0, 0, $filter); @@ -357,7 +357,9 @@ if ($action == 'export_file') { { $accountancyexport = new AccountancyExport($db); $accountancyexport->export($object->lines); - if (!empty($accountancyexport->errors)) { + + if (!empty($accountancyexport->errors)) + { setEventMessages('', $accountancyexport->errors, 'errors'); } exit; diff --git a/htdocs/accountancy/class/accountancyexport.class.php b/htdocs/accountancy/class/accountancyexport.class.php index 13fec3cf388..7b832976e89 100644 --- a/htdocs/accountancy/class/accountancyexport.class.php +++ b/htdocs/accountancy/class/accountancyexport.class.php @@ -206,7 +206,7 @@ class AccountancyExport /** - * Function who chose which export to use with the default config + * Function who chose which export to use with the default config, and make the export into a file * * @param array $TData data * @return void @@ -214,16 +214,16 @@ class AccountancyExport public function export(&$TData) { global $conf, $langs; + global $search_date_end; // Used into /accountancy/tpl/export_journal.tpl.php - + // Define name of file to save $filename = 'general_ledger-'.$this->getFormatCode($conf->global->ACCOUNTING_EXPORT_MODELCSV); + include DOL_DOCUMENT_ROOT . '/accountancy/tpl/export_journal.tpl.php'; switch ($conf->global->ACCOUNTING_EXPORT_MODELCSV) { case self::$EXPORT_TYPE_NORMAL : - /*$this->exportNormal($TData); - break;*/ case self::$EXPORT_TYPE_CONFIGURABLE : $this->exportConfigurable($TData); break; @@ -261,32 +261,6 @@ class AccountancyExport } } - /** - * Export format : Normal - * - * @param array $objectLines data - * - * @return void - */ - /* Use $EXPORT_TYPE_CONFIGURABLE instead - public function exportNormal($objectLines) - { - global $conf; - - foreach ( $objectLines as $line ) { - // Std export - $date = dol_print_date($line->doc_date, $conf->global->ACCOUNTING_EXPORT_DATE); - print $date . $this->separator; - print $line->doc_ref . $this->separator; - print length_accountg($line->numero_compte) . $this->separator; - print length_accounta($line->subledger_account) . $this->separator; - print price($line->debit) . $this->separator; - print price($line->credit) . $this->separator; - print $line->code_journal . $this->separator; - print $this->end_line; - } - } - */ /** * Export format : CEGID diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 6bbc4cce743..1727f26927d 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -1003,8 +1003,7 @@ class BookKeeping extends CommonObject } } } - $sql.= ' WHERE 1 = 1'; - $sql .= " AND entity IN (" . getEntity('accountancy') . ")"; + $sql.= ' WHERE entity IN (' . getEntity('accountancy') . ')'; if (count($sqlwhere) > 0) { $sql .= ' AND ' . implode(' ' . $filtermode . ' ', $sqlwhere); } diff --git a/htdocs/accountancy/tpl/export_journal.tpl.php b/htdocs/accountancy/tpl/export_journal.tpl.php index 1d7e7fd6f54..d0d902770c0 100644 --- a/htdocs/accountancy/tpl/export_journal.tpl.php +++ b/htdocs/accountancy/tpl/export_journal.tpl.php @@ -37,7 +37,26 @@ header('Content-Type: text/csv'); if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == "11") // Specific filename for FEC model export { - $completefilename = $siren . "FEC" . $search_date_end . $endaccountingperiod . "." . $format; + + // FEC format is defined here: https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000027804775&cidTexte=LEGITEXT000006069583&dateTexte=20130802&oldAction=rechCodeArticle + if (empty($search_date_end)) + { + // TODO Get the max date into bookeeping table + $search_date_end = dol_now(); + } + $datetouseforfilename = $search_date_end; + $tmparray=dol_getdate($datetouseforfilename); + $fiscalmonth=empty($conf->global->SOCIETE_FISCAL_MONTH_START)?1:$conf->global->SOCIETE_FISCAL_MONTH_START; + // Define end of month to use + if ($tmparray['mon'] <= $fiscalmonth) $tmparray['mon']=$fiscalmonth; + else { + $tmparray['mon'] = $fiscalmonth; + $tmparray['year']++; + } + + $endaccountingperiod = dol_print_date(dol_get_last_day($tmparray['year'], $tmparray['mon']), 'dayxcard'); + + $completefilename = $siren . "FEC" . $endaccountingperiod . "." . $format; } else { diff --git a/htdocs/core/ajax/ajaxdirtree.php b/htdocs/core/ajax/ajaxdirtree.php index fc01474a072..173d8520423 100644 --- a/htdocs/core/ajax/ajaxdirtree.php +++ b/htdocs/core/ajax/ajaxdirtree.php @@ -468,16 +468,17 @@ function treeOutputForAbsoluteDir($sqltree, $selecteddir, $fullpathselecteddir, { //print 'modulepart='.$modulepart.' fullpathselecteddir='.$fullpathselecteddir.' - val[fullrelativename] (in database)='.$val['fullrelativename'].' - val[id]='.$val['id'].' - is_dir='.dol_is_dir($fullpathselecteddir . $file).' - file='.$file."\n"; $newselecteddir = $val['fullrelativename']; + $newfullpathselecteddir=''; if ($modulepart == 'ecm') { $newfullpathselecteddir=$conf->ecm->dir_output.'/'.($val['fullrelativename'] != '/' ? $val['fullrelativename'] : ''); } - if ($modulepart == 'medias') + elseif ($modulepart == 'medias') { $newfullpathselecteddir=$dolibarr_main_data_root.'/medias/'.($val['fullrelativename'] != '/' ? $val['fullrelativename'] : ''); } - treeOutputForAbsoluteDir($sqltree, $newselecteddir, $newfullpathselecteddir, $modulepart, $websitekey, $pageid, $preopened, $fullpathpreopened, $depth+1); + if ($newfullpathselecteddir) treeOutputForAbsoluteDir($sqltree, $newselecteddir, $newfullpathselecteddir, $modulepart, $websitekey, $pageid, $preopened, $fullpathpreopened, $depth+1); } print "\n"; diff --git a/htdocs/core/boxes/box_contracts.php b/htdocs/core/boxes/box_contracts.php index 6f9a62e1063..7592f882b59 100644 --- a/htdocs/core/boxes/box_contracts.php +++ b/htdocs/core/boxes/box_contracts.php @@ -40,7 +40,7 @@ class box_contracts extends ModeleBoxes * @var DoliDB Database handler. */ public $db; - + var $param; var $info_box_head = array(); @@ -83,7 +83,7 @@ class box_contracts extends ModeleBoxes $contractstatic=new Contrat($db); $thirdpartytmp=new Societe($db); - $sql = "SELECT s.nom as name, s.rowid as socid,"; + $sql = "SELECT s.nom as name, s.rowid as socid, s.email, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur,"; $sql.= " c.rowid, c.ref, c.statut as fk_statut, c.date_contrat, c.datec, c.fin_validite, c.date_cloture"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."contrat as c"; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; @@ -108,6 +108,7 @@ class box_contracts extends ModeleBoxes while ($line < $num) { $objp = $db->fetch_object($resql); + $datec=$db->jdate($objp->datec); $dateterm=$db->jdate($objp->fin_validite); $dateclose=$db->jdate($objp->date_cloture); @@ -120,6 +121,13 @@ class box_contracts extends ModeleBoxes $thirdpartytmp->name = $objp->name; $thirdpartytmp->id = $objp->socid; + $thirdpartytmp->email = $objp->email; + $thirdpartytmp->client = $objp->client; + $thirdpartytmp->fournisseur = $objp->fournisseur; + $thirdpartytmp->code_client = $objp->code_client; + $thirdpartytmp->code_fournisseur = $objp->code_fournisseur; + $thirdpartytmp->code_compta = $objp->code_compta; + $thirdpartytmp->code_compta_fournisseur = $objp->code_compta_fournisseur; // fin_validite is no more on contract but on services // if ($objp->fk_statut == 1 && $dateterm < ($now - $conf->contrat->cloture->warning_delay)) { $late = img_warning($langs->trans("Late")); } diff --git a/htdocs/core/boxes/box_services_contracts.php b/htdocs/core/boxes/box_services_contracts.php index 41d287d0c37..7c73bbbe328 100644 --- a/htdocs/core/boxes/box_services_contracts.php +++ b/htdocs/core/boxes/box_services_contracts.php @@ -41,7 +41,7 @@ class box_services_contracts extends ModeleBoxes * @var DoliDB Database handler. */ public $db; - + var $param; var $info_box_head = array(); @@ -88,8 +88,8 @@ class box_services_contracts extends ModeleBoxes $thirdpartytmp = new Societe($db); $productstatic = new Product($db); - $sql = "SELECT s.nom as name, s.rowid as socid,"; - $sql.= " c.rowid, c.ref, c.statut as contract_status,"; + $sql = "SELECT s.nom as name, s.rowid as socid, s.email, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur,"; + $sql.= " c.rowid, c.ref, c.statut as contract_status, c.ref_customer, c.ref_supplier,"; $sql.= " cd.rowid as cdid, cd.label, cd.description, cd.tms as datem, cd.statut, cd.product_type as type,"; $sql.= " p.rowid as product_id, p.ref as product_ref, p.label as plabel, p.fk_product_type as ptype, p.entity"; $sql.= " FROM (".MAIN_DB_PREFIX."societe as s"; @@ -127,9 +127,18 @@ class box_services_contracts extends ModeleBoxes $contractstatic->statut=$objp->contract_status; $contractstatic->id=$objp->rowid; $contractstatic->ref=$objp->ref; + $contractstatic->ref_customer=$objp->ref_customer; + $contractstatic->ref_supplier=$objp->ref_supplier; $thirdpartytmp->name = $objp->name; $thirdpartytmp->id = $objp->socid; + $thirdpartytmp->email = $objp->email; + $thirdpartytmp->client = $objp->client; + $thirdpartytmp->fournisseur = $objp->fournisseur; + $thirdpartytmp->code_client = $objp->code_client; + $thirdpartytmp->code_fournisseur = $objp->code_fournisseur; + $thirdpartytmp->code_compta = $objp->code_compta; + $thirdpartytmp->code_compta_fournisseur = $objp->code_compta_fournisseur; // Multilangs if (! empty($conf->global->MAIN_MULTILANGS) && $objp->product_id > 0) // if option multilang is on diff --git a/htdocs/core/boxes/box_services_expired.php b/htdocs/core/boxes/box_services_expired.php index afc087ad715..c23e9940377 100644 --- a/htdocs/core/boxes/box_services_expired.php +++ b/htdocs/core/boxes/box_services_expired.php @@ -39,7 +39,7 @@ class box_services_expired extends ModeleBoxes * @var DoliDB Database handler. */ public $db; - + var $param; var $info_box_head = array(); @@ -84,7 +84,7 @@ class box_services_expired extends ModeleBoxes // Select contracts with at least one expired service $sql = "SELECT "; $sql.= " c.rowid, c.ref, c.statut as fk_statut, c.date_contrat, c.ref_customer, c.ref_supplier,"; - $sql.= " s.nom as name, s.rowid as socid,"; + $sql.= " s.nom as name, s.rowid as socid, s.email, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur,"; $sql.= " MIN(cd.date_fin_validite) as date_line, COUNT(cd.rowid) as nb_services"; $sql.= " FROM ".MAIN_DB_PREFIX."contrat as c, ".MAIN_DB_PREFIX."societe s, ".MAIN_DB_PREFIX."contratdet as cd"; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; @@ -113,8 +113,15 @@ class box_services_expired extends ModeleBoxes $objp = $db->fetch_object($resql); - $thirdpartytmp->id = $objp->socid; $thirdpartytmp->name = $objp->name; + $thirdpartytmp->id = $objp->socid; + $thirdpartytmp->email = $objp->email; + $thirdpartytmp->client = $objp->client; + $thirdpartytmp->fournisseur = $objp->fournisseur; + $thirdpartytmp->code_client = $objp->code_client; + $thirdpartytmp->code_fournisseur = $objp->code_fournisseur; + $thirdpartytmp->code_compta = $objp->code_compta; + $thirdpartytmp->code_compta_fournisseur = $objp->code_compta_fournisseur; $contract->id = $objp->rowid; $contract->ref = $objp->ref; diff --git a/htdocs/core/class/menubase.class.php b/htdocs/core/class/menubase.class.php index 17ada096fd1..1ca10d9dd9b 100644 --- a/htdocs/core/class/menubase.class.php +++ b/htdocs/core/class/menubase.class.php @@ -126,7 +126,7 @@ class Menubase $this->perms=trim($this->perms); $this->enabled=trim($this->enabled); $this->user=trim($this->user); - $this->position=trim($this->position); + if (empty($this->position)) $this->position=0; if (! $this->level) $this->level=0; // Check parameters diff --git a/htdocs/core/tpl/onlinepaymentlinks.tpl.php b/htdocs/core/tpl/onlinepaymentlinks.tpl.php index a5c5ce7cf11..37639a5f8e6 100644 --- a/htdocs/core/tpl/onlinepaymentlinks.tpl.php +++ b/htdocs/core/tpl/onlinepaymentlinks.tpl.php @@ -1,4 +1,4 @@ -< * * This program is free software; you can redistribute it and/or modify diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 078b0d85fe8..c91593b079f 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -1071,10 +1071,26 @@ class Societe extends CommonObject $resql=$this->db->query($sql); if ($resql) { - unset($this->country_code); // We clean this because it may have been changed after an update of country_id - unset($this->country); - unset($this->state_code); - unset($this->state); + if (is_object($this->oldcopy)) // If we have information on old values + { + if ($this->oldcopy->country_id != $this->country_id) + { + unset($this->country_code); + unset($this->country); + } + if ($this->oldcopy->state_id != $this->state_id) + { + unset($this->state_code); + unset($this->state); + } + } + else + { + unset($this->country_code); // We clean this, in the doubt, because it may have been changed after an update of country_id + unset($this->country); + unset($this->state_code); + unset($this->state); + } $nbrowsaffected = $this->db->affected_rows($resql);