|
@@ -36,6 +36,9 @@ if (!$user->admin || (empty($conf->productbatch->enabled)))
|
|
|
|
|
|
$action = GETPOST('action', 'alpha');
|
|
$action = GETPOST('action', 'alpha');
|
|
$value = GETPOST('value', 'alpha');
|
|
$value = GETPOST('value', 'alpha');
|
|
|
|
+$label = GETPOST('label', 'alpha');
|
|
|
|
+$scandir = GETPOST('scan_dir', 'alpha');
|
|
|
|
+$type = 'product_batch';
|
|
|
|
|
|
$error = 0;
|
|
$error = 0;
|
|
|
|
|
|
@@ -88,6 +91,65 @@ if ($action == 'updateMaskLot') {
|
|
if ($value == '1' && $conf->global->PRODUCTBATCH_SN_ADDONS !== 'mod_sn_advanced') {
|
|
if ($value == '1' && $conf->global->PRODUCTBATCH_SN_ADDONS !== 'mod_sn_advanced') {
|
|
dolibarr_set_const($db, "PRODUCTBATCH_SN_ADDON", 'mod_sn_advanced', 'chaine', 0, '', $conf->entity);
|
|
dolibarr_set_const($db, "PRODUCTBATCH_SN_ADDON", 'mod_sn_advanced', 'chaine', 0, '', $conf->entity);
|
|
}
|
|
}
|
|
|
|
+} elseif ($action == 'set') {
|
|
|
|
+ // Activate a model
|
|
|
|
+ $ret = addDocumentModel($value, $type, $label, $scandir);
|
|
|
|
+} elseif ($action == 'del') {
|
|
|
|
+ $ret = delDocumentModel($value, $type);
|
|
|
|
+ if ($ret > 0) {
|
|
|
|
+ if ($conf->global->FACTURE_ADDON_PDF == "$value") {
|
|
|
|
+ dolibarr_del_const($db, 'FACTURE_ADDON_PDF', $conf->entity);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+} elseif ($action == 'specimen') {
|
|
|
|
+ $modele = GETPOST('module', 'alpha');
|
|
|
|
+
|
|
|
|
+ $product_batch = new Productlot($db);
|
|
|
|
+ $product_batch->initAsSpecimen();
|
|
|
|
+
|
|
|
|
+ // Search template files
|
|
|
|
+ $file = '';
|
|
|
|
+ $classname = '';
|
|
|
|
+ $filefound = 0;
|
|
|
|
+ $dirmodels = array_merge(array('/'), (array)$conf->modules_parts['models']);
|
|
|
|
+ foreach ($dirmodels as $reldir) {
|
|
|
|
+ $file = dol_buildpath($reldir . "core/modules/product_batch/doc/pdf_" . $modele . ".modules.php", 0);
|
|
|
|
+ if (file_exists($file)) {
|
|
|
|
+ $filefound = 1;
|
|
|
|
+ $classname = "pdf_" . $modele;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ($filefound) {
|
|
|
|
+ require_once $file;
|
|
|
|
+
|
|
|
|
+ $module = new $classname($db);
|
|
|
|
+
|
|
|
|
+ if ($module->write_file($product_batch, $langs) > 0) {
|
|
|
|
+ header("Location: " . DOL_URL_ROOT . "/document.php?modulepart=product_batch&file=SPECIMEN.pdf");
|
|
|
|
+ return;
|
|
|
|
+ } else {
|
|
|
|
+ setEventMessages($module->error, $module->errors, 'errors');
|
|
|
|
+ dol_syslog($module->error, LOG_ERR);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors');
|
|
|
|
+ dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR);
|
|
|
|
+ }
|
|
|
|
+} elseif ($action == 'setdoc') {
|
|
|
|
+ // Set default model
|
|
|
|
+ if (dolibarr_set_const($db, "PRODUCT_BATCH_ADDON_PDF", $value, 'chaine', 0, '', $conf->entity)) {
|
|
|
|
+ // La constante qui a ete lue en avant du nouveau set
|
|
|
|
+ // on passe donc par une variable pour avoir un affichage coherent
|
|
|
|
+ $conf->global->PRODUCT_BATCH_ADDON_PDF = $value;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // On active le modele
|
|
|
|
+ $ret = delDocumentModel($value, $type);
|
|
|
|
+ if ($ret > 0) {
|
|
|
|
+ $ret = addDocumentModel($value, $type, $label, $scandir);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -299,6 +361,141 @@ if ($conf->global->MAIN_FEATURES_LEVEL < 2) {
|
|
print "</table><br>\n";
|
|
print "</table><br>\n";
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// Module to build doc
|
|
|
|
+$def = array();
|
|
|
|
+$sql = "SELECT nom";
|
|
|
|
+$sql .= " FROM " . MAIN_DB_PREFIX . "document_model";
|
|
|
|
+$sql .= " WHERE type = '" . $db->escape($type) . "'";
|
|
|
|
+$sql .= " AND entity = " . $conf->entity;
|
|
|
|
+$resql = $db->query($sql);
|
|
|
|
+if ($resql) {
|
|
|
|
+ $i = 0;
|
|
|
|
+ $num_rows = $db->num_rows($resql);
|
|
|
|
+ while ($i < $num_rows) {
|
|
|
|
+ $array = $db->fetch_array($resql);
|
|
|
|
+ array_push($def, $array[0]);
|
|
|
|
+ $i++;
|
|
|
|
+ }
|
|
|
|
+} else {
|
|
|
|
+ dol_print_error($db);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+print '<br>';
|
|
|
|
+
|
|
|
|
+print load_fiche_titre($langs->trans("ProductBatchDocumentTemplates"), '', '');
|
|
|
|
+
|
|
|
|
+print '<div class="div-table-responsive-no-min">';
|
|
|
|
+print '<table class="noborder centpercent">';
|
|
|
|
+print '<tr class="liste_titre">';
|
|
|
|
+print '<td>' . $langs->trans("Name") . '</td>';
|
|
|
|
+print '<td>' . $langs->trans("Description") . '</td>';
|
|
|
|
+print '<td class="center" width="60">' . $langs->trans("Status") . "</td>\n";
|
|
|
|
+print '<td class="center" width="60">' . $langs->trans("Default") . "</td>\n";
|
|
|
|
+print '<td class="center"></td>';
|
|
|
|
+print '<td class="center" width="80">' . $langs->trans("Preview") . '</td>';
|
|
|
|
+print "</tr>\n";
|
|
|
|
+
|
|
|
|
+clearstatcache();
|
|
|
|
+
|
|
|
|
+foreach ($dirmodels as $reldir) {
|
|
|
|
+ foreach (array('', '/doc') as $valdir) {
|
|
|
|
+ $dir = dol_buildpath($reldir . "core/modules/product_batch" . $valdir);
|
|
|
|
+ if (is_dir($dir)) {
|
|
|
|
+ $handle = opendir($dir);
|
|
|
|
+ if (is_resource($handle)) {
|
|
|
|
+ while (($file = readdir($handle)) !== false) {
|
|
|
|
+ $filelist[] = $file;
|
|
|
|
+ }
|
|
|
|
+ closedir($handle);
|
|
|
|
+ arsort($filelist);
|
|
|
|
+
|
|
|
|
+ foreach ($filelist as $file) {
|
|
|
|
+ if (preg_match('/\.modules\.php$/i', $file) && preg_match('/^(pdf_|doc_)/', $file)) {
|
|
|
|
+ if (file_exists($dir . '/' . $file)) {
|
|
|
|
+ $name = substr($file, 4, dol_strlen($file) - 16);
|
|
|
|
+ $classname = substr($file, 0, dol_strlen($file) - 12);
|
|
|
|
+
|
|
|
|
+ require_once $dir . '/' . $file;
|
|
|
|
+ $module = new $classname($db);
|
|
|
|
+
|
|
|
|
+ $modulequalified = 1;
|
|
|
|
+ if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) {
|
|
|
|
+ $modulequalified = 0;
|
|
|
|
+ }
|
|
|
|
+ if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) {
|
|
|
|
+ $modulequalified = 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ($modulequalified) {
|
|
|
|
+ print '<tr class="oddeven"><td width="100">';
|
|
|
|
+ print (empty($module->name) ? $name : $module->name);
|
|
|
|
+ print "</td><td>\n";
|
|
|
|
+ if (method_exists($module, 'info')) {
|
|
|
|
+ print $module->info($langs);
|
|
|
|
+ } else {
|
|
|
|
+ print $module->description;
|
|
|
|
+ }
|
|
|
|
+ print '</td>';
|
|
|
|
+
|
|
|
|
+ // Active
|
|
|
|
+ if (in_array($name, $def)) {
|
|
|
|
+ print '<td class="center">' . "\n";
|
|
|
|
+ print '<a href="' . $_SERVER["PHP_SELF"] . '?action=del&token=' . newToken() . '&value=' . urlencode($name) . '">';
|
|
|
|
+ print img_picto($langs->trans("Enabled"), 'switch_on');
|
|
|
|
+ print '</a>';
|
|
|
|
+ print '</td>';
|
|
|
|
+ } else {
|
|
|
|
+ print '<td class="center">' . "\n";
|
|
|
|
+ print '<a href="' . $_SERVER["PHP_SELF"] . '?action=set&token=' . newToken() . '&value=' . urlencode($name) . '&scan_dir=' . urlencode($module->scandir) . '&label=' . urlencode($module->name) . '">' . img_picto($langs->trans("Disabled"), 'switch_off') . '</a>';
|
|
|
|
+ print "</td>";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // Defaut
|
|
|
|
+ print '<td class="center">';
|
|
|
|
+ if (getDolGlobalString('PRODUCT_BATCH_ADDON_PDF') == $name) {
|
|
|
|
+ print img_picto($langs->trans("Default"), 'on');
|
|
|
|
+ } else {
|
|
|
|
+ print '<a href="' . $_SERVER["PHP_SELF"] . '?action=setdoc&token=' . newToken() . '&value=' . urlencode($name) . '&scan_dir=' . urlencode($module->scandir) . '&label=' . urlencode($module->name) . '" alt="' . $langs->trans("Default") . '">' . img_picto($langs->trans("Disabled"), 'off') . '</a>';
|
|
|
|
+ }
|
|
|
|
+ print '</td>';
|
|
|
|
+
|
|
|
|
+ // Info
|
|
|
|
+ $htmltooltip = '' . $langs->trans("Name") . ': ' . $module->name;
|
|
|
|
+ $htmltooltip .= '<br>' . $langs->trans("Type") . ': ' . ($module->type ? $module->type : $langs->trans("Unknown"));
|
|
|
|
+ if ($module->type == 'pdf') {
|
|
|
|
+ $htmltooltip .= '<br>' . $langs->trans("Width") . '/' . $langs->trans("Height") . ': ' . $module->page_largeur . '/' . $module->page_hauteur;
|
|
|
|
+ }
|
|
|
|
+ $htmltooltip .= '<br><br><u>' . $langs->trans("FeaturesSupported") . ':</u>';
|
|
|
|
+ $htmltooltip .= '<br>' . $langs->trans("Logo") . ': ' . yn($module->option_logo, 1, 1);
|
|
|
|
+ $htmltooltip .= '<br>' . $langs->trans("MultiLanguage") . ': ' . yn($module->option_multilang, 1, 1);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ print '<td class="center">';
|
|
|
|
+ print $form->textwithpicto('', $htmltooltip, 1, 0);
|
|
|
|
+ print '</td>';
|
|
|
|
+
|
|
|
|
+ // Preview
|
|
|
|
+ print '<td class="center">';
|
|
|
|
+ if ($module->type == 'pdf') {
|
|
|
|
+ print '<a href="' . $_SERVER["PHP_SELF"] . '?action=specimen&module=' . $name . '">' . img_object($langs->trans("Preview"), 'contract') . '</a>';
|
|
|
|
+ } else {
|
|
|
|
+ print img_object($langs->trans("PreviewNotAvailable"), 'generic');
|
|
|
|
+ }
|
|
|
|
+ print '</td>';
|
|
|
|
+
|
|
|
|
+ print "</tr>\n";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+print '</table>';
|
|
|
|
+print '</div>';
|
|
|
|
+
|
|
// End of page
|
|
// End of page
|
|
llxFooter();
|
|
llxFooter();
|
|
$db->close();
|
|
$db->close();
|