diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php
index b284b42cfeb..bf3594e967d 100644
--- a/htdocs/accountancy/class/bookkeeping.class.php
+++ b/htdocs/accountancy/class/bookkeeping.class.php
@@ -248,7 +248,7 @@ class BookKeeping extends CommonObject
// First check if line not yet already in bookkeeping.
// Note that we must include doc_type - fk_doc - numero_compte - label to be sure to have unicity of line (we may have several lines
- // with same doc_type, fk_odc, numero_compte for 1 invoice line when using localtaxes with same account)
+ // with same doc_type, fk_doc, numero_compte for 1 invoice line when using localtaxes with same account)
// WARNING: This is not reliable, label may have been modified. This is just a small protection.
// The page to make journalization make the test on couple doc_type - fk_doc only.
$sql = "SELECT count(*) as nb";
@@ -1700,11 +1700,11 @@ class BookKeeping extends CommonObject
$error++;
}
$sql = 'INSERT INTO ' . MAIN_DB_PREFIX . $this->table_element.'(doc_date, doc_type,';
- $sql .= ' doc_ref, fk_doc, fk_docdet, thirdparty_code, subledger_account, subledger_label,';
+ $sql .= ' doc_ref, fk_doc, fk_docdet, entity, thirdparty_code, subledger_account, subledger_label,';
$sql .= ' numero_compte, label_compte, label_operation, debit, credit,';
$sql .= ' montant, sens, fk_user_author, import_key, code_journal, journal_label, piece_num)';
$sql .= 'SELECT doc_date, doc_type,';
- $sql .= ' doc_ref, fk_doc, fk_docdet, thirdparty_code, subledger_account, subledger_label,';
+ $sql .= ' doc_ref, fk_doc, fk_docdet, entity, thirdparty_code, subledger_account, subledger_label,';
$sql .= ' numero_compte, label_compte, label_operation, debit, credit,';
$sql .= ' montant, sens, fk_user_author, import_key, code_journal, journal_label, '.$next_piecenum.'';
$sql .= ' FROM '.MAIN_DB_PREFIX . $this->table_element.'_tmp WHERE piece_num = '.$piece_num;
diff --git a/htdocs/admin/defaultvalues.php b/htdocs/admin/defaultvalues.php
index 41c1c990d39..a946aeeacfd 100644
--- a/htdocs/admin/defaultvalues.php
+++ b/htdocs/admin/defaultvalues.php
@@ -352,7 +352,6 @@ if ($result)
{
$obj = $db->fetch_object($result);
-
print "\n";
print '
';
@@ -383,10 +382,7 @@ if ($result)
print '';
}
- if (! empty($conf->multicompany->enabled) && !$user->entity)
- {
- print ' | ';
- }
+ print ' | ';
// Actions
print '';
@@ -416,7 +412,6 @@ else
dol_print_error($db);
}
-
print '';
print '';
diff --git a/htdocs/core/class/utils.class.php b/htdocs/core/class/utils.class.php
index 1899d78694e..6cacf353ca1 100644
--- a/htdocs/core/class/utils.class.php
+++ b/htdocs/core/class/utils.class.php
@@ -613,12 +613,13 @@ class Utils
$FILENAMEASCII=strtolower($module).'.asciidoc';
$FILENAMEDOC=strtolower($module).'.html'; // TODO Use/text PDF
- $dirofmodule = dol_buildpath(strtolower($module), 0).'/doc';
+ $dirofmodule = dol_buildpath(strtolower($module), 0);
+ $dirofmoduledoc = dol_buildpath(strtolower($module), 0).'/doc';
$dirofmoduletmp = dol_buildpath(strtolower($module), 0).'/doc/temp';
- $outputfiledoc = $dirofmodule.'/'.$FILENAMEDOC;
- if ($dirofmodule)
+ $outputfiledoc = $dirofmoduledoc.'/'.$FILENAMEDOC;
+ if ($dirofmoduledoc)
{
- if (! dol_is_dir($dirofmodule)) dol_mkdir($dirofmodule);
+ if (! dol_is_dir($dirofmoduledoc)) dol_mkdir($dirofmoduledoc);
if (! dol_is_dir($dirofmoduletmp)) dol_mkdir($dirofmoduletmp);
if (! is_writable($dirofmoduletmp))
{
@@ -626,6 +627,13 @@ class Utils
return -1;
}
+ $conf->global->MODULEBUILDER_ASCIIDOCTOR='asciidoctor';
+ if (empty($conf->global->MODULEBUILDER_ASCIIDOCTOR))
+ {
+ $this->error = 'Setup of module ModuleBuilder not complete';
+ return -1;
+ }
+
$destfile=$dirofmoduletmp.'/'.$FILENAMEASCII;
$fhandle = fopen($destfile, 'w+');
@@ -637,6 +645,7 @@ class Utils
foreach ($specs as $spec)
{
if (preg_match('/notindoc/', $spec['relativename'])) continue; // Discard file
+ if (preg_match('/example/', $spec['relativename'])) continue; // Discard file
if (preg_match('/disabled/', $spec['relativename'])) continue; // Discard file
$pathtofile = strtolower($module).'/doc/'.$spec['relativename'];
@@ -662,17 +671,26 @@ class Utils
// TODO
fwrite($fhandle, "TODO...");
+
+ fwrite($fhandle, "\n\n\n== CHANGELOG...\n\n");
+
+ // TODO
+ fwrite($fhandle, "TODO...");
+
+
+
fclose($fhandle);
}
- $conf->global->MODULEBUILDER_ASCIIDOCTOR='asciidoctor';
- if (empty($conf->global->MODULEBUILDER_ASCIIDOCTOR))
- {
- dol_print_error('', 'Module setup not complete');
- exit;
- }
+ // Copy some files into temp directory
+ dol_copy($dirofmodule.'/README.md', $dirofmoduletmp.'/README.md', 0, 1);
+ dol_copy($dirofmodule.'/ChangeLog.md', $dirofmoduletmp.'/ChangeLog.md', 0, 1);
- $command=$conf->global->MODULEBUILDER_ASCIIDOCTOR.' '.$destfile.' -n -o '.$dirofmodule.'/'.$FILENAMEDOC;
+ // Launch doc generation
+ $currentdir = getcwd();
+ chdir($dirofmodule);
+
+ $command=$conf->global->MODULEBUILDER_ASCIIDOCTOR.' '.$destfile.' -n -o '.$dirofmoduledoc.'/'.$FILENAMEDOC;
$outfile=$dirofmoduletmp.'/out.tmp';
require_once DOL_DOCUMENT_ROOT.'/core/class/utils.class.php';
@@ -683,6 +701,8 @@ class Utils
$this->error = $resarray['error'].' '.$resarray['output'];
}
$result = ($resarray['result'] == 0) ? 1 : 0;
+
+ chdir($currentdir);
}
else
{
diff --git a/htdocs/core/modules/modProduct.class.php b/htdocs/core/modules/modProduct.class.php
index 8676f002757..aa64d7222a2 100644
--- a/htdocs/core/modules/modProduct.class.php
+++ b/htdocs/core/modules/modProduct.class.php
@@ -67,7 +67,7 @@ class modProduct extends DolibarrModules
// Dependencies
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
- $this->requiredby = array("modStock","modBarcode","modProductBatch"); // List of module ids to disable if this one is disabled
+ $this->requiredby = array("modStock","modBarcode","modProductBatch","modVariants"); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
diff --git a/htdocs/langs/en_US/modulebuilder.lang b/htdocs/langs/en_US/modulebuilder.lang
index f8d4669b8e5..765edad6687 100644
--- a/htdocs/langs/en_US/modulebuilder.lang
+++ b/htdocs/langs/en_US/modulebuilder.lang
@@ -100,3 +100,4 @@ UseAboutPage=Disable the about page
UseDocFolder=Disable the documentation folder
UseSpecificReadme=Use a specific ReadMe
RealPathOfModule=Real path of module
+ContentCantBeEmpty=Content of file can't be empty
\ No newline at end of file
diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php
index f9ee16907fd..7e290055d43 100644
--- a/htdocs/modulebuilder/index.php
+++ b/htdocs/modulebuilder/index.php
@@ -94,6 +94,8 @@ if (empty($newmask)) // This should no happen
if ($dirins && $action == 'initmodule' && $modulename)
{
+ $modulename = ucfirst($modulename); // Force first letter in uppercase
+
if (preg_match('/[^a-z0-9_]/i', $modulename))
{
$error++;
@@ -150,6 +152,7 @@ if ($dirins && $action == 'initmodule' && $modulename)
dol_delete_file($destdir.'/img/object_myobject.png');
dol_delete_file($destdir.'/class/myobject.class.php');
dol_delete_file($destdir.'/class/api_mymodule.class.php');
+ dol_delete_file($destdir.'/doc/*example*');
}
// Edit PHP files
@@ -1124,11 +1127,6 @@ elseif (! empty($module))
$head2[$h][2] = 'description';
$h++;
- $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=specifications&module='.$module.($forceddirread?'@'.$dirread:'');
- $head2[$h][1] = $langs->trans("Specifications");
- $head2[$h][2] = 'specifications';
- $h++;
-
$head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=languages&module='.$module.($forceddirread?'@'.$dirread:'');
$head2[$h][1] = $langs->trans("Languages");
$head2[$h][2] = 'languages';
@@ -1169,6 +1167,11 @@ elseif (! empty($module))
$head2[$h][2] = 'cron';
$h++;
+ $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=specifications&module='.$module.($forceddirread?'@'.$dirread:'');
+ $head2[$h][1] = $langs->trans("Documentation");
+ $head2[$h][2] = 'specifications';
+ $h++;
+
$head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=buildpackage&module='.$module.($forceddirread?'@'.$dirread:'');
$head2[$h][1] = $langs->trans("BuildPackage");
$head2[$h][2] = 'buildpackage';
diff --git a/htdocs/modulebuilder/template/doc/Specifications.asciidoc b/htdocs/modulebuilder/template/doc/Specifications.asciidoc
index 4610cb188f9..be8316c8cda 100644
--- a/htdocs/modulebuilder/template/doc/Specifications.asciidoc
+++ b/htdocs/modulebuilder/template/doc/Specifications.asciidoc
@@ -8,7 +8,7 @@
This document describe specifications of module MyModule
-*Log of versions*
+*Log of versions of document*
[options="header",format="csv"]
|===
@@ -24,3 +24,6 @@ This document was generated using Dolibarr ERP CRM process
<<<
+///include::README.md[]
+
+///include::ChangeLog.md[]
diff --git a/htdocs/modulebuilder/template/doc/Specifications_full_en.notindoc.asciidoc b/htdocs/modulebuilder/template/doc/Specifications_full_en.example.asciidoc
similarity index 100%
rename from htdocs/modulebuilder/template/doc/Specifications_full_en.notindoc.asciidoc
rename to htdocs/modulebuilder/template/doc/Specifications_full_en.example.asciidoc
|