Merge branch 'develop' into patch-5
This commit is contained in:
commit
3692dcccfa
1
.gitignore
vendored
1
.gitignore
vendored
@ -57,3 +57,4 @@ yarn.lock
|
|||||||
package-lock.json
|
package-lock.json
|
||||||
|
|
||||||
doc/install.lock
|
doc/install.lock
|
||||||
|
/.asciidoctorconfig.adoc
|
||||||
|
|||||||
@ -2088,7 +2088,7 @@ class BookKeeping extends CommonObject
|
|||||||
* FIXME: This function takes the parent of parent to get the root account !
|
* FIXME: This function takes the parent of parent to get the root account !
|
||||||
*
|
*
|
||||||
* @param string $account Accounting account
|
* @param string $account Accounting account
|
||||||
* @return array Array with root account information (max 2 upper level)
|
* @return array|int Array with root account information (max 2 upper level), <0 if KO
|
||||||
*/
|
*/
|
||||||
public function getRootAccount($account = null)
|
public function getRootAccount($account = null)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -329,6 +329,7 @@ class Lettering extends BookKeeping
|
|||||||
// Update request
|
// Update request
|
||||||
|
|
||||||
$now = dol_now();
|
$now = dol_now();
|
||||||
|
$affected_rows = 0;
|
||||||
|
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."accounting_bookkeeping SET";
|
$sql = "UPDATE ".MAIN_DB_PREFIX."accounting_bookkeeping SET";
|
||||||
@ -341,6 +342,8 @@ class Lettering extends BookKeeping
|
|||||||
if (!$resql) {
|
if (!$resql) {
|
||||||
$error++;
|
$error++;
|
||||||
$this->errors[] = "Error ".$this->db->lasterror();
|
$this->errors[] = "Error ".$this->db->lasterror();
|
||||||
|
} else {
|
||||||
|
$affected_rows = $this->db->affected_rows($resql);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -352,7 +355,7 @@ class Lettering extends BookKeeping
|
|||||||
}
|
}
|
||||||
return -1 * $error;
|
return -1 * $error;
|
||||||
} else {
|
} else {
|
||||||
return 1;
|
return $affected_rows;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -387,7 +390,7 @@ class Lettering extends BookKeeping
|
|||||||
}
|
}
|
||||||
return -1 * $error;
|
return -1 * $error;
|
||||||
} else {
|
} else {
|
||||||
return 1;
|
return $this->db->affected_rows($resql);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -482,7 +485,7 @@ class Lettering extends BookKeeping
|
|||||||
else $result = $this->updateLettering($bookkeeping_lines);
|
else $result = $this->updateLettering($bookkeeping_lines);
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
$group_error++;
|
$group_error++;
|
||||||
} else {
|
} elseif ($result > 0) {
|
||||||
$nb_lettering++;
|
$nb_lettering++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -805,6 +805,12 @@ if (!$error && $action == 'writebookkeeping') {
|
|||||||
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/lettering.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/lettering.class.php';
|
||||||
$lettering_static = new Lettering($db);
|
$lettering_static = new Lettering($db);
|
||||||
$nb_lettering = $lettering_static->bookkeepingLetteringAll(array($bookkeeping->id));
|
$nb_lettering = $lettering_static->bookkeepingLetteringAll(array($bookkeeping->id));
|
||||||
|
|
||||||
|
if ($nb_lettering < 0) {
|
||||||
|
$error++;
|
||||||
|
$errorforline++;
|
||||||
|
setEventMessages($lettering_static->error, $lettering_static->errors, 'errors');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -381,6 +381,12 @@ if ($action == 'writebookkeeping') {
|
|||||||
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/lettering.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/lettering.class.php';
|
||||||
$lettering_static = new Lettering($db);
|
$lettering_static = new Lettering($db);
|
||||||
$nb_lettering = $lettering_static->bookkeepingLettering(array($bookkeeping->id));
|
$nb_lettering = $lettering_static->bookkeepingLettering(array($bookkeeping->id));
|
||||||
|
|
||||||
|
if ($nb_lettering < 0) {
|
||||||
|
$error++;
|
||||||
|
$errorforline++;
|
||||||
|
setEventMessages($lettering_static->error, $lettering_static->errors, 'errors');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -463,7 +463,15 @@ if ($action == 'writebookkeeping') {
|
|||||||
if (getDolGlobalInt('ACCOUNTING_ENABLE_LETTERING') && getDolGlobalInt('ACCOUNTING_ENABLE_AUTOLETTERING')) {
|
if (getDolGlobalInt('ACCOUNTING_ENABLE_LETTERING') && getDolGlobalInt('ACCOUNTING_ENABLE_AUTOLETTERING')) {
|
||||||
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/lettering.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/lettering.class.php';
|
||||||
$lettering_static = new Lettering($db);
|
$lettering_static = new Lettering($db);
|
||||||
|
|
||||||
$nb_lettering = $lettering_static->bookkeepingLettering(array($bookkeeping->id));
|
$nb_lettering = $lettering_static->bookkeepingLettering(array($bookkeeping->id));
|
||||||
|
|
||||||
|
if ($nb_lettering < 0) {
|
||||||
|
$error++;
|
||||||
|
$errorforline++;
|
||||||
|
$errorforinvoice[$key] = 'other';
|
||||||
|
setEventMessages($lettering_static->error, $lettering_static->errors, 'errors');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3303,11 +3303,11 @@ class Adherent extends CommonObject
|
|||||||
*/
|
*/
|
||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
|
global $selected;
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
|
|
||||||
if (property_exists($this, 'photo') || !empty($this->photo)) {
|
if (property_exists($this, 'photo') || !empty($this->photo)) {
|
||||||
$return.= Form::showphoto('memberphoto', $this, 0, 60, 0, 'photokanban photoref photowithmargin photologintooltip', 'small', 0, 1);
|
$return.= Form::showphoto('memberphoto', $this, 0, 60, 0, 'photokanban photoref photowithmargin photologintooltip', 'small', 0, 1);
|
||||||
} else {
|
} else {
|
||||||
@ -3316,6 +3316,7 @@ class Adherent extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'type')) {
|
if (property_exists($this, 'type')) {
|
||||||
$return .= '<br><span class="info-box-label opacitymedium">'.$this->type.'</span>';
|
$return .= '<br><span class="info-box-label opacitymedium">'.$this->type.'</span>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -991,7 +991,10 @@ class AdherentType extends CommonObject
|
|||||||
*/
|
*/
|
||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $langs,$user;
|
global $langs, $user;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -999,6 +1002,7 @@ class AdherentType extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if ($user->rights->adherent->configurer) {
|
if ($user->rights->adherent->configurer) {
|
||||||
$return .= '<span class="right paddingleft"><a class="editfielda" href="'.$_SERVER["PHP_SELF"].'?action=edit&rowid='.$this->ref.'">'.img_edit().'</a></span>';
|
$return .= '<span class="right paddingleft"><a class="editfielda" href="'.$_SERVER["PHP_SELF"].'?action=edit&rowid='.$this->ref.'">'.img_edit().'</a></span>';
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -515,6 +515,8 @@ class Subscription extends CommonObject
|
|||||||
*/
|
*/
|
||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -523,6 +525,7 @@ class Subscription extends CommonObject
|
|||||||
|
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(property_exists($this, 'fk_adherent')? $this->fk_adherent: $this->ref ).'</span>';
|
$return .= '<span class="info-box-ref">'.(property_exists($this, 'fk_adherent')? $this->fk_adherent: $this->ref ).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'dateh') || property_exists($this, 'datef')) {
|
if (property_exists($this, 'dateh') || property_exists($this, 'datef')) {
|
||||||
$return .= '<br><span class="info-box-status opacitymedium">'.dol_print_date($this->dateh, 'day').' - '.dol_print_date($this->datef, 'day').'</span>';
|
$return .= '<br><span class="info-box-status opacitymedium">'.dol_print_date($this->dateh, 'day').' - '.dol_print_date($this->datef, 'day').'</span>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -38,9 +38,11 @@ require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
|
|||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("admin", "other", "orders"));
|
$langs->loadLangs(array("admin", "other", "orders"));
|
||||||
|
|
||||||
|
$action = GETPOST('action', 'aZ09');
|
||||||
|
|
||||||
$type = GETPOST('type', 'alpha');
|
$type = GETPOST('type', 'alpha');
|
||||||
$value = GETPOST('value', 'alpha');
|
$value = GETPOST('value', 'alpha');
|
||||||
$action = GETPOST('action', 'aZ09');
|
$modulepart = GETPOST('modulepart', 'aZ09'); // Used by actions_setmoduleoptions.inc.php
|
||||||
|
|
||||||
$label = GETPOST('label', 'alpha');
|
$label = GETPOST('label', 'alpha');
|
||||||
$scandir = GETPOST('scan_dir', 'alpha');
|
$scandir = GETPOST('scan_dir', 'alpha');
|
||||||
@ -98,7 +100,9 @@ if ($action == 'specimen') { // For invoices
|
|||||||
$facture->thirdparty = $specimenthirdparty; // Define who should has build the invoice (so the supplier)
|
$facture->thirdparty = $specimenthirdparty; // Define who should has build the invoice (so the supplier)
|
||||||
|
|
||||||
// Search template files
|
// Search template files
|
||||||
$file = ''; $classname = ''; $filefound = 0;
|
$file = '';
|
||||||
|
$classname = '';
|
||||||
|
$filefound = 0;
|
||||||
$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
|
$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
|
||||||
foreach ($dirmodels as $reldir) {
|
foreach ($dirmodels as $reldir) {
|
||||||
$file = dol_buildpath($reldir."core/modules/supplier_invoice/doc/pdf_".$modele.".modules.php", 0);
|
$file = dol_buildpath($reldir."core/modules/supplier_invoice/doc/pdf_".$modele.".modules.php", 0);
|
||||||
@ -185,12 +189,12 @@ if ($action == 'set_SUPPLIER_INVOICE_FREE_TEXT') {
|
|||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
$form = new Form($db);
|
||||||
|
|
||||||
$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
|
$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
|
||||||
|
|
||||||
llxHeader("", "");
|
llxHeader("", "");
|
||||||
|
|
||||||
$form = new Form($db);
|
|
||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
|
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
|
||||||
print load_fiche_titre($langs->trans("SuppliersSetup"), $linkback, 'title_setup');
|
print load_fiche_titre($langs->trans("SuppliersSetup"), $linkback, 'title_setup');
|
||||||
|
|
||||||
@ -205,6 +209,7 @@ print dol_get_fiche_head($head, 'invoice', $langs->trans("Suppliers"), -1, 'comp
|
|||||||
|
|
||||||
print load_fiche_titre($langs->trans("SuppliersInvoiceNumberingModel"), '', '');
|
print load_fiche_titre($langs->trans("SuppliersInvoiceNumberingModel"), '', '');
|
||||||
|
|
||||||
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td width="100">'.$langs->trans("Name").'</td>';
|
print '<td width="100">'.$langs->trans("Name").'</td>';
|
||||||
@ -244,7 +249,7 @@ foreach ($dirmodels as $reldir) {
|
|||||||
print $module->info();
|
print $module->info();
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
// Show example of numbering model
|
// Show example of numbering module
|
||||||
print '<td class="nowrap">';
|
print '<td class="nowrap">';
|
||||||
$tmp = $module->getExample();
|
$tmp = $module->getExample();
|
||||||
if (preg_match('/^Error/', $tmp)) {
|
if (preg_match('/^Error/', $tmp)) {
|
||||||
@ -297,13 +302,13 @@ foreach ($dirmodels as $reldir) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
print '</table><br>';
|
print '</table></div><br>';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Modeles documents for supplier invoices
|
* Documents models for supplier invoices
|
||||||
*/
|
*/
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("BillsPDFModules"), '', '');
|
print load_fiche_titre($langs->trans("BillsPDFModules"), '', '');
|
||||||
@ -329,6 +334,7 @@ if ($resql) {
|
|||||||
dol_print_error($db);
|
dol_print_error($db);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table class="noborder centpercent">'."\n";
|
print '<table class="noborder centpercent">'."\n";
|
||||||
print '<tr class="liste_titre">'."\n";
|
print '<tr class="liste_titre">'."\n";
|
||||||
print '<td width="100">'.$langs->trans("Name").'</td>'."\n";
|
print '<td width="100">'.$langs->trans("Name").'</td>'."\n";
|
||||||
@ -380,7 +386,7 @@ foreach ($dirmodels as $reldir) {
|
|||||||
//if ($conf->global->INVOICE_SUPPLIER_ADDON_PDF != "$name")
|
//if ($conf->global->INVOICE_SUPPLIER_ADDON_PDF != "$name")
|
||||||
//{
|
//{
|
||||||
// Even if choice is the default value, we allow to disable it: For supplier invoice, we accept to have no doc generation at all
|
// Even if choice is the default value, we allow to disable it: For supplier invoice, we accept to have no doc generation at all
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=del&token='.newToken().'&value='.urlencode($name).'&scan_dir='.urlencode($module->scandir).'&label='.urlencode($module->name).'&type=invoice_supplier">';
|
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=del&token='.newToken().'&value='.urlencode($name).'&scan_dir='.urlencode($module->scandir).'&label='.urlencode($module->name).'&type=invoice_supplier">';
|
||||||
print img_picto($langs->trans("Enabled"), 'switch_on');
|
print img_picto($langs->trans("Enabled"), 'switch_on');
|
||||||
print '</a>';
|
print '</a>';
|
||||||
/*}
|
/*}
|
||||||
@ -391,7 +397,7 @@ foreach ($dirmodels as $reldir) {
|
|||||||
print "</td>";
|
print "</td>";
|
||||||
} else {
|
} else {
|
||||||
print '<td class="center">'."\n";
|
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).'&type=invoice_supplier">'.img_picto($langs->trans("Disabled"), 'switch_off').'</a>';
|
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=set&token='.newToken().'&value='.urlencode($name).'&scan_dir='.urlencode($module->scandir).'&label='.urlencode($module->name).'&type=invoice_supplier">'.img_picto($langs->trans("Disabled"), 'switch_off').'</a>';
|
||||||
print "</td>";
|
print "</td>";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -400,9 +406,9 @@ foreach ($dirmodels as $reldir) {
|
|||||||
if (getDolGlobalString("INVOICE_SUPPLIER_ADDON_PDF") == "$name") {
|
if (getDolGlobalString("INVOICE_SUPPLIER_ADDON_PDF") == "$name") {
|
||||||
//print img_picto($langs->trans("Default"),'on');
|
//print img_picto($langs->trans("Default"),'on');
|
||||||
// Even if choice is the default value, we allow to disable it: For supplier invoice, we accept to have no doc generation at all
|
// Even if choice is the default value, we allow to disable it: For supplier invoice, we accept to have no doc generation at all
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=unsetdoc&token='.newToken().'&value='.$name.'&scan_dir='.$module->scandir.'&label='.urlencode($module->name).'&type=invoice_supplier"" alt="'.$langs->trans("Disable").'">'.img_picto($langs->trans("Enabled"), 'on').'</a>';
|
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=unsetdoc&token='.newToken().'&value='.$name.'&scan_dir='.$module->scandir.'&label='.urlencode($module->name).'&type=invoice_supplier"" alt="'.$langs->trans("Disable").'">'.img_picto($langs->trans("Enabled"), 'on').'</a>';
|
||||||
} else {
|
} else {
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setdoc&token='.newToken().'&value='.$name.'&scan_dir='.$module->scandir.'&label='.urlencode($module->name).'&type=invoice_supplier"" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').'</a>';
|
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=setdoc&token='.newToken().'&value='.$name.'&scan_dir='.$module->scandir.'&label='.urlencode($module->name).'&type=invoice_supplier"" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').'</a>';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
@ -420,7 +426,7 @@ foreach ($dirmodels as $reldir) {
|
|||||||
print $form->textwithpicto('', $htmltooltip, 1, 0);
|
print $form->textwithpicto('', $htmltooltip, 1, 0);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=specimen&module='.$name.'">'.img_object($langs->trans("Preview"), 'pdf').'</a>';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=specimen&module='.urlencode($name).'">'.img_object($langs->trans("Preview"), 'pdf').'</a>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
@ -432,7 +438,7 @@ foreach ($dirmodels as $reldir) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
print '</table><br>';
|
print '</table></div><br>';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Other options
|
* Other options
|
||||||
@ -443,6 +449,8 @@ print '<input type="hidden" name="token" value="'.newToken().'">';
|
|||||||
print '<input type="hidden" name="action" value="set_SUPPLIER_INVOICE_FREE_TEXT">';
|
print '<input type="hidden" name="action" value="set_SUPPLIER_INVOICE_FREE_TEXT">';
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("OtherOptions"), '', '');
|
print load_fiche_titre($langs->trans("OtherOptions"), '', '');
|
||||||
|
|
||||||
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td>'.$langs->trans("Parameter").'</td>';
|
print '<td>'.$langs->trans("Parameter").'</td>';
|
||||||
@ -472,7 +480,7 @@ print '</td><td class="right">';
|
|||||||
print '<input type="submit" class="button button-edit" value="'.$langs->trans("Modify").'">';
|
print '<input type="submit" class="button button-edit" value="'.$langs->trans("Modify").'">';
|
||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|
||||||
print '</table><br>';
|
print '</table></div><br>';
|
||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
|
|
||||||
@ -482,6 +490,8 @@ print '</form>';
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("Notifications"), '', '');
|
print load_fiche_titre($langs->trans("Notifications"), '', '');
|
||||||
|
|
||||||
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td>'.$langs->trans("Parameter").'</td>';
|
print '<td>'.$langs->trans("Parameter").'</td>';
|
||||||
@ -495,6 +505,7 @@ print '</td><td class="right">';
|
|||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
print '</div>';
|
||||||
|
|
||||||
// End of page
|
// End of page
|
||||||
llxFooter();
|
llxFooter();
|
||||||
|
|||||||
@ -38,25 +38,28 @@ require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';
|
|||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("admin", "other", "orders", "stocks"));
|
$langs->loadLangs(array("admin", "other", "orders", "stocks"));
|
||||||
|
|
||||||
if (!$user->admin) {
|
$action = GETPOST('action', 'aZ09');
|
||||||
accessforbidden();
|
|
||||||
}
|
|
||||||
|
|
||||||
$type = GETPOST('type', 'alpha');
|
$type = GETPOST('type', 'alpha');
|
||||||
$value = GETPOST('value', 'alpha');
|
$value = GETPOST('value', 'alpha');
|
||||||
$modulepart = GETPOST('modulepart', 'aZ09'); // Used by actions_setmoduleoptions.inc.php
|
$modulepart = GETPOST('modulepart', 'aZ09'); // Used by actions_setmoduleoptions.inc.php
|
||||||
|
|
||||||
$label = GETPOST('label', 'alpha');
|
$label = GETPOST('label', 'alpha');
|
||||||
$action = GETPOST('action', 'aZ09');
|
|
||||||
$scandir = GETPOST('scan_dir', 'alpha');
|
$scandir = GETPOST('scan_dir', 'alpha');
|
||||||
|
|
||||||
$specimenthirdparty = new Societe($db);
|
$specimenthirdparty = new Societe($db);
|
||||||
$specimenthirdparty->initAsSpecimen();
|
$specimenthirdparty->initAsSpecimen();
|
||||||
|
|
||||||
|
$error = 0;
|
||||||
|
|
||||||
|
if (!$user->admin) {
|
||||||
|
accessforbidden();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
@ -77,7 +80,9 @@ if ($action == 'updateMask') {
|
|||||||
} else {
|
} else {
|
||||||
setEventMessages($langs->trans("Error"), null, 'errors');
|
setEventMessages($langs->trans("Error"), null, 'errors');
|
||||||
}
|
}
|
||||||
} elseif ($action == 'specimen') { // For orders
|
}
|
||||||
|
|
||||||
|
if ($action == 'specimen') { // For orders
|
||||||
$modele = GETPOST('module', 'alpha');
|
$modele = GETPOST('module', 'alpha');
|
||||||
|
|
||||||
$commande = new CommandeFournisseur($db);
|
$commande = new CommandeFournisseur($db);
|
||||||
@ -317,8 +322,8 @@ print '</table></div><br>';
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Documents models for supplier orders
|
* Documents models for supplier orders
|
||||||
*/
|
*/
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("OrdersModelModule"), '', '');
|
print load_fiche_titre($langs->trans("OrdersModelModule"), '', '');
|
||||||
|
|
||||||
|
|||||||
@ -1567,6 +1567,9 @@ class BOM extends CommonObject
|
|||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $db,$langs;
|
global $db,$langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$prod = new Product($db);
|
$prod = new Product($db);
|
||||||
$prod->fetch($this->fk_product);
|
$prod->fetch($this->fk_product);
|
||||||
|
|
||||||
@ -1577,6 +1580,7 @@ class BOM extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : '').'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : '').'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'fields') && !empty($this->fields['bomtype']['arrayofkeyval'])) {
|
if (property_exists($this, 'fields') && !empty($this->fields['bomtype']['arrayofkeyval'])) {
|
||||||
$return .= '<br><span class="info-box-label opacitymedium">'.$langs->trans("Type").' : </span>';
|
$return .= '<br><span class="info-box-label opacitymedium">'.$langs->trans("Type").' : </span>';
|
||||||
if ($this->bomtype == 0) {
|
if ($this->bomtype == 0) {
|
||||||
|
|||||||
@ -73,17 +73,19 @@ $result = $object->fetch($id);
|
|||||||
$hookmanager->initHooks(array('ciblescard', 'globalcard'));
|
$hookmanager->initHooks(array('ciblescard', 'globalcard'));
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
if (!$user->rights->mailing->lire || (empty($conf->global->EXTERNAL_USERS_ARE_AUTHORIZED) && $user->socid > 0)) {
|
if (!$user->hasRight('mailing', 'lire') || (empty($conf->global->EXTERNAL_USERS_ARE_AUTHORIZED) && $user->socid > 0)) {
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
}
|
}
|
||||||
//$result = restrictedArea($user, 'mailing');
|
//$result = restrictedArea($user, 'mailing');
|
||||||
|
|
||||||
|
$sqlmessage = '';
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ($action == 'add') {
|
if ($action == 'add' && $user->hasRight('mailing', 'creer')) { // Add recipients
|
||||||
$module = GETPOST("module", 'alpha');
|
$module = GETPOST("module", 'alpha');
|
||||||
$result = -1;
|
$result = -1;
|
||||||
|
|
||||||
@ -103,6 +105,8 @@ if ($action == 'add') {
|
|||||||
$obj = new $classname($db);
|
$obj = new $classname($db);
|
||||||
dol_syslog("Call add_to_target on class ".$classname);
|
dol_syslog("Call add_to_target on class ".$classname);
|
||||||
$result = $obj->add_to_target($id);
|
$result = $obj->add_to_target($id);
|
||||||
|
|
||||||
|
$sqlmessage = $obj->sql;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($result > 0) {
|
if ($result > 0) {
|
||||||
@ -117,7 +121,7 @@ if ($action == 'add') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GETPOST('clearlist', 'int')) {
|
if (GETPOST('clearlist', 'int') && $user->hasRight('mailing', 'creer')) {
|
||||||
// Loading Class
|
// Loading Class
|
||||||
$obj = new MailingTargets($db);
|
$obj = new MailingTargets($db);
|
||||||
$obj->clear_target($id);
|
$obj->clear_target($id);
|
||||||
@ -127,7 +131,7 @@ if (GETPOST('clearlist', 'int')) {
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GETPOST('exportcsv', 'int')) {
|
if (GETPOST('exportcsv', 'int') && $user->hasRight('mailing', 'lire')) {
|
||||||
$completefilename = 'targets_emailing'.$object->id.'_'.dol_print_date(dol_now(), 'dayhourlog').'.csv';
|
$completefilename = 'targets_emailing'.$object->id.'_'.dol_print_date(dol_now(), 'dayhourlog').'.csv';
|
||||||
header('Content-Type: text/csv');
|
header('Content-Type: text/csv');
|
||||||
header('Content-Disposition: attachment;filename='.$completefilename);
|
header('Content-Disposition: attachment;filename='.$completefilename);
|
||||||
@ -166,7 +170,7 @@ if (GETPOST('exportcsv', 'int')) {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'delete') {
|
if ($action == 'delete' && $user->hasRight('mailing', 'creer')) {
|
||||||
// Ici, rowid indique le destinataire et id le mailing
|
// Ici, rowid indique le destinataire et id le mailing
|
||||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE rowid = ".((int) $rowid);
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE rowid = ".((int) $rowid);
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
@ -454,7 +458,14 @@ if ($object->fetch($id) >= 0) {
|
|||||||
print '</div>'; // End table
|
print '</div>'; // End table
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
print '<br><br>';
|
print '<br>';
|
||||||
|
|
||||||
|
if ($sqlmessage && $user->admin) {
|
||||||
|
print info_admin($langs->trans("SQLUsedForExport").':<br> '.$sqlmessage, 0, 0, 1, '', 'TechnicalInformation');
|
||||||
|
print '<br>';
|
||||||
|
}
|
||||||
|
|
||||||
|
print '<br>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// List of selected targets
|
// List of selected targets
|
||||||
|
|||||||
256
htdocs/comm/propal/agenda.php
Normal file
256
htdocs/comm/propal/agenda.php
Normal file
@ -0,0 +1,256 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
|
* Copyright (C) ---Put here your own copyright and developer email---
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file htdocs/comm/propal/agenda.php
|
||||||
|
* \ingroup propal
|
||||||
|
* \brief Tab of events on Proposal
|
||||||
|
*/
|
||||||
|
require '../../main.inc.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
||||||
|
|
||||||
|
// Load translation files required by the page
|
||||||
|
$langs->loadLangs(array("propal", "other"));
|
||||||
|
|
||||||
|
// Get parameters
|
||||||
|
$id = GETPOST('id', 'int');
|
||||||
|
$ref = GETPOST('ref', 'alpha');
|
||||||
|
$action = GETPOST('action', 'aZ09');
|
||||||
|
$cancel = GETPOST('cancel', 'aZ09');
|
||||||
|
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search
|
||||||
|
$backtopage = GETPOST('backtopage', 'alpha');
|
||||||
|
|
||||||
|
if (GETPOST('actioncode', 'array')) {
|
||||||
|
$actioncode = GETPOST('actioncode', 'array', 3);
|
||||||
|
if (!count($actioncode)) {
|
||||||
|
$actioncode = '0';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$actioncode = GETPOST("actioncode", "alpha", 3) ? GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : getDolGlobalString('AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT'));
|
||||||
|
}
|
||||||
|
$search_rowid = GETPOST('search_rowid');
|
||||||
|
$search_agenda_label = GETPOST('search_agenda_label');
|
||||||
|
|
||||||
|
$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit;
|
||||||
|
$sortfield = GETPOST('sortfield', 'aZ09comma');
|
||||||
|
$sortorder = GETPOST('sortorder', 'aZ09comma');
|
||||||
|
$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
|
||||||
|
if (empty($page) || $page == -1) {
|
||||||
|
$page = 0;
|
||||||
|
} // If $page is not defined, or '' or -1
|
||||||
|
$offset = $limit * $page;
|
||||||
|
$pageprev = $page - 1;
|
||||||
|
$pagenext = $page + 1;
|
||||||
|
if (!$sortfield) {
|
||||||
|
$sortfield = 'a.datep,a.id';
|
||||||
|
}
|
||||||
|
if (!$sortorder) {
|
||||||
|
$sortorder = 'DESC,DESC';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize technical objects
|
||||||
|
$object = new Propal($db);
|
||||||
|
$extrafields = new ExtraFields($db);
|
||||||
|
$diroutputmassaction = $conf->propal->multidir_output[$conf->entity].'/temp/massgeneration/'.$user->id;
|
||||||
|
$hookmanager->initHooks(array('myobjectagenda', 'globalcard')); // Note that conf->hooks_modules contains array
|
||||||
|
// Fetch optionals attributes and labels
|
||||||
|
$extrafields->fetch_name_optionals_label($object->table_element);
|
||||||
|
|
||||||
|
// Load object
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals
|
||||||
|
if ($id > 0 || !empty($ref)) {
|
||||||
|
$upload_dir = $conf->propal->multidir_output[!empty($object->entity) ? $object->entity : $conf->entity]."/".$object->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
$permissiontoread = $user->hasRight("propal", "lire");
|
||||||
|
$permissiontoadd = $user->hasRight("propal", "creer");
|
||||||
|
|
||||||
|
// Security check
|
||||||
|
if (!empty($user->socid)) {
|
||||||
|
$socid = $user->socid;
|
||||||
|
}
|
||||||
|
$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0);
|
||||||
|
restrictedArea($user, 'propal', $object->id, '', '', 'fk_soc', 'rowid', $isdraft);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Actions
|
||||||
|
*/
|
||||||
|
|
||||||
|
$parameters = array('id'=>$id);
|
||||||
|
$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
|
||||||
|
if ($reshook < 0) {
|
||||||
|
setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($reshook)) {
|
||||||
|
// Cancel
|
||||||
|
if (GETPOST('cancel', 'alpha') && !empty($backtopage)) {
|
||||||
|
header("Location: ".$backtopage);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Purge search criteria
|
||||||
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers
|
||||||
|
$actioncode = '';
|
||||||
|
$search_agenda_label = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* View
|
||||||
|
*/
|
||||||
|
|
||||||
|
$form = new Form($db);
|
||||||
|
|
||||||
|
if ($object->id > 0) {
|
||||||
|
$title = $langs->trans("Agenda");
|
||||||
|
//if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->name." - ".$title;
|
||||||
|
$help_url = 'EN:Module_Agenda_En|DE:Modul_Terminplanung';
|
||||||
|
llxHeader('', $title, $help_url);
|
||||||
|
|
||||||
|
if (isModEnabled('notification')) {
|
||||||
|
$langs->load("mails");
|
||||||
|
}
|
||||||
|
$head = propal_prepare_head($object);
|
||||||
|
|
||||||
|
|
||||||
|
print dol_get_fiche_head($head, 'agenda', $langs->trans("Proposal"), -1, $object->picto);
|
||||||
|
|
||||||
|
// Object card
|
||||||
|
// ------------------------------------------------------------
|
||||||
|
$linkback = '<a href="'.dol_buildpath('/mymodule/myobject_list.php', 1).'?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
|
||||||
|
|
||||||
|
$morehtmlref = '<div class="refidno">';
|
||||||
|
// Ref customer
|
||||||
|
$morehtmlref .= $form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1);
|
||||||
|
$morehtmlref .= $form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1);
|
||||||
|
// Thirdparty
|
||||||
|
$morehtmlref .= '<br>'.$object->thirdparty->getNomUrl(1);
|
||||||
|
// Project
|
||||||
|
if (isModEnabled('project')) {
|
||||||
|
$langs->load("projects");
|
||||||
|
$morehtmlref .= '<br>';
|
||||||
|
if (0) {
|
||||||
|
$morehtmlref .= img_picto($langs->trans("Project"), 'project', 'class="pictofixedwidth"');
|
||||||
|
if ($action != 'classify') {
|
||||||
|
$morehtmlref .= '<a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?action=classify&token='.newToken().'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetProject')).'</a> ';
|
||||||
|
}
|
||||||
|
$morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, ($action == 'classify' ? 'projectid' : 'none'), 0, 0, 0, 1, '', 'maxwidth300');
|
||||||
|
} else {
|
||||||
|
if (!empty($object->fk_project)) {
|
||||||
|
$proj = new Project($db);
|
||||||
|
$proj->fetch($object->fk_project);
|
||||||
|
$morehtmlref .= $proj->getNomUrl(1);
|
||||||
|
if ($proj->title) {
|
||||||
|
$morehtmlref .= '<span class="opacitymedium"> - '.dol_escape_htmltag($proj->title).'</span>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$morehtmlref .= '</div>';
|
||||||
|
|
||||||
|
|
||||||
|
dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
|
||||||
|
|
||||||
|
print '<div class="fichecenter">';
|
||||||
|
print '<div class="underbanner clearboth"></div>';
|
||||||
|
|
||||||
|
$object->info($object->id);
|
||||||
|
dol_print_object_info($object, 1);
|
||||||
|
|
||||||
|
print '</div>';
|
||||||
|
|
||||||
|
print dol_get_fiche_end();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Actions buttons
|
||||||
|
|
||||||
|
$objthirdparty = $object;
|
||||||
|
$objcon = new stdClass();
|
||||||
|
|
||||||
|
$out = '&origin='.urlencode($object->element.(property_exists($object, 'module') ? '@'.$object->module : '')).'&originid='.urlencode($object->id);
|
||||||
|
$urlbacktopage = $_SERVER['PHP_SELF'].'?id='.$object->id;
|
||||||
|
$out .= '&backtopage='.urlencode($urlbacktopage);
|
||||||
|
$permok = $user->rights->agenda->myactions->create;
|
||||||
|
if ((!empty($objthirdparty->id) || !empty($objcon->id)) && $permok) {
|
||||||
|
//$out.='<a href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create';
|
||||||
|
if (get_class($objthirdparty) == 'Societe') {
|
||||||
|
$out .= '&socid='.urlencode($objthirdparty->id);
|
||||||
|
}
|
||||||
|
$out .= (!empty($objcon->id) ? '&contactid='.urlencode($objcon->id) : '');
|
||||||
|
//$out.=$langs->trans("AddAnAction").' ';
|
||||||
|
//$out.=img_picto($langs->trans("AddAnAction"),'filenew');
|
||||||
|
//$out.="</a>";
|
||||||
|
}
|
||||||
|
|
||||||
|
$morehtmlright = '';
|
||||||
|
|
||||||
|
//$messagingUrl = DOL_URL_ROOT.'/societe/messaging.php?socid='.$object->id;
|
||||||
|
//$morehtmlright .= dolGetButtonTitle($langs->trans('ShowAsConversation'), '', 'fa fa-comments imgforviewmode', $messagingUrl, '', 1);
|
||||||
|
//$messagingUrl = DOL_URL_ROOT.'/societe/agenda.php?socid='.$object->id;
|
||||||
|
//$morehtmlright .= dolGetButtonTitle($langs->trans('MessageListViewType'), '', 'fa fa-bars imgforviewmode', $messagingUrl, '', 2);
|
||||||
|
|
||||||
|
if (isModEnabled('agenda')) {
|
||||||
|
if ($user->hasRight('agenda', 'myactions', 'create') || $user->hasRight('agenda', 'allactions', 'create')) {
|
||||||
|
$morehtmlright .= dolGetButtonTitle($langs->trans('AddAction'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out);
|
||||||
|
} else {
|
||||||
|
$morehtmlright .= dolGetButtonTitle($langs->trans('AddAction'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out, '', 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (isModEnabled('agenda') && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) {
|
||||||
|
print '<br>';
|
||||||
|
|
||||||
|
$param = '&id='.$object->id.(!empty($socid) ? '&socid='.$socid : '');
|
||||||
|
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
|
||||||
|
$param .= '&contextpage='.urlencode($contextpage);
|
||||||
|
}
|
||||||
|
if ($limit > 0 && $limit != $conf->liste_limit) {
|
||||||
|
$param .= '&limit='.urlencode($limit);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Try to know count of actioncomm from cache
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/memory.lib.php';
|
||||||
|
$cachekey = 'count_events_propal_'.$object->id;
|
||||||
|
$nbEvent = dol_getcache($cachekey);
|
||||||
|
|
||||||
|
print_barre_liste($langs->trans("ActionsOnPropal").(is_numeric($nbEvent) ? '<span class="opacitymedium colorblack paddingleft">('.$nbEvent.')</span>': ''), 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', 0, -1, '', 0, $morehtmlright, '', 0, 1, 1);
|
||||||
|
//print_barre_liste($langs->trans("ActionsOnPropal"), 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', 0, -1, '', 0, $morehtmlright, '', 0, 1, 1);
|
||||||
|
|
||||||
|
// List of all actions
|
||||||
|
$filters = array();
|
||||||
|
$filters['search_agenda_label'] = $search_agenda_label;
|
||||||
|
$filters['search_rowid'] = $search_rowid;
|
||||||
|
|
||||||
|
// TODO Replace this with same code than into list.php
|
||||||
|
show_actions_done($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters, $sortfield, $sortorder, property_exists($object, 'module') ? $object->module : '');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// End of page
|
||||||
|
llxFooter();
|
||||||
|
$db->close();
|
||||||
@ -3038,10 +3038,14 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
print '</div><div class="fichehalfright">';
|
print '</div><div class="fichehalfright">';
|
||||||
|
|
||||||
|
$MAXEVENT = 10;
|
||||||
|
|
||||||
|
$morehtmlcenter = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-bars imgforviewmode', DOL_URL_ROOT.'/comm/propal/agenda.php?id='.$object->id);
|
||||||
|
|
||||||
// List of actions on element
|
// List of actions on element
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php';
|
||||||
$formactions = new FormActions($db);
|
$formactions = new FormActions($db);
|
||||||
$somethingshown = $formactions->showactions($object, 'propal', $socid, 1);
|
$somethingshown = $formactions->showactions($object, 'propal', $socid, 1, '', $MAXEVENT, '', $morehtmlcenter); // Show all action for thirdparty
|
||||||
|
|
||||||
print '</div></div>';
|
print '</div></div>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3964,6 +3964,9 @@ class Propal extends CommonObject
|
|||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -3972,6 +3975,7 @@ class Propal extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'fk_project')) {
|
if (property_exists($this, 'fk_project')) {
|
||||||
$return .= '<span class="info-box-ref"> | '.$this->fk_project.'</span>';
|
$return .= '<span class="info-box-ref"> | '.$this->fk_project.'</span>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -246,7 +246,9 @@ class PropaleStats extends Stats
|
|||||||
global $user;
|
global $user;
|
||||||
|
|
||||||
$sql = "SELECT product.ref, COUNT(product.ref) as nb, SUM(tl.".$this->field_line.") as total, AVG(tl.".$this->field_line.") as avg";
|
$sql = "SELECT product.ref, COUNT(product.ref) as nb, SUM(tl.".$this->field_line.") as total, AVG(tl.".$this->field_line.") as avg";
|
||||||
$sql .= " FROM ".$this->from." INNER JOIN ".$this->from_line." ON p.rowid = tl.fk_propal INNER JOIN ".MAIN_DB_PREFIX."product as product ON tl.fk_product = product.rowid";
|
$sql .= " FROM ".$this->from;
|
||||||
|
$sql .= " INNER JOIN ".$this->from_line." ON p.rowid = tl.fk_propal";
|
||||||
|
$sql .= " INNER JOIN ".MAIN_DB_PREFIX."product as product ON tl.fk_product = product.rowid";
|
||||||
if (empty($user->rights->societe->client->voir) && !$user->socid) {
|
if (empty($user->rights->societe->client->voir) && !$user->socid) {
|
||||||
$sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON p.fk_soc = sc.fk_soc AND sc.fk_user = ".((int) $user->id);
|
$sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON p.fk_soc = sc.fk_soc AND sc.fk_user = ".((int) $user->id);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,126 +0,0 @@
|
|||||||
<?php
|
|
||||||
/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
|
||||||
* Copyright (C) 2004-2006 Laurent Destailleur <eldy@users.sourceforge.net>
|
|
||||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
|
|
||||||
* Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es>
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \file htdocs/comm/propal/info.php
|
|
||||||
* \ingroup propal
|
|
||||||
* \brief Page d'affichage des infos d'une proposition commerciale
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Load Dolibarr environment
|
|
||||||
require '../../main.inc.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php';
|
|
||||||
if (isModEnabled('project')) {
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load translation files required by the page
|
|
||||||
$langs->loadLangs(array('propal', 'compta'));
|
|
||||||
|
|
||||||
$id = GETPOST('id', 'int');
|
|
||||||
$ref = GETPOST('ref', 'alpha');
|
|
||||||
$socid = GETPOST('socid', 'int');
|
|
||||||
|
|
||||||
$object = new Propal($db);
|
|
||||||
if (!$object->fetch($id, $ref) > 0) {
|
|
||||||
dol_print_error($db);
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Security check
|
|
||||||
if (!empty($user->socid)) {
|
|
||||||
$socid = $user->socid;
|
|
||||||
$object->id = $user->socid;
|
|
||||||
}
|
|
||||||
restrictedArea($user, 'propal', $object->id);
|
|
||||||
|
|
||||||
$usercancreate = $user->hasRight("propal", "creer");
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* View
|
|
||||||
*/
|
|
||||||
|
|
||||||
$form = new Form($db);
|
|
||||||
|
|
||||||
$title = $object->ref." - ".$langs->trans('Info');
|
|
||||||
$help_url = 'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos';
|
|
||||||
llxHeader('', $title, $help_url);
|
|
||||||
|
|
||||||
$object->fetch_thirdparty();
|
|
||||||
|
|
||||||
$head = propal_prepare_head($object);
|
|
||||||
print dol_get_fiche_head($head, 'info', $langs->trans('Proposal'), -1, 'propal');
|
|
||||||
|
|
||||||
$object->info($object->id);
|
|
||||||
|
|
||||||
|
|
||||||
// Proposal card
|
|
||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/comm/propal/list.php?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
|
|
||||||
|
|
||||||
|
|
||||||
$morehtmlref = '<div class="refidno">';
|
|
||||||
// Ref customer
|
|
||||||
$morehtmlref .= $form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1);
|
|
||||||
$morehtmlref .= $form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1);
|
|
||||||
// Thirdparty
|
|
||||||
$morehtmlref .= '<br>'.$object->thirdparty->getNomUrl(1);
|
|
||||||
// Project
|
|
||||||
if (isModEnabled('project')) {
|
|
||||||
$langs->load("projects");
|
|
||||||
$morehtmlref .= '<br>';
|
|
||||||
if (0) {
|
|
||||||
$morehtmlref .= img_picto($langs->trans("Project"), 'project', 'class="pictofixedwidth"');
|
|
||||||
if ($action != 'classify') {
|
|
||||||
$morehtmlref .= '<a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?action=classify&token='.newToken().'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetProject')).'</a> ';
|
|
||||||
}
|
|
||||||
$morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, ($action == 'classify' ? 'projectid' : 'none'), 0, 0, 0, 1, '', 'maxwidth300');
|
|
||||||
} else {
|
|
||||||
if (!empty($object->fk_project)) {
|
|
||||||
$proj = new Project($db);
|
|
||||||
$proj->fetch($object->fk_project);
|
|
||||||
$morehtmlref .= $proj->getNomUrl(1);
|
|
||||||
if ($proj->title) {
|
|
||||||
$morehtmlref .= '<span class="opacitymedium"> - '.dol_escape_htmltag($proj->title).'</span>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$morehtmlref .= '</div>';
|
|
||||||
|
|
||||||
dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
|
|
||||||
|
|
||||||
print '<div class="fichecenter">';
|
|
||||||
print '<div class="underbanner clearboth"></div>';
|
|
||||||
|
|
||||||
print '<br>';
|
|
||||||
|
|
||||||
dol_print_object_info($object);
|
|
||||||
|
|
||||||
print '</div>';
|
|
||||||
|
|
||||||
print dol_get_fiche_end();
|
|
||||||
|
|
||||||
// End of page
|
|
||||||
llxFooter();
|
|
||||||
$db->close();
|
|
||||||
@ -712,6 +712,7 @@ class Orders extends DolibarrApi
|
|||||||
* @throws RestException 401
|
* @throws RestException 401
|
||||||
* @throws RestException 404
|
* @throws RestException 404
|
||||||
* @throws RestException 500 System error
|
* @throws RestException 500 System error
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
public function validate($id, $idwarehouse = 0, $notrigger = 0)
|
public function validate($id, $idwarehouse = 0, $notrigger = 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -2727,7 +2727,7 @@ class Commande extends CommonOrder
|
|||||||
* @param int $offset For pagination
|
* @param int $offset For pagination
|
||||||
* @param string $sortfield Sort criteria
|
* @param string $sortfield Sort criteria
|
||||||
* @param string $sortorder Sort order
|
* @param string $sortorder Sort order
|
||||||
* @return int -1 if KO, array with result if OK
|
* @return int|array -1 if KO, array with result if OK
|
||||||
*/
|
*/
|
||||||
public function liste_array($shortlist = 0, $draft = 0, $excluser = '', $socid = 0, $limit = 0, $offset = 0, $sortfield = 'c.date_commande', $sortorder = 'DESC')
|
public function liste_array($shortlist = 0, $draft = 0, $excluser = '', $socid = 0, $limit = 0, $offset = 0, $sortfield = 'c.date_commande', $sortorder = 'DESC')
|
||||||
{
|
{
|
||||||
|
|||||||
@ -527,6 +527,14 @@ if ($action == 'create') {
|
|||||||
print '<td><input type="text" class="flat minwidth150" name="bank" value="'.(GETPOST('bank') ?GETPOST('bank', 'alpha') : $object->bank).'"></td>';
|
print '<td><input type="text" class="flat minwidth150" name="bank" value="'.(GETPOST('bank') ?GETPOST('bank', 'alpha') : $object->bank).'"></td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
|
// IBAN
|
||||||
|
print '<tr><td>'.$langs->trans($ibankey).'</td>';
|
||||||
|
print '<td><input maxlength="34" type="text" class="flat minwidth300" name="iban" value="'.(GETPOSTISSET('iban') ?GETPOST('iban', 'alpha') : $object->iban).'"></td></tr>';
|
||||||
|
|
||||||
|
// BIC
|
||||||
|
print '<tr><td>'.$langs->trans($bickey).'</td>';
|
||||||
|
print '<td><input maxlength="11" type="text" class="flat minwidth150" name="bic" value="'.(GETPOSTISSET('bic') ?GETPOST('bic', 'alpha') : $object->bic).'"></td></tr>';
|
||||||
|
|
||||||
// Show fields of bank account
|
// Show fields of bank account
|
||||||
$sizecss = '';
|
$sizecss = '';
|
||||||
foreach ($object->getFieldsToShow() as $val) {
|
foreach ($object->getFieldsToShow() as $val) {
|
||||||
@ -559,13 +567,6 @@ if ($action == 'create') {
|
|||||||
$bickey = "SWIFT";
|
$bickey = "SWIFT";
|
||||||
}
|
}
|
||||||
|
|
||||||
// IBAN
|
|
||||||
print '<tr><td>'.$langs->trans($ibankey).'</td>';
|
|
||||||
print '<td><input maxlength="34" type="text" class="flat minwidth300" name="iban" value="'.(GETPOSTISSET('iban') ?GETPOST('iban', 'alpha') : $object->iban).'"></td></tr>';
|
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans($bickey).'</td>';
|
|
||||||
print '<td><input maxlength="11" type="text" class="flat minwidth150" name="bic" value="'.(GETPOSTISSET('bic') ?GETPOST('bic', 'alpha') : $object->bic).'"></td></tr>';
|
|
||||||
|
|
||||||
if (isModEnabled('paymentbybanktransfer')) {
|
if (isModEnabled('paymentbybanktransfer')) {
|
||||||
print '<tr><td>'.$form->textwithpicto($langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation"), $langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp")).'</td>';
|
print '<tr><td>'.$form->textwithpicto($langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation"), $langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp")).'</td>';
|
||||||
print '<td><input type="checkbox" class="flat" name="pti_in_ctti"'. (empty(GETPOST('pti_in_ctti')) ? '' : ' checked ') . '>';
|
print '<td><input type="checkbox" class="flat" name="pti_in_ctti"'. (empty(GETPOST('pti_in_ctti')) ? '' : ' checked ') . '>';
|
||||||
@ -753,6 +754,38 @@ if ($action == 'create') {
|
|||||||
print '<tr class="liste_titre"><td class="titlefield">'.$langs->trans("BankName").'</td>';
|
print '<tr class="liste_titre"><td class="titlefield">'.$langs->trans("BankName").'</td>';
|
||||||
print '<td>'.$object->bank.'</td></tr>';
|
print '<td>'.$object->bank.'</td></tr>';
|
||||||
|
|
||||||
|
$ibankey = FormBank::getIBANLabel($object);
|
||||||
|
$bickey = "BICNumber";
|
||||||
|
if ($object->getCountryCode() == 'IN') {
|
||||||
|
$bickey = "SWIFT";
|
||||||
|
}
|
||||||
|
|
||||||
|
// IBAN
|
||||||
|
print '<tr><td>'.$langs->trans($ibankey).'</td>';
|
||||||
|
print '<td>'.getIbanHumanReadable($object).' ';
|
||||||
|
if (!empty($object->iban)) {
|
||||||
|
if (!checkIbanForAccount($object)) {
|
||||||
|
print img_picto($langs->trans("IbanNotValid"), 'warning');
|
||||||
|
} else {
|
||||||
|
print img_picto($langs->trans("IbanValid"), 'info');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
// BIC
|
||||||
|
print '<tr><td>'.$langs->trans($bickey).'</td>';
|
||||||
|
print '<td>'.$object->bic.' ';
|
||||||
|
if (!empty($object->bic)) {
|
||||||
|
if (!checkSwiftForAccount($object)) {
|
||||||
|
print img_picto($langs->trans("SwiftNotValid"), 'warning');
|
||||||
|
} else {
|
||||||
|
print img_picto($langs->trans("SwiftValid"), 'info');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
// TODO Add a link "Show more..." for all ohter informations.
|
||||||
|
|
||||||
// Show fields of bank account
|
// Show fields of bank account
|
||||||
foreach ($object->getFieldsToShow() as $val) {
|
foreach ($object->getFieldsToShow() as $val) {
|
||||||
$content = '';
|
$content = '';
|
||||||
@ -771,34 +804,6 @@ if ($action == 'create') {
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$ibankey = FormBank::getIBANLabel($object);
|
|
||||||
$bickey = "BICNumber";
|
|
||||||
if ($object->getCountryCode() == 'IN') {
|
|
||||||
$bickey = "SWIFT";
|
|
||||||
}
|
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans($ibankey).'</td>';
|
|
||||||
print '<td>'.getIbanHumanReadable($object).' ';
|
|
||||||
if (!empty($object->iban)) {
|
|
||||||
if (!checkIbanForAccount($object)) {
|
|
||||||
print img_picto($langs->trans("IbanNotValid"), 'warning');
|
|
||||||
} else {
|
|
||||||
print img_picto($langs->trans("IbanValid"), 'info');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans($bickey).'</td>';
|
|
||||||
print '<td>'.$object->bic.' ';
|
|
||||||
if (!empty($object->bic)) {
|
|
||||||
if (!checkSwiftForAccount($object)) {
|
|
||||||
print img_picto($langs->trans("SwiftNotValid"), 'warning');
|
|
||||||
} else {
|
|
||||||
print img_picto($langs->trans("SwiftValid"), 'info');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
if (isModEnabled('prelevement')) {
|
if (isModEnabled('prelevement')) {
|
||||||
print '<tr><td>'.$form->textwithpicto($langs->trans("ICS"), $langs->trans("ICS").' ('.$langs->trans("UsedFor", $langs->transnoentitiesnoconv("StandingOrder")).')').'</td>';
|
print '<tr><td>'.$form->textwithpicto($langs->trans("ICS"), $langs->trans("ICS").' ('.$langs->trans("UsedFor", $langs->transnoentitiesnoconv("StandingOrder")).')').'</td>';
|
||||||
print '<td>'.$object->ics.'</td>';
|
print '<td>'.$object->ics.'</td>';
|
||||||
@ -1080,6 +1085,20 @@ if ($action == 'create') {
|
|||||||
print '<td><input type="text" class="flat width300" name="bank" value="'.$object->bank.'"></td>';
|
print '<td><input type="text" class="flat width300" name="bank" value="'.$object->bank.'"></td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
|
$ibankey = FormBank::getIBANLabel($object);
|
||||||
|
$bickey = "BICNumber";
|
||||||
|
if ($object->getCountryCode() == 'IN') {
|
||||||
|
$bickey = "SWIFT";
|
||||||
|
}
|
||||||
|
|
||||||
|
// IBAN
|
||||||
|
print '<tr><td>'.$langs->trans($ibankey).'</td>';
|
||||||
|
print '<td><input class="minwidth300 maxwidth200onsmartphone" maxlength="34" type="text" class="flat" name="iban" value="'.(GETPOSTISSET('iban') ? GETPOST('iban', 'alphanohtml') : $object->iban).'"></td></tr>';
|
||||||
|
|
||||||
|
// BIC
|
||||||
|
print '<tr><td>'.$langs->trans($bickey).'</td>';
|
||||||
|
print '<td><input class="minwidth150 maxwidth200onsmartphone" maxlength="11" type="text" class="flat" name="bic" value="'.(GETPOSTISSET('bic') ? GETPOST('bic', 'alphanohtml') : $object->bic).'"></td></tr>';
|
||||||
|
|
||||||
// Show fields of bank account
|
// Show fields of bank account
|
||||||
foreach ($object->getFieldsToShow() as $val) {
|
foreach ($object->getFieldsToShow() as $val) {
|
||||||
$content = '';
|
$content = '';
|
||||||
@ -1106,19 +1125,6 @@ if ($action == 'create') {
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$ibankey = FormBank::getIBANLabel($object);
|
|
||||||
$bickey = "BICNumber";
|
|
||||||
if ($object->getCountryCode() == 'IN') {
|
|
||||||
$bickey = "SWIFT";
|
|
||||||
}
|
|
||||||
|
|
||||||
// IBAN
|
|
||||||
print '<tr><td>'.$langs->trans($ibankey).'</td>';
|
|
||||||
print '<td><input class="minwidth300 maxwidth200onsmartphone" maxlength="34" type="text" class="flat" name="iban" value="'.(GETPOSTISSET('iban') ? GETPOST('iban', 'alphanohtml') : $object->iban).'"></td></tr>';
|
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans($bickey).'</td>';
|
|
||||||
print '<td><input class="minwidth150 maxwidth200onsmartphone" maxlength="11" type="text" class="flat" name="bic" value="'.(GETPOSTISSET('bic') ? GETPOST('bic', 'alphanohtml') : $object->bic).'"></td></tr>';
|
|
||||||
|
|
||||||
if (isModEnabled('prelevement')) {
|
if (isModEnabled('prelevement')) {
|
||||||
print '<tr><td>'.$form->textwithpicto($langs->trans("ICS"), $langs->trans("ICS").' ('.$langs->trans("UsedFor", $langs->transnoentitiesnoconv("StandingOrder")).')').'</td>';
|
print '<tr><td>'.$form->textwithpicto($langs->trans("ICS"), $langs->trans("ICS").' ('.$langs->trans("UsedFor", $langs->transnoentitiesnoconv("StandingOrder")).')').'</td>';
|
||||||
print '<td><input class="minwidth150 maxwidth200onsmartphone" maxlength="32" type="text" class="flat" name="ics" value="'.(GETPOSTISSET('ics') ? GETPOST('ics', 'alphanohtml') : $object->ics).'"></td></tr>';
|
print '<td><input class="minwidth150 maxwidth200onsmartphone" maxlength="32" type="text" class="flat" name="ics" value="'.(GETPOSTISSET('ics') ? GETPOST('ics', 'alphanohtml') : $object->ics).'"></td></tr>';
|
||||||
|
|||||||
@ -30,6 +30,7 @@
|
|||||||
* \ingroup bank
|
* \ingroup bank
|
||||||
* \brief File of class to manage bank accounts
|
* \brief File of class to manage bank accounts
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
|
||||||
|
|
||||||
|
|
||||||
@ -1831,6 +1832,9 @@ class Account extends CommonObject
|
|||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -1838,6 +1842,7 @@ class Account extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
|
|
||||||
if (property_exists($this, 'type_lib')) {
|
if (property_exists($this, 'type_lib')) {
|
||||||
$return .= '<br><span class="info-box-label opacitymedium" title="'.$this->type_lib[$this->type].'">'.substr($this->type_lib[$this->type], 0, 24).'...</span>';
|
$return .= '<br><span class="info-box-label opacitymedium" title="'.$this->type_lib[$this->type].'">'.substr($this->type_lib[$this->type], 0, 24).'...</span>';
|
||||||
@ -1857,6 +1862,8 @@ class Account extends CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/commonobjectline.class.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class to manage bank transaction lines
|
* Class to manage bank transaction lines
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -779,6 +779,9 @@ class PaymentVarious extends CommonObject
|
|||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -786,6 +789,7 @@ class PaymentVarious extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'fk_bank')) {
|
if (property_exists($this, 'fk_bank')) {
|
||||||
$return .= ' | <span class="info-box-status ">'.$this->fk_bank.'</span>';
|
$return .= ' | <span class="info-box-status ">'.$this->fk_bank.'</span>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -480,6 +480,9 @@ class CashControl extends CommonObject
|
|||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -488,6 +491,7 @@ class CashControl extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1, 1) : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1, 1) : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'posmodule')) {
|
if (property_exists($this, 'posmodule')) {
|
||||||
$return .= '<br><span class="opacitymedium">'.substr($langs->trans("Module/Application"), 0, 12).'</span> : <span class="info-box-label">'.$this->posmodule.'</span>';
|
$return .= '<br><span class="opacitymedium">'.substr($langs->trans("Module/Application"), 0, 12).'</span> : <span class="info-box-label">'.$this->posmodule.'</span>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5811,6 +5811,8 @@ class Facture extends CommonInvoice
|
|||||||
*/
|
*/
|
||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -5819,6 +5821,7 @@ class Facture extends CommonInvoice
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'socid')) {
|
if (property_exists($this, 'socid')) {
|
||||||
$return .= '<br><span class="info-box-label">'.$this->socid.'</span>';
|
$return .= '<br><span class="info-box-label">'.$this->socid.'</span>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -835,7 +835,7 @@ if ($object->id > 0) {
|
|||||||
|
|
||||||
$sql = "SELECT pfd.rowid, pfd.traite, pfd.date_demande as date_demande,";
|
$sql = "SELECT pfd.rowid, pfd.traite, pfd.date_demande as date_demande,";
|
||||||
$sql .= " pfd.date_traite as date_traite, pfd.amount, pfd.fk_prelevement_bons,";
|
$sql .= " pfd.date_traite as date_traite, pfd.amount, pfd.fk_prelevement_bons,";
|
||||||
$sql .= " pb.ref, pb.date_trans, pb.method_trans, pb.credite, pb.date_credit, pb.datec, pb.statut as status,";
|
$sql .= " pb.ref, pb.date_trans, pb.method_trans, pb.credite, pb.date_credit, pb.datec, pb.statut as status, pb.amount as pb_amount,";
|
||||||
$sql .= " u.rowid as user_id, u.email, u.lastname, u.firstname, u.login, u.statut as user_status";
|
$sql .= " u.rowid as user_id, u.email, u.lastname, u.firstname, u.login, u.statut as user_status";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_demande as pfd";
|
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_demande as pfd";
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."user as u on pfd.fk_user_demande = u.rowid";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."user as u on pfd.fk_user_demande = u.rowid";
|
||||||
@ -896,6 +896,7 @@ if ($object->id > 0) {
|
|||||||
$withdrawreceipt->date_creation = $db->jdate($obj->datec);
|
$withdrawreceipt->date_creation = $db->jdate($obj->datec);
|
||||||
$withdrawreceipt->statut = $obj->status;
|
$withdrawreceipt->statut = $obj->status;
|
||||||
$withdrawreceipt->status = $obj->status;
|
$withdrawreceipt->status = $obj->status;
|
||||||
|
$withdrawreceipt->amount = $obj->pb_amount;
|
||||||
//$withdrawreceipt->credite = $db->jdate($obj->credite);
|
//$withdrawreceipt->credite = $db->jdate($obj->credite);
|
||||||
|
|
||||||
print $withdrawreceipt->getNomUrl(1);
|
print $withdrawreceipt->getNomUrl(1);
|
||||||
@ -942,7 +943,7 @@ if ($object->id > 0) {
|
|||||||
// Past requests
|
// Past requests
|
||||||
|
|
||||||
$sql = "SELECT pfd.rowid, pfd.traite, pfd.date_demande, pfd.date_traite, pfd.fk_prelevement_bons, pfd.amount,";
|
$sql = "SELECT pfd.rowid, pfd.traite, pfd.date_demande, pfd.date_traite, pfd.fk_prelevement_bons, pfd.amount,";
|
||||||
$sql .= " pb.ref, pb.date_trans, pb.method_trans, pb.credite, pb.date_credit, pb.datec, pb.statut as status, pb.fk_bank_account,";
|
$sql .= " pb.ref, pb.date_trans, pb.method_trans, pb.credite, pb.date_credit, pb.datec, pb.statut as status, pb.fk_bank_account, pb.amount as pb_amount,";
|
||||||
$sql .= " u.rowid as user_id, u.email, u.lastname, u.firstname, u.login, u.statut as user_status";
|
$sql .= " u.rowid as user_id, u.email, u.lastname, u.firstname, u.login, u.statut as user_status";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_demande as pfd";
|
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_demande as pfd";
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."user as u on pfd.fk_user_demande = u.rowid";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."user as u on pfd.fk_user_demande = u.rowid";
|
||||||
@ -1003,6 +1004,7 @@ if ($object->id > 0) {
|
|||||||
$withdrawreceipt->statut = $obj->status;
|
$withdrawreceipt->statut = $obj->status;
|
||||||
$withdrawreceipt->status = $obj->status;
|
$withdrawreceipt->status = $obj->status;
|
||||||
$withdrawreceipt->fk_bank_account = $obj->fk_bank_account;
|
$withdrawreceipt->fk_bank_account = $obj->fk_bank_account;
|
||||||
|
$withdrawreceipt->amount = $obj->pb_amount;
|
||||||
//$withdrawreceipt->credite = $db->jdate($obj->credite);
|
//$withdrawreceipt->credite = $db->jdate($obj->credite);
|
||||||
|
|
||||||
print $withdrawreceipt->getNomUrl(1);
|
print $withdrawreceipt->getNomUrl(1);
|
||||||
|
|||||||
@ -640,6 +640,9 @@ class Localtax extends CommonObject
|
|||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -647,6 +650,7 @@ class Localtax extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'label')) {
|
if (property_exists($this, 'label')) {
|
||||||
$return .= ' | <span class="info-box-label">'.$this->label.'</span>';
|
$return .= ' | <span class="info-box-label">'.$this->label.'</span>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -42,6 +42,11 @@ $ref = GETPOST('ref', 'alpha');
|
|||||||
$action = GETPOST('action', 'aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
$confirm = GETPOST('confirm', 'alpha');
|
$confirm = GETPOST('confirm', 'alpha');
|
||||||
|
|
||||||
|
$type = GETPOST('type');
|
||||||
|
if (empty($type)) {
|
||||||
|
$type = 'CHQ';
|
||||||
|
}
|
||||||
|
|
||||||
$object = new RemiseCheque($db);
|
$object = new RemiseCheque($db);
|
||||||
|
|
||||||
$sortfield = GETPOST('sortfield', 'aZ09comma');
|
$sortfield = GETPOST('sortfield', 'aZ09comma');
|
||||||
@ -60,6 +65,7 @@ $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit;
|
|||||||
$offset = $limit * $page;
|
$offset = $limit * $page;
|
||||||
|
|
||||||
$upload_dir = $conf->bank->multidir_output[$object->entity ? $object->entity : $conf->entity]."/checkdeposits";
|
$upload_dir = $conf->bank->multidir_output[$object->entity ? $object->entity : $conf->entity]."/checkdeposits";
|
||||||
|
|
||||||
// filter by dates from / to
|
// filter by dates from / to
|
||||||
$search_date_start_day = GETPOST('search_date_start_day', 'int');
|
$search_date_start_day = GETPOST('search_date_start_day', 'int');
|
||||||
$search_date_start_month = GETPOST('search_date_start_month', 'int');
|
$search_date_start_month = GETPOST('search_date_start_month', 'int');
|
||||||
@ -84,6 +90,10 @@ $usercandelete = $user->rights->banque->cheque;
|
|||||||
|
|
||||||
$permissiontodelete = $user->rights->banque->cheque;
|
$permissiontodelete = $user->rights->banque->cheque;
|
||||||
|
|
||||||
|
// List of payment mode to support
|
||||||
|
// Example: BANK_PAYMENT_MODES_FOR_DEPOSIT_MANAGEMENT = 'CHQ','TRA'
|
||||||
|
$arrayofpaymentmodetomanage = explode(',', getDolGlobalString('BANK_PAYMENT_MODES_FOR_DEPOSIT_MANAGEMENT', 'CHQ'));
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
@ -132,8 +142,11 @@ if ($action == 'setref' && $user->rights->banque->cheque) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'create' && GETPOST("accountid", "int") > 0 && $user->rights->banque->cheque) {
|
if ($action == 'create' && GETPOST("accountid", "int") > 0 && $user->rights->banque->cheque) {
|
||||||
if (is_array(GETPOST('toRemise'))) {
|
if (GETPOSTISARRAY('toRemise')) {
|
||||||
$result = $object->create($user, GETPOST("accountid", "int"), 0, GETPOST('toRemise'));
|
$object->type = $type;
|
||||||
|
$arrayofid = GETPOST('toRemise', 'array:int');
|
||||||
|
|
||||||
|
$result = $object->create($user, GETPOST("accountid", "int"), 0, $arrayofid);
|
||||||
if ($result > 0) {
|
if ($result > 0) {
|
||||||
if ($object->statut == 1) { // If statut is validated, we build doc
|
if ($object->statut == 1) { // If statut is validated, we build doc
|
||||||
$object->fetch($object->id); // To force to reload all properties in correct property name
|
$object->fetch($object->id); // To force to reload all properties in correct property name
|
||||||
@ -286,7 +299,16 @@ if (GETPOST('removefilter')) {
|
|||||||
$filteraccountid = 0;
|
$filteraccountid = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$title = $langs->trans("Cheques")." - ".$langs->trans("Card");
|
if ($action == 'new') {
|
||||||
|
$title = $langs->trans("NewChequeDeposit");
|
||||||
|
} else {
|
||||||
|
if ($type == 'CHQ') {
|
||||||
|
$title = $langs->trans("Cheques");
|
||||||
|
} else {
|
||||||
|
$title = ($langs->trans("PaymentType".$type) != "PaymentType".$type ? $langs->trans("PaymentType".$type) : $langs->trans("PaymentMode").' '.$type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$helpurl = "";
|
$helpurl = "";
|
||||||
llxHeader("", $title, $helpurl);
|
llxHeader("", $title, $helpurl);
|
||||||
|
|
||||||
@ -302,7 +324,7 @@ if ($action == 'new') {
|
|||||||
$hselected = $h;
|
$hselected = $h;
|
||||||
$h++;
|
$h++;
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("Cheques"), '', 'bank_account');
|
print load_fiche_titre($title, '', 'bank_account');
|
||||||
} else {
|
} else {
|
||||||
$result = $object->fetch($id, $ref);
|
$result = $object->fetch($id, $ref);
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
@ -357,7 +379,12 @@ if ($action == 'new') {
|
|||||||
|
|
||||||
$now = dol_now();
|
$now = dol_now();
|
||||||
|
|
||||||
print '<span class="opacitymedium">'.$langs->trans("SelectChequeTransactionAndGenerate").'</span><br><br>'."\n";
|
$labeltype = ($langs->trans("PaymentType".$type) != "PaymentType".$type ? $langs->trans("PaymentType".$type) : $type);
|
||||||
|
if ($type == 'CHQ') {
|
||||||
|
print '<span class="opacitymedium">'.$langs->trans("SelectChequeTransactionAndGenerate").'</span><br><br>'."\n";
|
||||||
|
} else {
|
||||||
|
print '<span class="opacitymedium">'.$langs->trans("SelectPaymentTransactionAndGenerate", $labeltype).'</span><br><br>'."\n";
|
||||||
|
}
|
||||||
|
|
||||||
print '<form class="nocellnopadd" action="'.$_SERVER["PHP_SELF"].'" method="POST">';
|
print '<form class="nocellnopadd" action="'.$_SERVER["PHP_SELF"].'" method="POST">';
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
@ -366,9 +393,28 @@ if ($action == 'new') {
|
|||||||
print dol_get_fiche_head();
|
print dol_get_fiche_head();
|
||||||
|
|
||||||
print '<table class="border centpercent">';
|
print '<table class="border centpercent">';
|
||||||
//print '<tr><td width="30%">'.$langs->trans('Date').'</td><td width="70%">'.dol_print_date($now,'day').'</td></tr>';
|
|
||||||
// Filter
|
if (count($arrayofpaymentmodetomanage) > 1) {
|
||||||
print '<tr><td class="titlefieldcreate">'.$langs->trans("DateChequeReceived").'</td><td>';
|
$arrayoflabels = array();
|
||||||
|
foreach ($arrayofpaymentmodetomanage as $key => $val) {
|
||||||
|
$labelval = ($langs->trans("PaymentType".$val) != "PaymentType".$val ? $langs->trans("PaymentType".$val) : $val);
|
||||||
|
$arrayoflabels[$key] = $labelval;
|
||||||
|
}
|
||||||
|
// Type
|
||||||
|
print '<tr><td>';
|
||||||
|
print $langs->trans("Type");
|
||||||
|
print '</td><td>';
|
||||||
|
print $form->selectarray('type', $arrayoflabels, $type);
|
||||||
|
print '</td></tr>';
|
||||||
|
}
|
||||||
|
// Date
|
||||||
|
print '<tr><td class="titlefieldcreate">';
|
||||||
|
if ($type == 'CHQ') {
|
||||||
|
print $langs->trans("DateChequeReceived");
|
||||||
|
} else {
|
||||||
|
print $langs->trans("DatePaymentReceived");
|
||||||
|
}
|
||||||
|
print '</td><td>';
|
||||||
// filter by dates from / to
|
// filter by dates from / to
|
||||||
print '<div class="nowrap">';
|
print '<div class="nowrap">';
|
||||||
print $form->selectDate($search_date_start, 'search_date_start_', 0, 0, 1, '', 1, 1, 0, '', '', '', '', 1, '', $langs->trans('From'));
|
print $form->selectDate($search_date_start, 'search_date_start_', 0, 0, 1, '', 1, 1, 0, '', '', '', '', 1, '', $langs->trans('From'));
|
||||||
@ -402,7 +448,7 @@ if ($action == 'new') {
|
|||||||
$sql .= " FROM ".MAIN_DB_PREFIX."bank as b";
|
$sql .= " FROM ".MAIN_DB_PREFIX."bank as b";
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."paiement as p ON p.fk_bank = b.rowid";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."paiement as p ON p.fk_bank = b.rowid";
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."bank_account as ba ON (b.fk_account = ba.rowid)";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."bank_account as ba ON (b.fk_account = ba.rowid)";
|
||||||
$sql .= " WHERE b.fk_type = 'CHQ'";
|
$sql .= " WHERE b.fk_type = '".$db->escape($type)."'";
|
||||||
$sql .= " AND ba.entity IN (".getEntity('bank_account').")";
|
$sql .= " AND ba.entity IN (".getEntity('bank_account').")";
|
||||||
$sql .= " AND b.fk_bordereau = 0";
|
$sql .= " AND b.fk_bordereau = 0";
|
||||||
$sql .= " AND b.amount > 0";
|
$sql .= " AND b.amount > 0";
|
||||||
@ -437,7 +483,11 @@ if ($action == 'new') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($i == 0) {
|
if ($i == 0) {
|
||||||
print '<div class="opacitymedium">'.$langs->trans("NoWaitingChecks").'</div><br>';
|
if ($type == 'CHQ') {
|
||||||
|
print '<div class="opacitymedium">'.$langs->trans("NoWaitingChecks").'</div><br>';
|
||||||
|
} else {
|
||||||
|
print '<div class="opacitymedium">'.$langs->trans("NoWaitingPaymentForDeposit", $labeltype).'</div><br>';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -459,9 +509,11 @@ if ($action == 'new') {
|
|||||||
';
|
';
|
||||||
|
|
||||||
$num = $db->num_rows($resql);
|
$num = $db->num_rows($resql);
|
||||||
|
|
||||||
print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
|
print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
print '<input type="hidden" name="action" value="create">';
|
print '<input type="hidden" name="action" value="create">';
|
||||||
|
print '<input type="hidden" name="type" value="'.$type.'">';
|
||||||
print '<input type="hidden" name="accountid" value="'.$bid.'">';
|
print '<input type="hidden" name="accountid" value="'.$bid.'">';
|
||||||
|
|
||||||
$moreforfilter = '';
|
$moreforfilter = '';
|
||||||
@ -469,11 +521,17 @@ if ($action == 'new') {
|
|||||||
print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
|
print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td>'.$langs->trans("DateChequeReceived").'</td>'."\n";
|
print '<td>';
|
||||||
|
if ($type == 'CHQ') {
|
||||||
|
print $langs->trans("DateChequeReceived");
|
||||||
|
} else {
|
||||||
|
print $langs->trans("DatePaymentForDepositReceived", $type);
|
||||||
|
}
|
||||||
|
print '</td>'."\n";
|
||||||
print '<td>'.$langs->trans("ChequeNumber")."</td>\n";
|
print '<td>'.$langs->trans("ChequeNumber")."</td>\n";
|
||||||
print '<td>'.$langs->trans("CheckTransmitter")."</td>\n";
|
print '<td>'.$langs->trans("CheckTransmitter")."</td>\n";
|
||||||
print '<td>'.$langs->trans("Bank")."</td>\n";
|
print '<td>'.$langs->trans("Bank")."</td>\n";
|
||||||
print '<td>'.$langs->trans("Amount")."</td>\n";
|
print '<td class="right">'.$langs->trans("Amount")."</td>\n";
|
||||||
print '<td class="center">'.$langs->trans("Payment")."</td>\n";
|
print '<td class="center">'.$langs->trans("Payment")."</td>\n";
|
||||||
print '<td class="center">'.$langs->trans("LineRecord")."</td>\n";
|
print '<td class="center">'.$langs->trans("LineRecord")."</td>\n";
|
||||||
print '<td class="center">'.$langs->trans("Select")."<br>";
|
print '<td class="center">'.$langs->trans("Select")."<br>";
|
||||||
@ -541,7 +599,13 @@ if ($action == 'new') {
|
|||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/compta/paiement/cheque/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
|
$linkback = '<a href="'.DOL_URL_ROOT.'/compta/paiement/cheque/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
|
||||||
|
|
||||||
$morehtmlref = '';
|
$morehtmlref = '';
|
||||||
dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
|
$morehtmlleft = '';
|
||||||
|
$moreghtmlright = '';
|
||||||
|
|
||||||
|
$labelval = ($langs->trans("PaymentType".$object->type) != "PaymentType".$object->type ? $langs->trans("PaymentType".$object->type) : $object->type);
|
||||||
|
$morehtmlref = '<br><div class="refidno">'.$langs->trans("Type").' : '.$labelval.'</div>';
|
||||||
|
|
||||||
|
dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref, '', 0, $morehtmlleft, '', 0, $moreghtmlright);
|
||||||
|
|
||||||
|
|
||||||
print '<div class="fichecenter">';
|
print '<div class="fichecenter">';
|
||||||
@ -632,7 +696,7 @@ if ($action == 'new') {
|
|||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."bank as b ON (b.fk_account = ba.rowid)";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."bank as b ON (b.fk_account = ba.rowid)";
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."paiement as p ON p.fk_bank = b.rowid";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."paiement as p ON p.fk_bank = b.rowid";
|
||||||
$sql .= " WHERE ba.entity IN (".getEntity('bank_account').")";
|
$sql .= " WHERE ba.entity IN (".getEntity('bank_account').")";
|
||||||
$sql .= " AND b.fk_type= 'CHQ'";
|
$sql .= " AND b.fk_type= '".$db->escape($object->type)."'";
|
||||||
$sql .= " AND b.fk_bordereau = ".((int) $object->id);
|
$sql .= " AND b.fk_bordereau = ".((int) $object->id);
|
||||||
$sql .= $db->order($sortfield, $sortorder);
|
$sql .= $db->order($sortfield, $sortorder);
|
||||||
|
|
||||||
@ -706,9 +770,9 @@ if ($action == 'new') {
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print '<td colspan="8" class="opacitymedium">';
|
print '<td colspan="9"><span class="opacitymedium">';
|
||||||
print $langs->trans("None");
|
print $langs->trans("None");
|
||||||
print '</td>';
|
print '</span></td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
print "</table>";
|
print "</table>";
|
||||||
|
|||||||
@ -53,6 +53,8 @@ class RemiseCheque extends CommonObject
|
|||||||
//! Numero d'erreur Plage 1024-1279
|
//! Numero d'erreur Plage 1024-1279
|
||||||
public $errno;
|
public $errno;
|
||||||
|
|
||||||
|
public $type = 'CHQ'; // 'CHQ', 'TRA', ...
|
||||||
|
|
||||||
public $amount;
|
public $amount;
|
||||||
public $date_bordereau;
|
public $date_bordereau;
|
||||||
public $account_id;
|
public $account_id;
|
||||||
@ -92,9 +94,9 @@ class RemiseCheque extends CommonObject
|
|||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
$sql = "SELECT bc.rowid, bc.datec, bc.fk_user_author, bc.fk_bank_account, bc.amount, bc.ref, bc.statut, bc.nbcheque, bc.ref_ext";
|
$sql = "SELECT bc.rowid, bc.datec, bc.fk_user_author, bc.fk_bank_account, bc.amount, bc.ref, bc.statut, bc.nbcheque, bc.ref_ext,";
|
||||||
$sql .= ", bc.date_bordereau as date_bordereau";
|
$sql .= " bc.date_bordereau as date_bordereau, bc.type,";
|
||||||
$sql .= ", ba.label as account_label";
|
$sql .= " ba.label as account_label";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."bordereau_cheque as bc";
|
$sql .= " FROM ".MAIN_DB_PREFIX."bordereau_cheque as bc";
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."bank_account as ba ON bc.fk_bank_account = ba.rowid";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."bank_account as ba ON bc.fk_bank_account = ba.rowid";
|
||||||
$sql .= " WHERE bc.entity = ".$conf->entity;
|
$sql .= " WHERE bc.entity = ".$conf->entity;
|
||||||
@ -118,6 +120,7 @@ class RemiseCheque extends CommonObject
|
|||||||
$this->nbcheque = $obj->nbcheque;
|
$this->nbcheque = $obj->nbcheque;
|
||||||
$this->statut = $obj->statut;
|
$this->statut = $obj->statut;
|
||||||
$this->ref_ext = $obj->ref_ext;
|
$this->ref_ext = $obj->ref_ext;
|
||||||
|
$this->type = $obj->type;
|
||||||
|
|
||||||
if ($this->statut == 0) {
|
if ($this->statut == 0) {
|
||||||
$this->ref = "(PROV".$this->id.")";
|
$this->ref = "(PROV".$this->id.")";
|
||||||
@ -154,6 +157,11 @@ class RemiseCheque extends CommonObject
|
|||||||
|
|
||||||
dol_syslog("RemiseCheque::Create start", LOG_DEBUG);
|
dol_syslog("RemiseCheque::Create start", LOG_DEBUG);
|
||||||
|
|
||||||
|
// Clean parameters
|
||||||
|
if (empty($this->type)) {
|
||||||
|
$this->type = 'CHQ';
|
||||||
|
}
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bordereau_cheque (";
|
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bordereau_cheque (";
|
||||||
@ -167,6 +175,7 @@ class RemiseCheque extends CommonObject
|
|||||||
$sql .= ", entity";
|
$sql .= ", entity";
|
||||||
$sql .= ", nbcheque";
|
$sql .= ", nbcheque";
|
||||||
$sql .= ", ref_ext";
|
$sql .= ", ref_ext";
|
||||||
|
$sql .= ", type";
|
||||||
$sql .= ") VALUES (";
|
$sql .= ") VALUES (";
|
||||||
$sql .= "'".$this->db->idate($now)."'";
|
$sql .= "'".$this->db->idate($now)."'";
|
||||||
$sql .= ", '".$this->db->idate($now)."'";
|
$sql .= ", '".$this->db->idate($now)."'";
|
||||||
@ -178,6 +187,7 @@ class RemiseCheque extends CommonObject
|
|||||||
$sql .= ", ".((int) $conf->entity);
|
$sql .= ", ".((int) $conf->entity);
|
||||||
$sql .= ", 0";
|
$sql .= ", 0";
|
||||||
$sql .= ", ''";
|
$sql .= ", ''";
|
||||||
|
$sql .= ", '".$this->db->escape($this->type)."'";
|
||||||
$sql .= ")";
|
$sql .= ")";
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
@ -205,7 +215,7 @@ class RemiseCheque extends CommonObject
|
|||||||
if ($this->id > 0 && $this->errno == 0) {
|
if ($this->id > 0 && $this->errno == 0) {
|
||||||
$sql = "SELECT b.rowid";
|
$sql = "SELECT b.rowid";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."bank as b";
|
$sql .= " FROM ".MAIN_DB_PREFIX."bank as b";
|
||||||
$sql .= " WHERE b.fk_type = 'CHQ'";
|
$sql .= " WHERE b.fk_type = '".$this->db->escape($this->type)."'";
|
||||||
$sql .= " AND b.amount > 0";
|
$sql .= " AND b.amount > 0";
|
||||||
$sql .= " AND b.fk_bordereau = 0";
|
$sql .= " AND b.fk_bordereau = 0";
|
||||||
$sql .= " AND b.fk_account = ".((int) $account_id);
|
$sql .= " AND b.fk_account = ".((int) $account_id);
|
||||||
@ -278,9 +288,9 @@ class RemiseCheque extends CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Supprime la remise en base
|
* Delete deposit from database
|
||||||
*
|
*
|
||||||
* @param User $user Utilisateur qui effectue l'operation
|
* @param User $user User that delete
|
||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
public function delete($user = '')
|
public function delete($user = '')
|
||||||
@ -464,10 +474,11 @@ class RemiseCheque extends CommonObject
|
|||||||
/**
|
/**
|
||||||
* Load indicators for dashboard (this->nbtodo and this->nbtodolate)
|
* Load indicators for dashboard (this->nbtodo and this->nbtodolate)
|
||||||
*
|
*
|
||||||
* @param User $user Objet user
|
* @param User $user Objet user
|
||||||
|
* @param string $type Type of payment mode deposit ('CHQ', 'TRA', ...)
|
||||||
* @return WorkboardResponse|int <0 if KO, WorkboardResponse if OK
|
* @return WorkboardResponse|int <0 if KO, WorkboardResponse if OK
|
||||||
*/
|
*/
|
||||||
public function load_board($user)
|
public function load_board($user, $type = 'CHQ')
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
@ -481,7 +492,7 @@ class RemiseCheque extends CommonObject
|
|||||||
$sql .= ", ".MAIN_DB_PREFIX."bank_account as ba";
|
$sql .= ", ".MAIN_DB_PREFIX."bank_account as ba";
|
||||||
$sql .= " WHERE b.fk_account = ba.rowid";
|
$sql .= " WHERE b.fk_account = ba.rowid";
|
||||||
$sql .= " AND ba.entity IN (".getEntity('bank_account').")";
|
$sql .= " AND ba.entity IN (".getEntity('bank_account').")";
|
||||||
$sql .= " AND b.fk_type = 'CHQ'";
|
$sql .= " AND b.fk_type = '".$this->db->escape($type)."'";
|
||||||
$sql .= " AND b.fk_bordereau = 0";
|
$sql .= " AND b.fk_bordereau = 0";
|
||||||
$sql .= " AND b.amount > 0";
|
$sql .= " AND b.amount > 0";
|
||||||
|
|
||||||
@ -518,9 +529,10 @@ class RemiseCheque extends CommonObject
|
|||||||
/**
|
/**
|
||||||
* Charge indicateurs this->nb de tableau de bord
|
* Charge indicateurs this->nb de tableau de bord
|
||||||
*
|
*
|
||||||
* @return int <0 if ko, >0 if ok
|
* @param string $type Type of payment mode deposit ('CHQ', 'TRA', ...)
|
||||||
|
* @return int <0 if ko, >0 if ok
|
||||||
*/
|
*/
|
||||||
public function load_state_board()
|
public function load_state_board($type = 'CHQ')
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
global $user;
|
global $user;
|
||||||
@ -534,7 +546,7 @@ class RemiseCheque extends CommonObject
|
|||||||
$sql .= ", ".MAIN_DB_PREFIX."bank_account as ba";
|
$sql .= ", ".MAIN_DB_PREFIX."bank_account as ba";
|
||||||
$sql .= " WHERE b.fk_account = ba.rowid";
|
$sql .= " WHERE b.fk_account = ba.rowid";
|
||||||
$sql .= " AND ba.entity IN (".getEntity('bank_account').")";
|
$sql .= " AND ba.entity IN (".getEntity('bank_account').")";
|
||||||
$sql .= " AND b.fk_type = 'CHQ'";
|
$sql .= " AND b.fk_type = '".$this->db->escape($type)."'";
|
||||||
$sql .= " AND b.amount > 0";
|
$sql .= " AND b.amount > 0";
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
@ -615,7 +627,7 @@ class RemiseCheque extends CommonObject
|
|||||||
|
|
||||||
// We save charset_output to restore it because write_file can change it if needed for
|
// We save charset_output to restore it because write_file can change it if needed for
|
||||||
// output format that does not support UTF8.
|
// output format that does not support UTF8.
|
||||||
$sav_charseSupprimert_output = $outputlangs->charset_output;
|
$sav_charset_output = $outputlangs->charset_output;
|
||||||
|
|
||||||
$result = $docmodel->write_file($this, $conf->bank->dir_output.'/checkdeposits', $this->ref, $outputlangs);
|
$result = $docmodel->write_file($this, $conf->bank->dir_output.'/checkdeposits', $this->ref, $outputlangs);
|
||||||
if ($result > 0) {
|
if ($result > 0) {
|
||||||
@ -664,7 +676,7 @@ class RemiseCheque extends CommonObject
|
|||||||
$sql .= " SET amount = ".price2num($total);
|
$sql .= " SET amount = ".price2num($total);
|
||||||
$sql .= ", nbcheque = ".((int) $nb);
|
$sql .= ", nbcheque = ".((int) $nb);
|
||||||
$sql .= " WHERE rowid = ".((int) $this->id);
|
$sql .= " WHERE rowid = ".((int) $this->id);
|
||||||
$sql .= " AND entity = ".$conf->entity;
|
$sql .= " AND entity = ".((int) $conf->entity);
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if (!$resql) {
|
if (!$resql) {
|
||||||
@ -813,7 +825,7 @@ class RemiseCheque extends CommonObject
|
|||||||
|
|
||||||
$sql = "SELECT MAX(rowid)";
|
$sql = "SELECT MAX(rowid)";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."bordereau_cheque";
|
$sql .= " FROM ".MAIN_DB_PREFIX."bordereau_cheque";
|
||||||
$sql .= " WHERE rowid < ".$this->id;
|
$sql .= " WHERE rowid < ".((int) $this->id);
|
||||||
$sql .= " AND entity = ".$conf->entity;
|
$sql .= " AND entity = ".$conf->entity;
|
||||||
|
|
||||||
$result = $this->db->query($sql);
|
$result = $this->db->query($sql);
|
||||||
@ -825,7 +837,7 @@ class RemiseCheque extends CommonObject
|
|||||||
|
|
||||||
$sql = "SELECT MIN(rowid)";
|
$sql = "SELECT MIN(rowid)";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."bordereau_cheque";
|
$sql .= " FROM ".MAIN_DB_PREFIX."bordereau_cheque";
|
||||||
$sql .= " WHERE rowid > ".$this->id;
|
$sql .= " WHERE rowid > ".((int) $this->id);
|
||||||
$sql .= " AND entity = ".$conf->entity;
|
$sql .= " AND entity = ".$conf->entity;
|
||||||
|
|
||||||
$result = $this->db->query($sql);
|
$result = $this->db->query($sql);
|
||||||
@ -1032,6 +1044,8 @@ class RemiseCheque extends CommonObject
|
|||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -1039,6 +1053,7 @@ class RemiseCheque extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
|
|
||||||
if (property_exists($this, 'date_bordereau')) {
|
if (property_exists($this, 'date_bordereau')) {
|
||||||
$return .= '<br><span class="opacitymedium">'.$langs->trans("DateCreation").'</span> : <span class="info-box-label">'.dol_print_date($this->db->jdate($this->date_bordereau), 'day').'</span>';
|
$return .= '<br><span class="opacitymedium">'.$langs->trans("DateCreation").'</span> : <span class="info-box-label">'.dol_print_date($this->db->jdate($this->date_bordereau), 'day').'</span>';
|
||||||
|
|||||||
@ -43,6 +43,10 @@ $result = restrictedArea($user, 'banque', '', '');
|
|||||||
|
|
||||||
$usercancreate = $user->hasRight('banque', 'cheque');
|
$usercancreate = $user->hasRight('banque', 'cheque');
|
||||||
|
|
||||||
|
// List of payment mode to support
|
||||||
|
// Example: BANK_PAYMENT_MODES_FOR_DEPOSIT_MANAGEMENT = 'CHQ','TRA'
|
||||||
|
$arrayofpaymentmodetomanage = explode(',', getDolGlobalString('BANK_PAYMENT_MODES_FOR_DEPOSIT_MANAGEMENT', 'CHQ'));
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
@ -55,47 +59,61 @@ $usercancreate = $user->hasRight('banque', 'cheque');
|
|||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
|
|
||||||
llxHeader('', $langs->trans("ChequesArea"));
|
if (getDolGlobalString('BANK_PAYMENT_MODES_FOR_DEPOSIT_MANAGEMENT', 'CHQ') == 'CHQ') {
|
||||||
|
$title = $langs->trans("ChequesArea");
|
||||||
|
} else {
|
||||||
|
$title = $langs->trans("DocumentsDepositArea");
|
||||||
|
}
|
||||||
|
|
||||||
|
llxHeader('', $title);
|
||||||
|
|
||||||
$newcardbutton = '';
|
$newcardbutton = '';
|
||||||
if ($usercancreate) {
|
if ($usercancreate) {
|
||||||
$newcardbutton .= dolGetButtonTitle($langs->trans('NewDeposit'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/compta/paiement/cheque/card.php?action=new');
|
$newcardbutton .= dolGetButtonTitle($langs->trans('NewDeposit'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/compta/paiement/cheque/card.php?action=new');
|
||||||
}
|
}
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("ChequesArea"), $newcardbutton, $checkdepositstatic->picto);
|
print load_fiche_titre($title, $newcardbutton, $checkdepositstatic->picto);
|
||||||
|
|
||||||
print '<div class="fichecenter"><div class="fichethirdleft">';
|
print '<div class="fichecenter"><div class="fichethirdleft">';
|
||||||
|
|
||||||
$sql = "SELECT count(b.rowid) as nb";
|
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."bank as b";
|
|
||||||
$sql .= ", ".MAIN_DB_PREFIX."bank_account as ba";
|
|
||||||
$sql .= " WHERE ba.rowid = b.fk_account";
|
|
||||||
$sql .= " AND ba.entity IN (".getEntity('bank_account').")";
|
|
||||||
$sql .= " AND b.fk_type = 'CHQ'";
|
|
||||||
$sql .= " AND b.fk_bordereau = 0";
|
|
||||||
$sql .= " AND b.amount > 0";
|
|
||||||
|
|
||||||
$resql = $db->query($sql);
|
|
||||||
|
|
||||||
print '<div class="div-table-responsive-no-min">';
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<th colspan="2">'.$langs->trans("BankChecks")."</th>\n";
|
print '<th colspan="2">'.$langs->trans("DocumentsForDeposit")."</th>\n";
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
if ($resql) {
|
foreach ($arrayofpaymentmodetomanage as $val) {
|
||||||
$num = '';
|
$sql = "SELECT count(b.rowid) as nb";
|
||||||
if ($obj = $db->fetch_object($resql)) {
|
$sql .= " FROM ".MAIN_DB_PREFIX."bank as b";
|
||||||
$num = $obj->nb;
|
$sql .= ", ".MAIN_DB_PREFIX."bank_account as ba";
|
||||||
|
$sql .= " WHERE ba.rowid = b.fk_account";
|
||||||
|
$sql .= " AND ba.entity IN (".getEntity('bank_account').")";
|
||||||
|
$sql .= " AND b.fk_type = '".$db->escape($val)."'";
|
||||||
|
$sql .= " AND b.fk_bordereau = 0";
|
||||||
|
$sql .= " AND b.amount > 0";
|
||||||
|
|
||||||
|
$resql = $db->query($sql);
|
||||||
|
if ($resql) {
|
||||||
|
$num = '';
|
||||||
|
if ($obj = $db->fetch_object($resql)) {
|
||||||
|
$num = $obj->nb;
|
||||||
|
}
|
||||||
|
print '<tr class="oddeven">';
|
||||||
|
print '<td>';
|
||||||
|
if ($val == 'CHQ') {
|
||||||
|
print $langs->trans("BankChecks");
|
||||||
|
} else {
|
||||||
|
print ($langs->trans("PaymentType".$val) != "PaymentType".$val ? $langs->trans("PaymentType".$val) : $langs->trans("PaymentMode").' '.$val);
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
print '<td class="right">';
|
||||||
|
print '<a class="badge badge-info" href="'.DOL_URL_ROOT.'/compta/paiement/cheque/card.php?leftmenu=customers_bills_checks&action=new&type='.urlencode($val).'">'.dol_escape_htmltag($num).'</a>';
|
||||||
|
print '</td></tr>';
|
||||||
|
} else {
|
||||||
|
dol_print_error($db);
|
||||||
}
|
}
|
||||||
print '<tr class="oddeven">';
|
|
||||||
print '<td>'.$langs->trans("BankChecksToReceipt").'</td>';
|
|
||||||
print '<td class="right">';
|
|
||||||
print '<a class="badge badge-info" href="'.DOL_URL_ROOT.'/compta/paiement/cheque/card.php?leftmenu=customers_bills_checks&action=new">'.$num.'</a>';
|
|
||||||
print '</td></tr>';
|
|
||||||
} else {
|
|
||||||
dol_print_error($db);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
print "</table></div>\n";
|
print "</table></div>\n";
|
||||||
|
|
||||||
|
|
||||||
@ -103,64 +121,79 @@ print '</div><div class="fichetwothirdright">';
|
|||||||
|
|
||||||
$max = 10;
|
$max = 10;
|
||||||
|
|
||||||
$sql = "SELECT bc.rowid, bc.date_bordereau as db, bc.amount, bc.ref as ref,";
|
foreach ($arrayofpaymentmodetomanage as $val) {
|
||||||
$sql .= " bc.statut, bc.nbcheque,";
|
$sql = "SELECT bc.rowid, bc.date_bordereau as db, bc.amount, bc.ref as ref,";
|
||||||
$sql .= " ba.ref as bref, ba.label, ba.rowid as bid, ba.number, ba.currency_code, ba.account_number, ba.fk_accountancy_journal,";
|
$sql .= " bc.statut, bc.nbcheque, bc.type,";
|
||||||
$sql .= " aj.code";
|
$sql .= " ba.ref as bref, ba.label, ba.rowid as bid, ba.number, ba.currency_code, ba.account_number, ba.fk_accountancy_journal,";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."bordereau_cheque as bc, ".MAIN_DB_PREFIX."bank_account as ba";
|
$sql .= " aj.code";
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_journal as aj ON aj.rowid = ba.fk_accountancy_journal";
|
$sql .= " FROM ".MAIN_DB_PREFIX."bordereau_cheque as bc, ".MAIN_DB_PREFIX."bank_account as ba";
|
||||||
$sql .= " WHERE ba.rowid = bc.fk_bank_account";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_journal as aj ON aj.rowid = ba.fk_accountancy_journal";
|
||||||
$sql .= " AND bc.entity = ".$conf->entity;
|
$sql .= " WHERE ba.rowid = bc.fk_bank_account";
|
||||||
$sql .= " ORDER BY bc.date_bordereau DESC, rowid DESC";
|
$sql .= " AND bc.entity = ".((int) $conf->entity);
|
||||||
$sql .= $db->plimit($max);
|
$sql .= " AND bc.type = '".$db->escape($val)."'";
|
||||||
|
$sql .= " ORDER BY bc.date_bordereau DESC, rowid DESC";
|
||||||
|
$sql .= $db->plimit($max);
|
||||||
|
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
print '<div class="div-table-responsive-no-min">'; // You can use div-table-responsive-no-min if you dont need reserved height for your table
|
print '<div class="div-table-responsive-no-min">'; // You can use div-table-responsive-no-min if you dont need reserved height for your table
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<th>'.$langs->trans("LastCheckReceiptShort", $max).'</th>';
|
print '<th>';
|
||||||
print '<th>'.$langs->trans("Date")."</th>";
|
if ($val == 'CHQ') {
|
||||||
print '<th>'.$langs->trans("Account").'</th>';
|
print $langs->trans("LastCheckReceiptShort", $max);
|
||||||
print '<th class="right">'.$langs->trans("NbOfCheques").'</th>';
|
} else {
|
||||||
print '<th class="right">'.$langs->trans("Amount").'</th>';
|
$labelpaymentmode = ($langs->trans("PaymentType".$val) != "PaymentType".$val ? $langs->trans("PaymentType".$val) : $val);
|
||||||
print '<th class="right">'.$langs->trans("Status").'</th>';
|
print $langs->trans("LastPaymentForDepositShort", $max, $labelpaymentmode);
|
||||||
print "</tr>\n";
|
}
|
||||||
|
print '</th>';
|
||||||
|
print '<th>'.$langs->trans("Date")."</th>";
|
||||||
|
print '<th>'.$langs->trans("Account").'</th>';
|
||||||
|
print '<th class="right">'.$langs->trans("NbOfCheques").'</th>';
|
||||||
|
print '<th class="right">'.$langs->trans("Amount").'</th>';
|
||||||
|
print '<th class="right">'.$langs->trans("Status").'</th>';
|
||||||
|
print "</tr>\n";
|
||||||
|
|
||||||
while ($objp = $db->fetch_object($resql)) {
|
$i = 0;
|
||||||
$checkdepositstatic->id = $objp->rowid;
|
while ($objp = $db->fetch_object($resql)) {
|
||||||
$checkdepositstatic->ref = ($objp->ref ? $objp->ref : $objp->rowid);
|
$i++;
|
||||||
$checkdepositstatic->statut = $objp->statut;
|
|
||||||
|
|
||||||
$accountstatic->id = $objp->bid;
|
$checkdepositstatic->id = $objp->rowid;
|
||||||
$accountstatic->ref = $objp->bref;
|
$checkdepositstatic->ref = ($objp->ref ? $objp->ref : $objp->rowid);
|
||||||
$accountstatic->label = $objp->label;
|
$checkdepositstatic->statut = $objp->statut;
|
||||||
$accountstatic->number = $objp->number;
|
|
||||||
$accountstatic->currency_code = $objp->currency_code;
|
|
||||||
$accountstatic->account_number = $objp->account_number;
|
|
||||||
$accountstatic->accountancy_journal = $objp->code;
|
|
||||||
$accountstatic->fk_accountancy_journal = $objp->fk_accountancy_journal;
|
|
||||||
|
|
||||||
print '<tr class="oddeven">'."\n";
|
$accountstatic->id = $objp->bid;
|
||||||
|
$accountstatic->ref = $objp->bref;
|
||||||
|
$accountstatic->label = $objp->label;
|
||||||
|
$accountstatic->number = $objp->number;
|
||||||
|
$accountstatic->currency_code = $objp->currency_code;
|
||||||
|
$accountstatic->account_number = $objp->account_number;
|
||||||
|
$accountstatic->accountancy_journal = $objp->code;
|
||||||
|
$accountstatic->fk_accountancy_journal = $objp->fk_accountancy_journal;
|
||||||
|
|
||||||
print '<td class="nowraponall">'.$checkdepositstatic->getNomUrl(1).'</td>';
|
print '<tr class="oddeven">'."\n";
|
||||||
print '<td>'.dol_print_date($db->jdate($objp->db), 'day').'</td>';
|
|
||||||
print '<td class="nowraponall">'.$accountstatic->getNomUrl(1).'</td>';
|
|
||||||
print '<td class="right">'.$objp->nbcheque.'</td>';
|
|
||||||
print '<td class="right"><span class="amount">'.price($objp->amount).'</span></td>';
|
|
||||||
print '<td class="right">'.$checkdepositstatic->LibStatut($objp->statut, 3).'</td>';
|
|
||||||
|
|
||||||
print '</tr>';
|
print '<td class="nowraponall">'.$checkdepositstatic->getNomUrl(1).'</td>';
|
||||||
|
print '<td>'.dol_print_date($db->jdate($objp->db), 'day').'</td>';
|
||||||
|
print '<td class="nowraponall">'.$accountstatic->getNomUrl(1).'</td>';
|
||||||
|
print '<td class="right">'.$objp->nbcheque.'</td>';
|
||||||
|
print '<td class="right"><span class="amount">'.price($objp->amount).'</span></td>';
|
||||||
|
print '<td class="right">'.$checkdepositstatic->LibStatut($objp->statut, 3).'</td>';
|
||||||
|
|
||||||
|
print '</tr>';
|
||||||
|
}
|
||||||
|
if ($i == 0) {
|
||||||
|
print '<tr><td colspan="6"><span class="opacitymedium">'.$langs->trans("None").'</span></td></tr>';
|
||||||
|
}
|
||||||
|
print "</table>";
|
||||||
|
print '</div>';
|
||||||
|
|
||||||
|
$db->free($resql);
|
||||||
|
} else {
|
||||||
|
dol_print_error($db);
|
||||||
}
|
}
|
||||||
print "</table>";
|
|
||||||
print '</div>';
|
|
||||||
|
|
||||||
$db->free($resql);
|
|
||||||
} else {
|
|
||||||
dol_print_error($db);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
print '</div></div>';
|
print '</div></div>';
|
||||||
|
|
||||||
// End of page
|
// End of page
|
||||||
|
|||||||
@ -73,6 +73,16 @@ $formother = new FormOther($db);
|
|||||||
$checkdepositstatic = new RemiseCheque($db);
|
$checkdepositstatic = new RemiseCheque($db);
|
||||||
$accountstatic = new Account($db);
|
$accountstatic = new Account($db);
|
||||||
|
|
||||||
|
// List of payment mode to support
|
||||||
|
// Example: BANK_PAYMENT_MODES_FOR_DEPOSIT_MANAGEMENT = 'CHQ','TRA'
|
||||||
|
$arrayofpaymentmodetomanage = explode(',', getDolGlobalString('BANK_PAYMENT_MODES_FOR_DEPOSIT_MANAGEMENT', 'CHQ'));
|
||||||
|
|
||||||
|
$arrayoflabels = array();
|
||||||
|
foreach ($arrayofpaymentmodetomanage as $key => $val) {
|
||||||
|
$labelval = ($langs->trans("PaymentType".$val) != "PaymentType".$val ? $langs->trans("PaymentType".$val) : $val);
|
||||||
|
$arrayoflabels[$key] = $labelval;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
@ -93,10 +103,10 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x'
|
|||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
|
|
||||||
llxHeader('', $langs->trans("ChequesReceipts"));
|
llxHeader('', $langs->trans("ChequeDeposits"));
|
||||||
|
|
||||||
$sql = "SELECT bc.rowid, bc.ref, bc.date_bordereau,";
|
$sql = "SELECT bc.rowid, bc.ref, bc.date_bordereau,";
|
||||||
$sql .= " bc.nbcheque, bc.amount, bc.statut,";
|
$sql .= " bc.nbcheque, bc.amount, bc.statut, bc.type,";
|
||||||
$sql .= " ba.rowid as bid, ba.label";
|
$sql .= " ba.rowid as bid, ba.label";
|
||||||
|
|
||||||
$sqlfields = $sql; // $sql fields to remove for count total
|
$sqlfields = $sql; // $sql fields to remove for count total
|
||||||
@ -104,7 +114,7 @@ $sqlfields = $sql; // $sql fields to remove for count total
|
|||||||
$sql .= " FROM ".MAIN_DB_PREFIX."bordereau_cheque as bc,";
|
$sql .= " FROM ".MAIN_DB_PREFIX."bordereau_cheque as bc,";
|
||||||
$sql .= " ".MAIN_DB_PREFIX."bank_account as ba";
|
$sql .= " ".MAIN_DB_PREFIX."bank_account as ba";
|
||||||
$sql .= " WHERE bc.fk_bank_account = ba.rowid";
|
$sql .= " WHERE bc.fk_bank_account = ba.rowid";
|
||||||
$sql .= " AND bc.entity = ".$conf->entity;
|
$sql .= " AND bc.entity = ".((int) $conf->entity);
|
||||||
|
|
||||||
// Search criteria
|
// Search criteria
|
||||||
if ($search_ref) {
|
if ($search_ref) {
|
||||||
@ -191,10 +201,13 @@ if ($resql) {
|
|||||||
|
|
||||||
// Fields title search
|
// Fields title search
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td class="liste_titre" align="left">';
|
print '<td class="liste_titre">';
|
||||||
print '<input class="flat" type="text" size="4" name="search_ref" value="'.$search_ref.'">';
|
print '<input class="flat" type="text" size="4" name="search_ref" value="'.$search_ref.'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="liste_titre" align="center">';
|
// Type
|
||||||
|
print '<td class="liste_titre">';
|
||||||
|
print '</td>';
|
||||||
|
print '<td class="liste_titre center">';
|
||||||
if (!empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) {
|
if (!empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) {
|
||||||
print '<input class="flat" type="text" size="1" maxlength="2" name="day" value="'.$day.'">';
|
print '<input class="flat" type="text" size="1" maxlength="2" name="day" value="'.$day.'">';
|
||||||
}
|
}
|
||||||
@ -217,6 +230,7 @@ if ($resql) {
|
|||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "bc.ref", "", $param, "", $sortfield, $sortorder);
|
print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "bc.ref", "", $param, "", $sortfield, $sortorder);
|
||||||
|
print_liste_field_titre("Type", $_SERVER["PHP_SELF"], "bc.type", "", $param, "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("DateCreation", $_SERVER["PHP_SELF"], "bc.date_bordereau", "", $param, 'align="center"', $sortfield, $sortorder);
|
print_liste_field_titre("DateCreation", $_SERVER["PHP_SELF"], "bc.date_bordereau", "", $param, 'align="center"', $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Account", $_SERVER["PHP_SELF"], "ba.label", "", $param, "", $sortfield, $sortorder);
|
print_liste_field_titre("Account", $_SERVER["PHP_SELF"], "ba.label", "", $param, "", $sortfield, $sortorder);
|
||||||
print_liste_field_titre("NbOfCheques", $_SERVER["PHP_SELF"], "bc.nbcheque", "", $param, 'class="right"', $sortfield, $sortorder);
|
print_liste_field_titre("NbOfCheques", $_SERVER["PHP_SELF"], "bc.nbcheque", "", $param, 'class="right"', $sortfield, $sortorder);
|
||||||
@ -236,6 +250,7 @@ if ($resql) {
|
|||||||
$checkdepositstatic->nbcheque = $objp->nbcheque;
|
$checkdepositstatic->nbcheque = $objp->nbcheque;
|
||||||
$checkdepositstatic->amount = $objp->amount;
|
$checkdepositstatic->amount = $objp->amount;
|
||||||
$checkdepositstatic->date_bordereau = $objp->date_bordereau;
|
$checkdepositstatic->date_bordereau = $objp->date_bordereau;
|
||||||
|
$checkdepositstatic->type = $objp->type;
|
||||||
|
|
||||||
$account = new Account($db);
|
$account = new Account($db);
|
||||||
$account->fetch($objp->bid);
|
$account->fetch($objp->bid);
|
||||||
@ -257,12 +272,15 @@ if ($resql) {
|
|||||||
|
|
||||||
// Num ref cheque
|
// Num ref cheque
|
||||||
print '<td>';
|
print '<td>';
|
||||||
|
|
||||||
print $checkdepositstatic->getNomUrl(1);
|
print $checkdepositstatic->getNomUrl(1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
|
// Type
|
||||||
|
$labelpaymentmode = ($langs->transnoentitiesnoconv("PaymentType".$checkdepositstatic->type) != "PaymentType".$checkdepositstatic->type ? $langs->transnoentitiesnoconv("PaymentType".$checkdepositstatic->type) : $checkdepositstatic->type);
|
||||||
|
print '<td>'.dol_escape_htmltag($labelpaymentmode).'</td>';
|
||||||
|
|
||||||
// Date
|
// Date
|
||||||
print '<td class="center">'.dol_print_date($db->jdate($objp->date_bordereau), 'day').'</td>'; // TODO Use date hour
|
print '<td class="center">'.dol_print_date($db->jdate($objp->date_bordereau), 'dayhour', 'tzuser').'</td>';
|
||||||
|
|
||||||
// Bank
|
// Bank
|
||||||
print '<td>';
|
print '<td>';
|
||||||
|
|||||||
@ -426,6 +426,7 @@ class BonPrelevement extends CommonObject
|
|||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
/**
|
/**
|
||||||
* Set direct debit or credit transfer order to "paid" status.
|
* Set direct debit or credit transfer order to "paid" status.
|
||||||
|
* Then create the payment for each invoice of the prelemevement_bon.
|
||||||
*
|
*
|
||||||
* @param User $user Id of user
|
* @param User $user Id of user
|
||||||
* @param int $date date of action
|
* @param int $date date of action
|
||||||
@ -1317,6 +1318,9 @@ class BonPrelevement extends CommonObject
|
|||||||
$label = img_picto('', $this->picto).' <u>'.$langs->trans($labeltoshow).'</u> '.$this->getLibStatut(5);
|
$label = img_picto('', $this->picto).' <u>'.$langs->trans($labeltoshow).'</u> '.$this->getLibStatut(5);
|
||||||
$label .= '<br>';
|
$label .= '<br>';
|
||||||
$label .= '<b>'.$langs->trans('Ref').':</b> '.$this->ref;
|
$label .= '<b>'.$langs->trans('Ref').':</b> '.$this->ref;
|
||||||
|
if (isset($this->amount)) {
|
||||||
|
$label .= '<br><b>'.$langs->trans("Amount").":</b> ".price($this->amount);
|
||||||
|
}
|
||||||
if (isset($this->date_trans)) {
|
if (isset($this->date_trans)) {
|
||||||
$label .= '<br><b>'.$langs->trans("TransData").":</b> ".dol_print_date($this->date_trans, 'dayhour', 'tzuserrel');
|
$label .= '<br><b>'.$langs->trans("TransData").":</b> ".dol_print_date($this->date_trans, 'dayhour', 'tzuserrel');
|
||||||
}
|
}
|
||||||
@ -2524,6 +2528,8 @@ class BonPrelevement extends CommonObject
|
|||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -2531,6 +2537,7 @@ class BonPrelevement extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
|
|
||||||
if (property_exists($this, 'date_echeance')) {
|
if (property_exists($this, 'date_echeance')) {
|
||||||
$return .= '<br><span class="opacitymedium">'.$langs->trans("Date").'</span> : <span class="info-box-label">'.dol_print_date($this->db->jdate($this->date_echeance), 'day').'</span>';
|
$return .= '<br><span class="opacitymedium">'.$langs->trans("Date").'</span> : <span class="info-box-label">'.dol_print_date($this->db->jdate($this->date_echeance), 'day').'</span>';
|
||||||
|
|||||||
@ -761,6 +761,8 @@ class ChargeSociales extends CommonObject
|
|||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -768,6 +770,7 @@ class ChargeSociales extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref valignmiddle">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(0) : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref valignmiddle">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(0) : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'label')) {
|
if (property_exists($this, 'label')) {
|
||||||
$return .= ' <div class="inline-block opacitymedium valignmiddle tdoverflowmax100">'.$this->label.'</div>';
|
$return .= ' <div class="inline-block opacitymedium valignmiddle tdoverflowmax100">'.$this->label.'</div>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -917,6 +917,9 @@ class Tva extends CommonObject
|
|||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -925,6 +928,7 @@ class Tva extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'amount')) {
|
if (property_exists($this, 'amount')) {
|
||||||
$return .= ' | <span class="opacitymedium">'.$langs->trans("Amount").'</span> : <span class="info-box-label amount">'.price($this->amount).'</span>';
|
$return .= ' | <span class="opacitymedium">'.$langs->trans("Amount").'</span> : <span class="info-box-label amount">'.price($this->amount).'</span>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1868,7 +1868,7 @@ class Contact extends CommonObject
|
|||||||
* Updates all roles (default contact for companies) according to values inside the ->roles array.
|
* Updates all roles (default contact for companies) according to values inside the ->roles array.
|
||||||
* This is called by update of contact.
|
* This is called by update of contact.
|
||||||
*
|
*
|
||||||
* @return float|int
|
* @return int
|
||||||
* @see fetchRoles()
|
* @see fetchRoles()
|
||||||
*/
|
*/
|
||||||
public function updateRoles()
|
public function updateRoles()
|
||||||
@ -1878,7 +1878,7 @@ class Contact extends CommonObject
|
|||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
if (!isset($this->roles)) {
|
if (!isset($this->roles)) {
|
||||||
return; // Avoid to loose roles when property not set
|
return 0; // Avoid to loose roles when property not set
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
@ -2177,6 +2177,9 @@ class Contact extends CommonObject
|
|||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -2189,6 +2192,7 @@ class Contact extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<div class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</div>';
|
$return .= '<div class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</div>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
|
|
||||||
if (property_exists($this, 'thirdparty') && is_object($this->thirdparty)) {
|
if (property_exists($this, 'thirdparty') && is_object($this->thirdparty)) {
|
||||||
$return .= '<div class="info-box-ref opacitymedium tdoverflowmax150">'.$this->thirdparty->getNomUrl(1).'</div>';
|
$return .= '<div class="info-box-ref opacitymedium tdoverflowmax150">'.$this->thirdparty->getNomUrl(1).'</div>';
|
||||||
|
|||||||
@ -64,7 +64,7 @@ if ($user->socid) {
|
|||||||
}
|
}
|
||||||
$result = restrictedArea($user, 'contact', $contactid, '');
|
$result = restrictedArea($user, 'contact', $contactid, '');
|
||||||
|
|
||||||
$sall = trim((GETPOST('search_all', 'alphanohtml') != '') ?GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml'));
|
$search_all = trim((GETPOST('search_all', 'alphanohtml') != '') ?GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml'));
|
||||||
$search_cti = preg_replace('/^0+/', '', preg_replace('/[^0-9]/', '', GETPOST('search_cti', 'alphanohtml'))); // Phone number without any special chars
|
$search_cti = preg_replace('/^0+/', '', preg_replace('/[^0-9]/', '', GETPOST('search_cti', 'alphanohtml'))); // Phone number without any special chars
|
||||||
$search_phone = GETPOST("search_phone", 'alpha');
|
$search_phone = GETPOST("search_phone", 'alpha');
|
||||||
|
|
||||||
@ -297,7 +297,7 @@ if (empty($reshook)) {
|
|||||||
|
|
||||||
// Purge search criteria
|
// Purge search criteria
|
||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers
|
||||||
$sall = "";
|
$search_all = "";
|
||||||
$search_id = '';
|
$search_id = '';
|
||||||
$search_firstlast_only = "";
|
$search_firstlast_only = "";
|
||||||
$search_lastname = "";
|
$search_lastname = "";
|
||||||
@ -430,7 +430,6 @@ $sql = preg_replace('/,\s*$/', '', $sql);
|
|||||||
|
|
||||||
$sqlfields = $sql; // $sql fields to remove for count total
|
$sqlfields = $sql; // $sql fields to remove for count total
|
||||||
|
|
||||||
// SQL Table Aliase
|
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."socpeople as p";
|
$sql .= " FROM ".MAIN_DB_PREFIX."socpeople as p";
|
||||||
if (isset($extrafields->attributes[$object->table_element]['label']) && is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) {
|
if (isset($extrafields->attributes[$object->table_element]['label']) && is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) {
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (p.rowid = ef.fk_object)";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (p.rowid = ef.fk_object)";
|
||||||
@ -569,8 +568,8 @@ if (!empty($searchCategorySupplierList)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($sall) {
|
if ($search_all) {
|
||||||
$sql .= natural_search(array_keys($fieldstosearchall), $sall);
|
$sql .= natural_search(array_keys($fieldstosearchall), $search_all);
|
||||||
}
|
}
|
||||||
if (strlen($search_phone)) {
|
if (strlen($search_phone)) {
|
||||||
$sql .= natural_search(array('p.phone', 'p.phone_perso', 'p.phone_mobile'), $search_phone);
|
$sql .= natural_search(array('p.phone', 'p.phone_perso', 'p.phone_mobile'), $search_phone);
|
||||||
@ -725,7 +724,7 @@ if (!$resql) {
|
|||||||
$num = $db->num_rows($resql);
|
$num = $db->num_rows($resql);
|
||||||
|
|
||||||
// Direct jump if only one record found
|
// Direct jump if only one record found
|
||||||
if ($num == 1 && !empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && ($sall != '' || $search_cti != '') && !$page) {
|
if ($num == 1 && !empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && ($search_all != '' || $search_cti != '') && !$page) {
|
||||||
$obj = $db->fetch_object($resql);
|
$obj = $db->fetch_object($resql);
|
||||||
$id = $obj->rowid;
|
$id = $obj->rowid;
|
||||||
header("Location: ".DOL_URL_ROOT.'/contact/card.php?id='.$id);
|
header("Location: ".DOL_URL_ROOT.'/contact/card.php?id='.$id);
|
||||||
@ -750,7 +749,7 @@ if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
|
|||||||
if ($limit > 0 && $limit != $conf->liste_limit) {
|
if ($limit > 0 && $limit != $conf->liste_limit) {
|
||||||
$param .= '&limit='.((int) $limit);
|
$param .= '&limit='.((int) $limit);
|
||||||
}
|
}
|
||||||
$param .= '&begin='.urlencode($begin).'&userid='.urlencode($userid).'&contactname='.urlencode($sall);
|
$param .= '&begin='.urlencode($begin).'&userid='.urlencode($userid).'&contactname='.urlencode($search_all);
|
||||||
$param .= '&type='.urlencode($type).'&view='.urlencode($view);
|
$param .= '&type='.urlencode($type).'&view='.urlencode($view);
|
||||||
if (!empty($search_categ) && $search_categ != '-1') {
|
if (!empty($search_categ) && $search_categ != '-1') {
|
||||||
$param .= '&search_categ='.urlencode($search_categ);
|
$param .= '&search_categ='.urlencode($search_categ);
|
||||||
@ -761,8 +760,8 @@ if (!empty($search_categ_thirdparty) && $search_categ_thirdparty != '-1') {
|
|||||||
if (!empty($search_categ_supplier) && $search_categ_supplier != '-1') {
|
if (!empty($search_categ_supplier) && $search_categ_supplier != '-1') {
|
||||||
$param .= '&search_categ_supplier='.urlencode($search_categ_supplier);
|
$param .= '&search_categ_supplier='.urlencode($search_categ_supplier);
|
||||||
}
|
}
|
||||||
if ($sall != '') {
|
if ($search_all != '') {
|
||||||
$param .= '&sall='.urlencode($sall);
|
$param .= '&search_all='.urlencode($search_all);
|
||||||
}
|
}
|
||||||
if ($search_id > 0) {
|
if ($search_id > 0) {
|
||||||
$param .= "&search_id=".urlencode($search_id);
|
$param .= "&search_id=".urlencode($search_id);
|
||||||
@ -886,14 +885,14 @@ $objecttmp = new Contact($db);
|
|||||||
$trackid = 'ctc'.$object->id;
|
$trackid = 'ctc'.$object->id;
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php';
|
||||||
|
|
||||||
if ($sall) {
|
if ($search_all) {
|
||||||
$setupstring = '';
|
$setupstring = '';
|
||||||
foreach ($fieldstosearchall as $key => $val) {
|
foreach ($fieldstosearchall as $key => $val) {
|
||||||
$fieldstosearchall[$key] = $langs->trans($val);
|
$fieldstosearchall[$key] = $langs->trans($val);
|
||||||
$setupstring .= $key."=".$val.";";
|
$setupstring .= $key."=".$val.";";
|
||||||
}
|
}
|
||||||
print '<!-- Search done like if CONTACT_QUICKSEARCH_ON_FIELDS = '.$setupstring.' -->'."\n";
|
print '<!-- Search done like if CONTACT_QUICKSEARCH_ON_FIELDS = '.$setupstring.' -->'."\n";
|
||||||
print '<div class="divsearchfieldfilter">'.$langs->trans("FilterOnInto", $sall).join(', ', $fieldstosearchall).'</div>';
|
print '<div class="divsearchfieldfilter">'.$langs->trans("FilterOnInto", $search_all).join(', ', $fieldstosearchall).'</div>';
|
||||||
}
|
}
|
||||||
if ($search_firstlast_only) {
|
if ($search_firstlast_only) {
|
||||||
print '<div class="divsearchfieldfilter">'.$langs->trans("FilterOnInto", $search_firstlast_only).$langs->trans("Lastname").", ".$langs->trans("Firstname").'</div>';
|
print '<div class="divsearchfieldfilter">'.$langs->trans("FilterOnInto", $search_firstlast_only).$langs->trans("Lastname").", ".$langs->trans("Firstname").'</div>';
|
||||||
@ -955,7 +954,7 @@ print '<table class="tagtable nobottomiftotal liste'.($moreforfilter ? " listwit
|
|||||||
print '<tr class="liste_titre_filter">';
|
print '<tr class="liste_titre_filter">';
|
||||||
// Action column
|
// Action column
|
||||||
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print '<td class="liste_titre maxwidthsearch center">';
|
print '<td class="liste_titre center maxwidthsearch">';
|
||||||
$searchpicto = $form->showFilterButtons('left');
|
$searchpicto = $form->showFilterButtons('left');
|
||||||
print $searchpicto;
|
print $searchpicto;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
@ -1234,28 +1233,28 @@ if (!empty($arrayfields['p.fk_stcommcontact']['checked'])) {
|
|||||||
// Extra fields
|
// Extra fields
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php';
|
||||||
// Hook fields
|
// Hook fields
|
||||||
$parameters = array(
|
$parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder, 'totalarray'=>&$totalarray);
|
||||||
'arrayfields'=>$arrayfields,
|
|
||||||
'param'=>$param,
|
|
||||||
'sortfield'=>$sortfield,
|
|
||||||
'sortorder'=>$sortorder,
|
|
||||||
);
|
|
||||||
$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
||||||
print $hookmanager->resPrint;
|
print $hookmanager->resPrint;
|
||||||
if (!empty($arrayfields['p.datec']['checked'])) {
|
if (!empty($arrayfields['p.datec']['checked'])) {
|
||||||
print_liste_field_titre($arrayfields['p.datec']['label'], $_SERVER["PHP_SELF"], "p.datec", "", $param, '', $sortfield, $sortorder, 'center nowrap ');
|
print_liste_field_titre($arrayfields['p.datec']['label'], $_SERVER["PHP_SELF"], "p.datec", "", $param, '', $sortfield, $sortorder, 'center nowrap ');
|
||||||
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
if (!empty($arrayfields['p.tms']['checked'])) {
|
if (!empty($arrayfields['p.tms']['checked'])) {
|
||||||
print_liste_field_titre($arrayfields['p.tms']['label'], $_SERVER["PHP_SELF"], "p.tms", "", $param, '', $sortfield, $sortorder, 'center nowrap ');
|
print_liste_field_titre($arrayfields['p.tms']['label'], $_SERVER["PHP_SELF"], "p.tms", "", $param, '', $sortfield, $sortorder, 'center nowrap ');
|
||||||
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
if (!empty($arrayfields['p.statut']['checked'])) {
|
if (!empty($arrayfields['p.statut']['checked'])) {
|
||||||
print_liste_field_titre($arrayfields['p.statut']['label'], $_SERVER["PHP_SELF"], "p.statut", "", $param, '', $sortfield, $sortorder, 'center ');
|
print_liste_field_titre($arrayfields['p.statut']['label'], $_SERVER["PHP_SELF"], "p.statut", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
if (!empty($arrayfields['p.import_key']['checked'])) {
|
if (!empty($arrayfields['p.import_key']['checked'])) {
|
||||||
print_liste_field_titre($arrayfields['p.import_key']['label'], $_SERVER["PHP_SELF"], "p.import_key", "", $param, '', $sortfield, $sortorder, 'center ');
|
print_liste_field_titre($arrayfields['p.import_key']['label'], $_SERVER["PHP_SELF"], "p.import_key", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) {
|
if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) {
|
||||||
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ');
|
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ');
|
||||||
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
@ -1291,7 +1290,7 @@ while ($i < $imaxinloop) {
|
|||||||
$contactstatic->country_code = $obj->country_code;
|
$contactstatic->country_code = $obj->country_code;
|
||||||
$contactstatic->photo = $obj->photo;
|
$contactstatic->photo = $obj->photo;
|
||||||
$contactstatic->import_key = $obj->import_key;
|
$contactstatic->import_key = $obj->import_key;
|
||||||
|
$contactstatic->photo = $obj->photo;
|
||||||
$contactstatic->fk_prospectlevel = $obj->fk_prospectlevel;
|
$contactstatic->fk_prospectlevel = $obj->fk_prospectlevel;
|
||||||
|
|
||||||
if ($mode == 'kanban') {
|
if ($mode == 'kanban') {
|
||||||
@ -1299,7 +1298,13 @@ while ($i < $imaxinloop) {
|
|||||||
print '<tr><td colspan="'.$savnbfield.'">';
|
print '<tr><td colspan="'.$savnbfield.'">';
|
||||||
print '<div class="box-flex-container kanban">';
|
print '<div class="box-flex-container kanban">';
|
||||||
}
|
}
|
||||||
$contactstatic->photo = $obj->photo;
|
// Output Kanban
|
||||||
|
if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
|
||||||
|
$selected = 0;
|
||||||
|
if (in_array($object->id, $arrayofselected)) {
|
||||||
|
$selected = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
if ($obj->socid > 0) {
|
if ($obj->socid > 0) {
|
||||||
$contactstatic->fetch_thirdparty($obj->socid);
|
$contactstatic->fetch_thirdparty($obj->socid);
|
||||||
}
|
}
|
||||||
@ -1549,7 +1554,7 @@ while ($i < $imaxinloop) {
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
|
||||||
|
|
||||||
// Fields from hook
|
// Fields from hook
|
||||||
$parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray);
|
$parameters = array('arrayfields'=>$arrayfields, 'object'=>$object, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray);
|
||||||
$reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
||||||
print $hookmanager->resPrint;
|
print $hookmanager->resPrint;
|
||||||
// Date creation
|
// Date creation
|
||||||
@ -1606,7 +1611,7 @@ while ($i < $imaxinloop) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
print "</tr>\n";
|
print '</tr>'."\n";
|
||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1535,12 +1535,12 @@ if ($action == 'create') {
|
|||||||
if ($nbofservices > 1 && $conf->browser->layout != 'phone' && !empty($user->rights->contrat->creer)) {
|
if ($nbofservices > 1 && $conf->browser->layout != 'phone' && !empty($user->rights->contrat->creer)) {
|
||||||
print '<td width="30" class="linecolmove tdlineupdown center">';
|
print '<td width="30" class="linecolmove tdlineupdown center">';
|
||||||
if ($cursorline > 1) {
|
if ($cursorline > 1) {
|
||||||
print '<a class="lineupdown" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=up&token='.newToken().'&rowid='.$objp->rowid.'">';
|
print '<a class="lineupdown reposition" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=up&token='.newToken().'&rowid='.$objp->rowid.'">';
|
||||||
echo img_up('default', 0, 'imgupforline');
|
echo img_up('default', 0, 'imgupforline');
|
||||||
print '</a>';
|
print '</a>';
|
||||||
}
|
}
|
||||||
if ($cursorline < $nbofservices) {
|
if ($cursorline < $nbofservices) {
|
||||||
print '<a class="lineupdown" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=down&token='.newToken().'&rowid='.$objp->rowid.'">';
|
print '<a class="lineupdown reposition" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=down&token='.newToken().'&rowid='.$objp->rowid.'">';
|
||||||
echo img_down('default', 0, 'imgdownforline');
|
echo img_down('default', 0, 'imgdownforline');
|
||||||
print '</a>';
|
print '</a>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -758,7 +758,7 @@ class Contrat extends CommonObject
|
|||||||
*
|
*
|
||||||
* @param int $only_services 0=Default, 1=Force only services (depending on setup, we may also have physical products in a contract)
|
* @param int $only_services 0=Default, 1=Force only services (depending on setup, we may also have physical products in a contract)
|
||||||
* @param int $loadalsotranslation 0=Default, 1=Load also translations of product descriptions
|
* @param int $loadalsotranslation 0=Default, 1=Load also translations of product descriptions
|
||||||
* @return ContratLigne[] Return array of contract lines
|
* @return array|int Return array of contract lines
|
||||||
*/
|
*/
|
||||||
public function fetch_lines($only_services = 0, $loadalsotranslation = 0)
|
public function fetch_lines($only_services = 0, $loadalsotranslation = 0)
|
||||||
{
|
{
|
||||||
@ -2829,6 +2829,9 @@ class Contrat extends CommonObject
|
|||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -2837,6 +2840,7 @@ class Contrat extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'societe')) {
|
if (property_exists($this, 'societe')) {
|
||||||
$return .= '<br><span class="info-box-label ">'.$this->societe.'</span>';
|
$return .= '<br><span class="info-box-label ">'.$this->societe.'</span>';
|
||||||
}
|
}
|
||||||
|
|||||||
69
htdocs/core/ajax/ajaxinvoiceline.php
Normal file
69
htdocs/core/ajax/ajaxinvoiceline.php
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2022 Florian HENRY <florian.henry@scopen.fr>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file htdocs/core/ajax/ajaxinvoiceline.php
|
||||||
|
* \brief File to load contacts combobox
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!defined('NOTOKENRENEWAL')) {
|
||||||
|
define('NOTOKENRENEWAL', '1'); // Disables token renewal
|
||||||
|
}
|
||||||
|
if (!defined('NOREQUIREMENU')) {
|
||||||
|
define('NOREQUIREMENU', '1');
|
||||||
|
}
|
||||||
|
if (!defined('NOREQUIREAJAX')) {
|
||||||
|
define('NOREQUIREAJAX', '1');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load Dolibarr environment
|
||||||
|
require '../../main.inc.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
|
||||||
|
|
||||||
|
$invoice_id = GETPOST('id', 'int'); // id of thirdparty
|
||||||
|
$action = GETPOST('action', 'aZ09');
|
||||||
|
$htmlname = GETPOST('htmlname', 'alpha');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Security check
|
||||||
|
restrictedArea($user, 'facture', $invoice_id, '', '', 'fk_soc', 'rowid');
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* View
|
||||||
|
*/
|
||||||
|
|
||||||
|
top_httphead();
|
||||||
|
|
||||||
|
//print '<!-- Ajax page called with url '.dol_escape_htmltag($_SERVER["PHP_SELF"]).'?'.dol_escape_htmltag($_SERVER["QUERY_STRING"]).' -->'."\n";
|
||||||
|
|
||||||
|
// Load original field value
|
||||||
|
if (!empty($invoice_id) && !empty($action) && !empty($htmlname)) {
|
||||||
|
$formProject = new FormProjets($db);
|
||||||
|
|
||||||
|
$return = array();
|
||||||
|
if (empty($showempty)) {
|
||||||
|
$showempty = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
$return['value'] = $formProject->selectInvoiceAndLine($invoice_id, 0, 'invoiceid', 'invoicelineid', 'maxwidth500', array(), 1);
|
||||||
|
//$return['num'] = $form->num;
|
||||||
|
//$return['error'] = $form->error;
|
||||||
|
|
||||||
|
echo json_encode($return);
|
||||||
|
}
|
||||||
@ -432,7 +432,7 @@ class ModeleBoxes // Can't be abtract as it is instantiated to build "empty" box
|
|||||||
while (($file = readdir($handle)) !== false) {
|
while (($file = readdir($handle)) !== false) {
|
||||||
$reg = array();
|
$reg = array();
|
||||||
if (is_readable($newdir.'/'.$file) && preg_match('/^(.+)\.php/', $file, $reg)) {
|
if (is_readable($newdir.'/'.$file) && preg_match('/^(.+)\.php/', $file, $reg)) {
|
||||||
if (preg_match('/\.back$/', $file)) {
|
if (preg_match('/\.back$/', $file) || preg_match('/^(.+)\.disabled\.php/', $file)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -889,7 +889,7 @@ abstract class CommonInvoice extends CommonObject
|
|||||||
{
|
{
|
||||||
global $conf, $mysoc, $user, $langs;
|
global $conf, $mysoc, $user, $langs;
|
||||||
|
|
||||||
if ($type != 'bank-transfer' && empty($conf->global->STRIPE_SEPA_DIRECT_DEBIT)) {
|
if ($type != 'bank-transfer' && $type != 'credit-transfer' && empty($conf->global->STRIPE_SEPA_DIRECT_DEBIT)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if ($type != 'direct-debit' && empty($conf->global->STRIPE_SEPA_CREDIT_TRANSFER)) {
|
if ($type != 'direct-debit' && empty($conf->global->STRIPE_SEPA_CREDIT_TRANSFER)) {
|
||||||
@ -916,10 +916,10 @@ abstract class CommonInvoice extends CommonObject
|
|||||||
$sql = "SELECT rowid, date_demande, amount, fk_facture, fk_facture_fourn, fk_prelevement_bons";
|
$sql = "SELECT rowid, date_demande, amount, fk_facture, fk_facture_fourn, fk_prelevement_bons";
|
||||||
$sql .= " FROM ".$this->db->prefix()."prelevement_demande";
|
$sql .= " FROM ".$this->db->prefix()."prelevement_demande";
|
||||||
$sql .= " WHERE rowid = ".((int) $did);
|
$sql .= " WHERE rowid = ".((int) $did);
|
||||||
if ($type != 'direct-debit') {
|
if ($type != 'bank-transfer' && $type != 'credit-transfer') {
|
||||||
$sql .= " AND fk_facture = ".((int) $this->id); // Add a protection to not pay another invoice than current one
|
$sql .= " AND fk_facture = ".((int) $this->id); // Add a protection to not pay another invoice than current one
|
||||||
}
|
}
|
||||||
if ($type != 'credit-transfer') {
|
if ($type != 'direct-debit') {
|
||||||
$sql .= " AND fk_facture_fourn = ".((int) $this->id); // Add a protection to not pay another invoice than current one
|
$sql .= " AND fk_facture_fourn = ".((int) $this->id); // Add a protection to not pay another invoice than current one
|
||||||
}
|
}
|
||||||
$sql .= " AND traite = 0"; // Add a protection to not process twice
|
$sql .= " AND traite = 0"; // Add a protection to not process twice
|
||||||
|
|||||||
@ -44,6 +44,8 @@ abstract class CommonOrder extends CommonObject
|
|||||||
{
|
{
|
||||||
global $langs, $conf;
|
global $langs, $conf;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<div class="info-box-icon bg-infobox-action">';
|
$return .= '<div class="info-box-icon bg-infobox-action">';
|
||||||
@ -51,6 +53,7 @@ abstract class CommonOrder extends CommonObject
|
|||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
|
|
||||||
if (property_exists($this, 'thirdparty') && is_object($this->thirdparty)) {
|
if (property_exists($this, 'thirdparty') && is_object($this->thirdparty)) {
|
||||||
$return .= '<br><div class="info-box-ref opacitymedium tdoverflowmax150">'.$this->thirdparty->getNomUrl(1).'</div>';
|
$return .= '<br><div class="info-box-ref opacitymedium tdoverflowmax150">'.$this->thirdparty->getNomUrl(1).'</div>';
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -46,9 +46,9 @@ class FormProjets
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
* @param DoliDB $db Database handler
|
* @param DoliDB $db Database handler
|
||||||
*/
|
*/
|
||||||
public function __construct($db)
|
public function __construct($db)
|
||||||
{
|
{
|
||||||
@ -56,26 +56,27 @@ class FormProjets
|
|||||||
}
|
}
|
||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Output a combo list with projects qualified for a third party / user
|
* Output a combo list with projects qualified for a third party / user
|
||||||
*
|
*
|
||||||
* @param int $socid Id third party (-1=all, 0=only projects not linked to a third party, id=projects not linked or linked to third party id)
|
* @param int $socid Id third party (-1=all, 0=only projects not linked to a third party, id=projects not linked or linked to third party id)
|
||||||
* @param string|Project $selected Id of preselected project or Project (or ''). Note: If you know the ref, you can also provide it into $selected_input_value to save one request in some cases.
|
* @param string|Project $selected Id of preselected project or Project (or ''). Note: If you know the ref, you can also provide it into $selected_input_value to save one request in some cases.
|
||||||
* @param string $htmlname Name of HTML field
|
* @param string $htmlname Name of HTML field
|
||||||
* @param int $maxlength Maximum length of label
|
* @param int $maxlength Maximum length of label
|
||||||
* @param int $option_only Return only html options lines without the select tag
|
* @param int $option_only Return only html options lines without the select tag
|
||||||
* @param int $show_empty Add an empty line
|
* @param int $show_empty Add an empty line
|
||||||
* @param int $discard_closed Discard closed projects (0=Keep, 1=hide completely, 2=Disable). Use a negative value to not show the "discarded" tooltip.
|
* @param int $discard_closed Discard closed projects (0=Keep, 1=hide completely, 2=Disable). Use a negative value to not show the "discarded" tooltip.
|
||||||
* @param int $forcefocus Force focus on field (works with javascript only)
|
* @param int $forcefocus Force focus on field (works with javascript only)
|
||||||
* @param int $disabled Disabled
|
* @param int $disabled Disabled
|
||||||
* @param int $mode 0 for HTML mode and 1 for JSON mode
|
* @param int $mode 0 for HTML mode and 1 for JSON mode
|
||||||
* @param string $filterkey Key to filter on ref or title
|
* @param string $filterkey Key to filter on ref or title
|
||||||
* @param int $nooutput No print output. Return it only.
|
* @param int $nooutput No print output. Return it only.
|
||||||
* @param int $forceaddid Force to add project id in list, event if not qualified
|
* @param int $forceaddid Force to add project id in list, event if not qualified
|
||||||
* @param string $morecss More css
|
* @param string $morecss More css
|
||||||
* @param int $htmlid Html id to use instead of htmlname
|
* @param int $htmlid Html id to use instead of htmlname
|
||||||
* @param string $morefilter More filters (Must be a sql sanitized string)
|
* @param string $morefilter More filters (Must be a sql sanitized string)
|
||||||
* @return string Return html content
|
* @return string Return html content
|
||||||
*/
|
*/
|
||||||
public function select_projects($socid = -1, $selected = '', $htmlname = 'projectid', $maxlength = 16, $option_only = 0, $show_empty = 1, $discard_closed = 0, $forcefocus = 0, $disabled = 0, $mode = 0, $filterkey = '', $nooutput = 0, $forceaddid = 0, $morecss = '', $htmlid = '', $morefilter = '')
|
public function select_projects($socid = -1, $selected = '', $htmlname = 'projectid', $maxlength = 16, $option_only = 0, $show_empty = 1, $discard_closed = 0, $forcefocus = 0, $disabled = 0, $mode = 0, $filterkey = '', $nooutput = 0, $forceaddid = 0, $morecss = '', $htmlid = '', $morefilter = '')
|
||||||
{
|
{
|
||||||
@ -94,18 +95,18 @@ class FormProjets
|
|||||||
$placeholder = '';
|
$placeholder = '';
|
||||||
|
|
||||||
if ($selected && empty($selected_input_value)) {
|
if ($selected && empty($selected_input_value)) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php';
|
||||||
$project = new Project($this->db);
|
$project = new Project($this->db);
|
||||||
$project->fetch($selected);
|
$project->fetch($selected);
|
||||||
$selected_input_value = $project->ref;
|
$selected_input_value = $project->ref;
|
||||||
}
|
}
|
||||||
$urloption = 'socid='.((int) $socid).'&htmlname='.urlencode($htmlname).'&discardclosed='.((int) $discard_closed);
|
$urloption = 'socid=' . ((int) $socid) . '&htmlname=' . urlencode($htmlname) . '&discardclosed=' . ((int) $discard_closed);
|
||||||
if ($morefilter == 'usage_organize_event=1') {
|
if ($morefilter == 'usage_organize_event=1') {
|
||||||
$urloption .= '&usage_organize_event=1';
|
$urloption .= '&usage_organize_event=1';
|
||||||
}
|
}
|
||||||
$out .= '<input type="text" class="minwidth200'.($morecss ? ' '.$morecss : '').'" name="search_'.$htmlname.'" id="search_'.$htmlname.'" value="'.$selected_input_value.'"'.$placeholder.' />';
|
$out .= '<input type="text" class="minwidth200' . ($morecss ? ' ' . $morecss : '') . '" name="search_' . $htmlname . '" id="search_' . $htmlname . '" value="' . $selected_input_value . '"' . $placeholder . ' />';
|
||||||
|
|
||||||
$out .= ajax_autocompleter($selected, $htmlname, DOL_URL_ROOT.'/projet/ajax/projects.php', $urloption, $conf->global->PROJECT_USE_SEARCH_TO_SELECT, 0, array());
|
$out .= ajax_autocompleter($selected, $htmlname, DOL_URL_ROOT . '/projet/ajax/projects.php', $urloption, $conf->global->PROJECT_USE_SEARCH_TO_SELECT, 0, array());
|
||||||
} else {
|
} else {
|
||||||
$out .= $this->select_projects_list($socid, $selected, $htmlname, $maxlength, $option_only, $show_empty, abs($discard_closed), $forcefocus, $disabled, 0, $filterkey, 1, $forceaddid, $htmlid, $morecss, $morefilter);
|
$out .= $this->select_projects_list($socid, $selected, $htmlname, $maxlength, $option_only, $show_empty, abs($discard_closed), $forcefocus, $disabled, 0, $filterkey, 1, $forceaddid, $htmlid, $morecss, $morefilter);
|
||||||
}
|
}
|
||||||
@ -124,33 +125,34 @@ class FormProjets
|
|||||||
}
|
}
|
||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an array with projects qualified for a third party
|
* Returns an array with projects qualified for a third party
|
||||||
*
|
*
|
||||||
* @param int $socid Id third party (-1=all, 0=only projects not linked to a third party, id=projects not linked or linked to third party id)
|
* @param int $socid Id third party (-1=all, 0=only projects not linked to a third party, id=projects not linked or linked to third party id)
|
||||||
* @param int $selected Id project preselected
|
* @param int $selected Id project preselected
|
||||||
* @param string $htmlname Nom de la zone html
|
* @param string $htmlname Nom de la zone html
|
||||||
* @param int $maxlength Maximum length of label
|
* @param int $maxlength Maximum length of label
|
||||||
* @param int $option_only Return only html options lines without the select tag
|
* @param int $option_only Return only html options lines without the select tag
|
||||||
* @param int $show_empty Add an empty line
|
* @param int $show_empty Add an empty line
|
||||||
* @param int $discard_closed Discard closed projects (0=Keep,1=hide completely,2=Disable)
|
* @param int $discard_closed Discard closed projects (0=Keep,1=hide completely,2=Disable)
|
||||||
* @param int $forcefocus Force focus on field (works with javascript only)
|
* @param int $forcefocus Force focus on field (works with javascript only)
|
||||||
* @param int $disabled Disabled
|
* @param int $disabled Disabled
|
||||||
* @param int $mode 0 for HTML mode and 1 for array return (to be used by json_encode for example)
|
* @param int $mode 0 for HTML mode and 1 for array return (to be used by json_encode for example)
|
||||||
* @param string $filterkey Key to filter on title or ref
|
* @param string $filterkey Key to filter on title or ref
|
||||||
* @param int $nooutput No print output. Return it only.
|
* @param int $nooutput No print output. Return it only.
|
||||||
* @param int $forceaddid Force to add project id in list, event if not qualified
|
* @param int $forceaddid Force to add project id in list, event if not qualified
|
||||||
* @param int $htmlid Html id to use instead of htmlname
|
* @param int $htmlid Html id to use instead of htmlname
|
||||||
* @param string $morecss More CSS
|
* @param string $morecss More CSS
|
||||||
* @param string $morefilter More filters (Must be a sql sanitized string)
|
* @param string $morefilter More filters (Must be a sql sanitized string)
|
||||||
* @return int Nb of project if OK, <0 if KO
|
* @return int Nb of project if OK, <0 if KO
|
||||||
*/
|
*/
|
||||||
public function select_projects_list($socid = -1, $selected = '', $htmlname = 'projectid', $maxlength = 24, $option_only = 0, $show_empty = 1, $discard_closed = 0, $forcefocus = 0, $disabled = 0, $mode = 0, $filterkey = '', $nooutput = 0, $forceaddid = 0, $htmlid = '', $morecss = 'maxwidth500', $morefilter = '')
|
public function select_projects_list($socid = -1, $selected = '', $htmlname = 'projectid', $maxlength = 24, $option_only = 0, $show_empty = 1, $discard_closed = 0, $forcefocus = 0, $disabled = 0, $mode = 0, $filterkey = '', $nooutput = 0, $forceaddid = 0, $htmlid = '', $morecss = 'maxwidth500', $morefilter = '')
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
global $user, $conf, $langs;
|
global $user, $conf, $langs;
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php';
|
||||||
|
|
||||||
if (empty($htmlid)) {
|
if (empty($htmlid)) {
|
||||||
$htmlid = $htmlname;
|
$htmlid = $htmlname;
|
||||||
@ -172,26 +174,26 @@ class FormProjets
|
|||||||
|
|
||||||
// Search all projects
|
// Search all projects
|
||||||
$sql = "SELECT p.rowid, p.ref, p.title, p.fk_soc, p.fk_statut, p.public, s.nom as name, s.name_alias";
|
$sql = "SELECT p.rowid, p.ref, p.title, p.fk_soc, p.fk_statut, p.public, s.nom as name, s.name_alias";
|
||||||
$sql .= " FROM ".$this->db->prefix()."projet as p LEFT JOIN ".$this->db->prefix()."societe as s ON s.rowid = p.fk_soc";
|
$sql .= " FROM " . $this->db->prefix() . "projet as p LEFT JOIN " . $this->db->prefix() . "societe as s ON s.rowid = p.fk_soc";
|
||||||
$sql .= " WHERE p.entity IN (".getEntity('project').")";
|
$sql .= " WHERE p.entity IN (" . getEntity('project') . ")";
|
||||||
if ($projectsListId !== false) {
|
if ($projectsListId !== false) {
|
||||||
$sql .= " AND p.rowid IN (".$this->db->sanitize($projectsListId).")";
|
$sql .= " AND p.rowid IN (" . $this->db->sanitize($projectsListId) . ")";
|
||||||
}
|
}
|
||||||
if ($socid == 0) {
|
if ($socid == 0) {
|
||||||
$sql .= " AND (p.fk_soc=0 OR p.fk_soc IS NULL)";
|
$sql .= " AND (p.fk_soc=0 OR p.fk_soc IS NULL)";
|
||||||
}
|
}
|
||||||
if ($socid > 0) {
|
if ($socid > 0) {
|
||||||
if (empty($conf->global->PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY)) {
|
if (empty($conf->global->PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY)) {
|
||||||
$sql .= " AND (p.fk_soc=".((int) $socid)." OR p.fk_soc IS NULL)";
|
$sql .= " AND (p.fk_soc=" . ((int) $socid) . " OR p.fk_soc IS NULL)";
|
||||||
} elseif ($conf->global->PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY != 'all') { // PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY is 'all' or a list of ids separated by coma.
|
} elseif ($conf->global->PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY != 'all') { // PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY is 'all' or a list of ids separated by coma.
|
||||||
$sql .= " AND (p.fk_soc IN (".$this->db->sanitize(((int) $socid).", ".$conf->global->PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY).") OR p.fk_soc IS NULL)";
|
$sql .= " AND (p.fk_soc IN (" . $this->db->sanitize(((int) $socid) . ", " . $conf->global->PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY) . ") OR p.fk_soc IS NULL)";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!empty($filterkey)) {
|
if (!empty($filterkey)) {
|
||||||
$sql .= natural_search(array('p.title', 'p.ref'), $filterkey);
|
$sql .= natural_search(array('p.title', 'p.ref'), $filterkey);
|
||||||
}
|
}
|
||||||
if ($morefilter) {
|
if ($morefilter) {
|
||||||
$sql .= ' AND ('.$this->db->sanitize($morefilter, 0, 1).')';
|
$sql .= ' AND (' . $this->db->sanitize($morefilter, 0, 1) . ')';
|
||||||
}
|
}
|
||||||
$sql .= " ORDER BY p.ref ASC";
|
$sql .= " ORDER BY p.ref ASC";
|
||||||
|
|
||||||
@ -201,7 +203,7 @@ class FormProjets
|
|||||||
$morecss .= ' minwidth100';
|
$morecss .= ' minwidth100';
|
||||||
}
|
}
|
||||||
if (empty($option_only)) {
|
if (empty($option_only)) {
|
||||||
$out .= '<select class="flat'.($morecss ? ' '.$morecss : '').'"'.($disabled ? ' disabled="disabled"' : '').' id="'.$htmlid.'" name="'.$htmlname.'">';
|
$out .= '<select class="flat' . ($morecss ? ' ' . $morecss : '') . '"' . ($disabled ? ' disabled="disabled"' : '') . ' id="' . $htmlid . '" name="' . $htmlname . '">';
|
||||||
}
|
}
|
||||||
if (!empty($show_empty)) {
|
if (!empty($show_empty)) {
|
||||||
$out .= '<option value="0"> </option>';
|
$out .= '<option value="0"> </option>';
|
||||||
@ -223,37 +225,37 @@ class FormProjets
|
|||||||
$labeltoshow = dol_trunc($obj->ref, 18);
|
$labeltoshow = dol_trunc($obj->ref, 18);
|
||||||
//if ($obj->public) $labeltoshow.=' ('.$langs->trans("SharedProject").')';
|
//if ($obj->public) $labeltoshow.=' ('.$langs->trans("SharedProject").')';
|
||||||
//else $labeltoshow.=' ('.$langs->trans("Private").')';
|
//else $labeltoshow.=' ('.$langs->trans("Private").')';
|
||||||
$labeltoshow .= ', '.dol_trunc($obj->title, $maxlength);
|
$labeltoshow .= ', ' . dol_trunc($obj->title, $maxlength);
|
||||||
if ($obj->name) {
|
if ($obj->name) {
|
||||||
$labeltoshow .= ' - '.$obj->name;
|
$labeltoshow .= ' - ' . $obj->name;
|
||||||
if ($obj->name_alias) {
|
if ($obj->name_alias) {
|
||||||
$labeltoshow .= ' ('.$obj->name_alias.')';
|
$labeltoshow .= ' (' . $obj->name_alias . ')';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$disabled = 0;
|
$disabled = 0;
|
||||||
if ($obj->fk_statut == 0) {
|
if ($obj->fk_statut == 0) {
|
||||||
$disabled = 1;
|
$disabled = 1;
|
||||||
$labeltoshow .= ' - '.$langs->trans("Draft");
|
$labeltoshow .= ' - ' . $langs->trans("Draft");
|
||||||
} elseif ($obj->fk_statut == 2) {
|
} elseif ($obj->fk_statut == 2) {
|
||||||
if ($discard_closed == 2) {
|
if ($discard_closed == 2) {
|
||||||
$disabled = 1;
|
$disabled = 1;
|
||||||
}
|
}
|
||||||
$labeltoshow .= ' - '.$langs->trans("Closed");
|
$labeltoshow .= ' - ' . $langs->trans("Closed");
|
||||||
} elseif (empty($conf->global->PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY) && $socid > 0 && (!empty($obj->fk_soc) && $obj->fk_soc != $socid)) {
|
} elseif (empty($conf->global->PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY) && $socid > 0 && (!empty($obj->fk_soc) && $obj->fk_soc != $socid)) {
|
||||||
$disabled = 1;
|
$disabled = 1;
|
||||||
$labeltoshow .= ' - '.$langs->trans("LinkedToAnotherCompany");
|
$labeltoshow .= ' - ' . $langs->trans("LinkedToAnotherCompany");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($selected) && $selected == $obj->rowid) {
|
if (!empty($selected) && $selected == $obj->rowid) {
|
||||||
$out .= '<option value="'.$obj->rowid.'" selected';
|
$out .= '<option value="' . $obj->rowid . '" selected';
|
||||||
//if ($disabled) $out.=' disabled'; // with select2, field can't be preselected if disabled
|
//if ($disabled) $out.=' disabled'; // with select2, field can't be preselected if disabled
|
||||||
$out .= '>'.$labeltoshow.'</option>';
|
$out .= '>' . $labeltoshow . '</option>';
|
||||||
} else {
|
} else {
|
||||||
if ($hideunselectables && $disabled && ($selected != $obj->rowid)) {
|
if ($hideunselectables && $disabled && ($selected != $obj->rowid)) {
|
||||||
$resultat = '';
|
$resultat = '';
|
||||||
} else {
|
} else {
|
||||||
$resultat = '<option value="'.$obj->rowid.'"';
|
$resultat = '<option value="' . $obj->rowid . '"';
|
||||||
if ($disabled) {
|
if ($disabled) {
|
||||||
$resultat .= ' disabled';
|
$resultat .= ' disabled';
|
||||||
}
|
}
|
||||||
@ -270,7 +272,7 @@ class FormProjets
|
|||||||
'value' => $obj->ref,
|
'value' => $obj->ref,
|
||||||
'ref' => $obj->ref,
|
'ref' => $obj->ref,
|
||||||
'labelx' => $labeltoshow,
|
'labelx' => $labeltoshow,
|
||||||
'label' => ($disabled ? '<span class="opacitymedium">'.$labeltoshow.'</span>' : $labeltoshow),
|
'label' => ($disabled ? '<span class="opacitymedium">' . $labeltoshow . '</span>' : $labeltoshow),
|
||||||
'disabled' => (bool) $disabled
|
'disabled' => (bool) $disabled
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -288,7 +290,7 @@ class FormProjets
|
|||||||
|
|
||||||
// Use select2 selector
|
// Use select2 selector
|
||||||
if (!empty($conf->use_javascript_ajax)) {
|
if (!empty($conf->use_javascript_ajax)) {
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/lib/ajax.lib.php';
|
include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
|
||||||
$comboenhancement = ajax_combobox($htmlid, array(), 0, $forcefocus);
|
$comboenhancement = ajax_combobox($htmlid, array(), 0, $forcefocus);
|
||||||
$out .= $comboenhancement;
|
$out .= $comboenhancement;
|
||||||
$morecss .= ' minwidth100';
|
$morecss .= ' minwidth100';
|
||||||
@ -312,26 +314,26 @@ class FormProjets
|
|||||||
/**
|
/**
|
||||||
* Output a combo list with tasks qualified for a third party
|
* Output a combo list with tasks qualified for a third party
|
||||||
*
|
*
|
||||||
* @param int $socid Id third party (-1=all, 0=only projects not linked to a third party, id=projects not linked or linked to third party id)
|
* @param int $socid Id third party (-1=all, 0=only projects not linked to a third party, id=projects not linked or linked to third party id)
|
||||||
* @param int $selected Id task preselected
|
* @param int $selected Id task preselected
|
||||||
* @param string $htmlname Name of HTML select
|
* @param string $htmlname Name of HTML select
|
||||||
* @param int $maxlength Maximum length of label
|
* @param int $maxlength Maximum length of label
|
||||||
* @param int $option_only Return only html options lines without the select tag
|
* @param int $option_only Return only html options lines without the select tag
|
||||||
* @param string $show_empty Add an empty line ('1' or string to show for empty line)
|
* @param string $show_empty Add an empty line ('1' or string to show for empty line)
|
||||||
* @param int $discard_closed Discard closed projects (0=Keep, 1=hide completely, 2=Disable)
|
* @param int $discard_closed Discard closed projects (0=Keep, 1=hide completely, 2=Disable)
|
||||||
* @param int $forcefocus Force focus on field (works with javascript only)
|
* @param int $forcefocus Force focus on field (works with javascript only)
|
||||||
* @param int $disabled Disabled
|
* @param int $disabled Disabled
|
||||||
* @param string $morecss More css added to the select component
|
* @param string $morecss More css added to the select component
|
||||||
* @param string $projectsListId ''=Automatic filter on project allowed. List of id=Filter on project ids.
|
* @param string $projectsListId ''=Automatic filter on project allowed. List of id=Filter on project ids.
|
||||||
* @param string $showmore 'all' = Show project info, 'progress' = Show task progression, ''=Show nothing more
|
* @param string $showmore 'all' = Show project info, 'progress' = Show task progression, ''=Show nothing more
|
||||||
* @param User $usertofilter User object to use for filtering
|
* @param User $usertofilter User object to use for filtering
|
||||||
* @return int Nbr of tasks if OK, <0 if KO
|
* @return int Nbr of tasks if OK, <0 if KO
|
||||||
*/
|
*/
|
||||||
public function selectTasks($socid = -1, $selected = '', $htmlname = 'taskid', $maxlength = 24, $option_only = 0, $show_empty = '1', $discard_closed = 0, $forcefocus = 0, $disabled = 0, $morecss = 'maxwidth500', $projectsListId = '', $showmore = 'all', $usertofilter = null)
|
public function selectTasks($socid = -1, $selected = '', $htmlname = 'taskid', $maxlength = 24, $option_only = 0, $show_empty = '1', $discard_closed = 0, $forcefocus = 0, $disabled = 0, $morecss = 'maxwidth500', $projectsListId = '', $showmore = 'all', $usertofilter = null)
|
||||||
{
|
{
|
||||||
global $user, $conf, $langs;
|
global $user, $conf, $langs;
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php';
|
||||||
|
|
||||||
if (is_null($usertofilter)) {
|
if (is_null($usertofilter)) {
|
||||||
$usertofilter = $user;
|
$usertofilter = $user;
|
||||||
@ -355,19 +357,19 @@ class FormProjets
|
|||||||
$sql = "SELECT t.rowid, t.ref as tref, t.label as tlabel, t.progress,";
|
$sql = "SELECT t.rowid, t.ref as tref, t.label as tlabel, t.progress,";
|
||||||
$sql .= " p.rowid as pid, p.ref, p.title, p.fk_soc, p.fk_statut, p.public, p.usage_task,";
|
$sql .= " p.rowid as pid, p.ref, p.title, p.fk_soc, p.fk_statut, p.public, p.usage_task,";
|
||||||
$sql .= " s.nom as name";
|
$sql .= " s.nom as name";
|
||||||
$sql .= " FROM ".$this->db->prefix()."projet as p";
|
$sql .= " FROM " . $this->db->prefix() . "projet as p";
|
||||||
$sql .= " LEFT JOIN ".$this->db->prefix()."societe as s ON s.rowid = p.fk_soc,";
|
$sql .= " LEFT JOIN " . $this->db->prefix() . "societe as s ON s.rowid = p.fk_soc,";
|
||||||
$sql .= " ".$this->db->prefix()."projet_task as t";
|
$sql .= " " . $this->db->prefix() . "projet_task as t";
|
||||||
$sql .= " WHERE p.entity IN (".getEntity('project').")";
|
$sql .= " WHERE p.entity IN (" . getEntity('project') . ")";
|
||||||
$sql .= " AND t.fk_projet = p.rowid";
|
$sql .= " AND t.fk_projet = p.rowid";
|
||||||
if ($projectsListId) {
|
if ($projectsListId) {
|
||||||
$sql .= " AND p.rowid IN (".$this->db->sanitize($projectsListId).")";
|
$sql .= " AND p.rowid IN (" . $this->db->sanitize($projectsListId) . ")";
|
||||||
}
|
}
|
||||||
if ($socid == 0) {
|
if ($socid == 0) {
|
||||||
$sql .= " AND (p.fk_soc=0 OR p.fk_soc IS NULL)";
|
$sql .= " AND (p.fk_soc=0 OR p.fk_soc IS NULL)";
|
||||||
}
|
}
|
||||||
if ($socid > 0) {
|
if ($socid > 0) {
|
||||||
$sql .= " AND (p.fk_soc=".((int) $socid)." OR p.fk_soc IS NULL)";
|
$sql .= " AND (p.fk_soc=" . ((int) $socid) . " OR p.fk_soc IS NULL)";
|
||||||
}
|
}
|
||||||
$sql .= " ORDER BY p.ref, t.ref ASC";
|
$sql .= " ORDER BY p.ref, t.ref ASC";
|
||||||
|
|
||||||
@ -375,14 +377,14 @@ class FormProjets
|
|||||||
if ($resql) {
|
if ($resql) {
|
||||||
// Use select2 selector
|
// Use select2 selector
|
||||||
if (empty($option_only) && !empty($conf->use_javascript_ajax)) {
|
if (empty($option_only) && !empty($conf->use_javascript_ajax)) {
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/lib/ajax.lib.php';
|
include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
|
||||||
$comboenhancement = ajax_combobox($htmlname, '', 0, $forcefocus);
|
$comboenhancement = ajax_combobox($htmlname, '', 0, $forcefocus);
|
||||||
$out .= $comboenhancement;
|
$out .= $comboenhancement;
|
||||||
$morecss .= ' minwidth200 maxwidth500';
|
$morecss .= ' minwidth200 maxwidth500';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($option_only)) {
|
if (empty($option_only)) {
|
||||||
$out .= '<select class="valignmiddle flat'.($morecss ? ' '.$morecss : '').'"'.($disabled ? ' disabled="disabled"' : '').' id="'.$htmlname.'" name="'.$htmlname.'">';
|
$out .= '<select class="valignmiddle flat' . ($morecss ? ' ' . $morecss : '') . '"' . ($disabled ? ' disabled="disabled"' : '') . ' id="' . $htmlname . '" name="' . $htmlname . '">';
|
||||||
}
|
}
|
||||||
if (!empty($show_empty)) {
|
if (!empty($show_empty)) {
|
||||||
$out .= '<option value="0" class="optiongrey">';
|
$out .= '<option value="0" class="optiongrey">';
|
||||||
@ -428,58 +430,58 @@ class FormProjets
|
|||||||
$labeltoshow .= dol_trunc($obj->ref, 18); // Project ref
|
$labeltoshow .= dol_trunc($obj->ref, 18); // Project ref
|
||||||
//if ($obj->public) $labeltoshow.=' ('.$langs->trans("SharedProject").')';
|
//if ($obj->public) $labeltoshow.=' ('.$langs->trans("SharedProject").')';
|
||||||
//else $labeltoshow.=' ('.$langs->trans("Private").')';
|
//else $labeltoshow.=' ('.$langs->trans("Private").')';
|
||||||
$labeltoshow .= ' '.dol_trunc($obj->title, $maxlength);
|
$labeltoshow .= ' ' . dol_trunc($obj->title, $maxlength);
|
||||||
$titletoshow = $labeltoshow;
|
$titletoshow = $labeltoshow;
|
||||||
|
|
||||||
if ($obj->name) {
|
if ($obj->name) {
|
||||||
$labeltoshow .= ' ('.$obj->name.')';
|
$labeltoshow .= ' (' . $obj->name . ')';
|
||||||
$titletoshow .= ' <span class="opacitymedium">('.$obj->name.')</span>';
|
$titletoshow .= ' <span class="opacitymedium">(' . $obj->name . ')</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$disabled = 0;
|
$disabled = 0;
|
||||||
if ($obj->fk_statut == Project::STATUS_DRAFT) {
|
if ($obj->fk_statut == Project::STATUS_DRAFT) {
|
||||||
$disabled = 1;
|
$disabled = 1;
|
||||||
$labeltoshow .= ' - '.$langs->trans("Draft");
|
$labeltoshow .= ' - ' . $langs->trans("Draft");
|
||||||
$titletoshow .= ' - <span class="opacitymedium">'.$langs->trans("Draft").'</span>';
|
$titletoshow .= ' - <span class="opacitymedium">' . $langs->trans("Draft") . '</span>';
|
||||||
} elseif ($obj->fk_statut == Project::STATUS_CLOSED) {
|
} elseif ($obj->fk_statut == Project::STATUS_CLOSED) {
|
||||||
if ($discard_closed == 2) {
|
if ($discard_closed == 2) {
|
||||||
$disabled = 1;
|
$disabled = 1;
|
||||||
}
|
}
|
||||||
$labeltoshow .= ' - '.$langs->trans("Closed");
|
$labeltoshow .= ' - ' . $langs->trans("Closed");
|
||||||
$titletoshow .= ' - <span class="opacitymedium">'.$langs->trans("Closed").'</span>';
|
$titletoshow .= ' - <span class="opacitymedium">' . $langs->trans("Closed") . '</span>';
|
||||||
} elseif ($socid > 0 && (!empty($obj->fk_soc) && $obj->fk_soc != $socid)) {
|
} elseif ($socid > 0 && (!empty($obj->fk_soc) && $obj->fk_soc != $socid)) {
|
||||||
$disabled = 1;
|
$disabled = 1;
|
||||||
$labeltoshow .= ' - '.$langs->trans("LinkedToAnotherCompany");
|
$labeltoshow .= ' - ' . $langs->trans("LinkedToAnotherCompany");
|
||||||
$titletoshow .= ' - <span class="opacitymedium">'.$langs->trans("LinkedToAnotherCompany").'</span>';
|
$titletoshow .= ' - <span class="opacitymedium">' . $langs->trans("LinkedToAnotherCompany") . '</span>';
|
||||||
}
|
}
|
||||||
$labeltoshow .= ' - ';
|
$labeltoshow .= ' - ';
|
||||||
$titletoshow .= ' - ';
|
$titletoshow .= ' - ';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Label for task
|
// Label for task
|
||||||
$labeltoshow .= $obj->tref.' '.dol_trunc($obj->tlabel, $maxlength);
|
$labeltoshow .= $obj->tref . ' ' . dol_trunc($obj->tlabel, $maxlength);
|
||||||
$titletoshow .= $obj->tref.' '.dol_trunc($obj->tlabel, $maxlength);
|
$titletoshow .= $obj->tref . ' ' . dol_trunc($obj->tlabel, $maxlength);
|
||||||
if ($obj->usage_task && preg_match('/progress/', $showmore)) {
|
if ($obj->usage_task && preg_match('/progress/', $showmore)) {
|
||||||
$labeltoshow .= ' <span class="opacitymedium">('.$obj->progress.'%)</span>';
|
$labeltoshow .= ' <span class="opacitymedium">(' . $obj->progress . '%)</span>';
|
||||||
$titletoshow .= ' <span class="opacitymedium">('.$obj->progress.'%)</span>';
|
$titletoshow .= ' <span class="opacitymedium">(' . $obj->progress . '%)</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($selected) && $selected == $obj->rowid) {
|
if (!empty($selected) && $selected == $obj->rowid) {
|
||||||
$out .= '<option value="'.$obj->rowid.'" selected';
|
$out .= '<option value="' . $obj->rowid . '" selected';
|
||||||
$out .= ' data-html="'.dol_escape_htmltag($titletoshow).'"';
|
$out .= ' data-html="' . dol_escape_htmltag($titletoshow) . '"';
|
||||||
//if ($disabled) $out.=' disabled'; // with select2, field can't be preselected if disabled
|
//if ($disabled) $out.=' disabled'; // with select2, field can't be preselected if disabled
|
||||||
$out .= '>'.$labeltoshow.'</option>';
|
$out .= '>' . $labeltoshow . '</option>';
|
||||||
} else {
|
} else {
|
||||||
if ($hideunselectables && $disabled && ($selected != $obj->rowid)) {
|
if ($hideunselectables && $disabled && ($selected != $obj->rowid)) {
|
||||||
$resultat = '';
|
$resultat = '';
|
||||||
} else {
|
} else {
|
||||||
$resultat = '<option value="'.$obj->rowid.'"';
|
$resultat = '<option value="' . $obj->rowid . '"';
|
||||||
if ($disabled) {
|
if ($disabled) {
|
||||||
$resultat .= ' disabled';
|
$resultat .= ' disabled';
|
||||||
}
|
}
|
||||||
//if ($obj->public) $labeltoshow.=' ('.$langs->trans("Public").')';
|
//if ($obj->public) $labeltoshow.=' ('.$langs->trans("Public").')';
|
||||||
//else $labeltoshow.=' ('.$langs->trans("Private").')';
|
//else $labeltoshow.=' ('.$langs->trans("Private").')';
|
||||||
$resultat .= ' data-html="'.dol_escape_htmltag($titletoshow).'"';
|
$resultat .= ' data-html="' . dol_escape_htmltag($titletoshow) . '"';
|
||||||
$resultat .= '>';
|
$resultat .= '>';
|
||||||
$resultat .= $labeltoshow;
|
$resultat .= $labeltoshow;
|
||||||
$resultat .= '</option>';
|
$resultat .= '</option>';
|
||||||
@ -508,16 +510,17 @@ class FormProjets
|
|||||||
|
|
||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build a HTML select list of element of same thirdparty to suggest to link them to project
|
* Build a HTML select list of element of same thirdparty to suggest to link them to project
|
||||||
*
|
*
|
||||||
* @param string $table_element Table of the element to update
|
* @param string $table_element Table of the element to update
|
||||||
* @param string $socid If of thirdparty to use as filter or 'id1,id2,...'
|
* @param string $socid If of thirdparty to use as filter or 'id1,id2,...'
|
||||||
* @param string $morecss More CSS
|
* @param string $morecss More CSS
|
||||||
* @param int $limitonstatus Add filters to limit length of list to opened status (for example to avoid ERR_RESPONSE_HEADERS_TOO_BIG on project/element.php page). TODO To implement
|
* @param int $limitonstatus Add filters to limit length of list to opened status (for example to avoid ERR_RESPONSE_HEADERS_TOO_BIG on project/element.php page). TODO To implement
|
||||||
* @param string $projectkey Equivalent key to fk_projet for actual table_element
|
* @param string $projectkey Equivalent key to fk_projet for actual table_element
|
||||||
* @param string $placeholder Placeholder
|
* @param string $placeholder Placeholder
|
||||||
* @return int|string The HTML select list of element or '' if nothing or -1 if KO
|
* @return int|string The HTML select list of element or '' if nothing or -1 if KO
|
||||||
*/
|
*/
|
||||||
public function select_element($table_element, $socid = 0, $morecss = '', $limitonstatus = -2, $projectkey = "fk_projet", $placeholder = '')
|
public function select_element($table_element, $socid = 0, $morecss = '', $limitonstatus = -2, $projectkey = "fk_projet", $placeholder = '')
|
||||||
{
|
{
|
||||||
@ -530,15 +533,15 @@ class FormProjets
|
|||||||
|
|
||||||
$linkedtothirdparty = false;
|
$linkedtothirdparty = false;
|
||||||
if (!in_array($table_element, array(
|
if (!in_array($table_element, array(
|
||||||
'don',
|
'don',
|
||||||
'expensereport_det',
|
'expensereport_det',
|
||||||
'expensereport', 'loan',
|
'expensereport', 'loan',
|
||||||
'stock_mouvement',
|
'stock_mouvement',
|
||||||
'payment_salary',
|
'payment_salary',
|
||||||
'payment_various',
|
'payment_various',
|
||||||
'salary',
|
'salary',
|
||||||
'chargesociales',
|
'chargesociales',
|
||||||
'entrepot')
|
'entrepot')
|
||||||
)) {
|
)) {
|
||||||
$linkedtothirdparty = true;
|
$linkedtothirdparty = true;
|
||||||
}
|
}
|
||||||
@ -597,30 +600,30 @@ class FormProjets
|
|||||||
if ($linkedtothirdparty) {
|
if ($linkedtothirdparty) {
|
||||||
$sql .= ", s.nom as name";
|
$sql .= ", s.nom as name";
|
||||||
}
|
}
|
||||||
$sql .= " FROM ".$this->db->prefix().$table_element." as t";
|
$sql .= " FROM " . $this->db->prefix() . $table_element . " as t";
|
||||||
if ($linkedtothirdparty) {
|
if ($linkedtothirdparty) {
|
||||||
$sql .= ", ".$this->db->prefix()."societe as s";
|
$sql .= ", " . $this->db->prefix() . "societe as s";
|
||||||
}
|
}
|
||||||
$sql .= " WHERE ".$projectkey." is null";
|
$sql .= " WHERE " . $projectkey . " is null";
|
||||||
if (!empty($socid) && $linkedtothirdparty) {
|
if (!empty($socid) && $linkedtothirdparty) {
|
||||||
if (is_numeric($socid)) {
|
if (is_numeric($socid)) {
|
||||||
$sql .= " AND t.fk_soc = ".((int) $socid);
|
$sql .= " AND t.fk_soc = " . ((int) $socid);
|
||||||
} else {
|
} else {
|
||||||
$sql .= " AND t.fk_soc IN (".$this->db->sanitize($socid).")";
|
$sql .= " AND t.fk_soc IN (" . $this->db->sanitize($socid) . ")";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!in_array($table_element, array('expensereport_det', 'stock_mouvement'))) {
|
if (!in_array($table_element, array('expensereport_det', 'stock_mouvement'))) {
|
||||||
$sql .= ' AND t.entity IN ('.getEntity('project').')';
|
$sql .= ' AND t.entity IN (' . getEntity('project') . ')';
|
||||||
}
|
}
|
||||||
if ($linkedtothirdparty) {
|
if ($linkedtothirdparty) {
|
||||||
$sql .= " AND s.rowid = t.fk_soc";
|
$sql .= " AND s.rowid = t.fk_soc";
|
||||||
}
|
}
|
||||||
if ($sqlfilter) {
|
if ($sqlfilter) {
|
||||||
$sql .= " AND ".$sqlfilter;
|
$sql .= " AND " . $sqlfilter;
|
||||||
}
|
}
|
||||||
$sql .= " ORDER BY ref DESC";
|
$sql .= " ORDER BY ref DESC";
|
||||||
|
|
||||||
dol_syslog(get_class($this).'::select_element', LOG_DEBUG);
|
dol_syslog(get_class($this) . '::select_element', LOG_DEBUG);
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
$num = $this->db->num_rows($resql);
|
$num = $this->db->num_rows($resql);
|
||||||
@ -628,18 +631,18 @@ class FormProjets
|
|||||||
$sellist = '';
|
$sellist = '';
|
||||||
|
|
||||||
if ($num > 0) {
|
if ($num > 0) {
|
||||||
$sellist = '<select class="flat elementselect css'.$table_element.($morecss ? ' '.$morecss : '').'" name="elementselect">';
|
$sellist = '<select class="flat elementselect css' . $table_element . ($morecss ? ' ' . $morecss : '') . '" name="elementselect">';
|
||||||
$sellist .= '<option value="-1"'.($placeholder ? ' class="optiongrey"' : '').'>'.$placeholder.'</option>';
|
$sellist .= '<option value="-1"' . ($placeholder ? ' class="optiongrey"' : '') . '>' . $placeholder . '</option>';
|
||||||
while ($i < $num) {
|
while ($i < $num) {
|
||||||
$obj = $this->db->fetch_object($resql);
|
$obj = $this->db->fetch_object($resql);
|
||||||
$ref = $obj->ref ? $obj->ref : $obj->rowid;
|
$ref = $obj->ref ? $obj->ref : $obj->rowid;
|
||||||
if (!empty($obj->ref_supplier)) {
|
if (!empty($obj->ref_supplier)) {
|
||||||
$ref .= ' ('.$obj->ref_supplier.')';
|
$ref .= ' (' . $obj->ref_supplier . ')';
|
||||||
}
|
}
|
||||||
if (!empty($obj->name)) {
|
if (!empty($obj->name)) {
|
||||||
$ref .= ' - '.$obj->name;
|
$ref .= ' - ' . $obj->name;
|
||||||
}
|
}
|
||||||
$sellist .= '<option value="'.$obj->rowid.'">'.$ref.'</option>';
|
$sellist .= '<option value="' . $obj->rowid . '">' . $ref . '</option>';
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
$sellist .= '</select>';
|
$sellist .= '</select>';
|
||||||
@ -657,7 +660,7 @@ class FormProjets
|
|||||||
dol_print_error($this->db);
|
dol_print_error($this->db);
|
||||||
$this->error = $this->db->lasterror();
|
$this->error = $this->db->lasterror();
|
||||||
$this->errors[] = $this->db->lasterror();
|
$this->errors[] = $this->db->lasterror();
|
||||||
dol_syslog(get_class($this)."::select_element ".$this->error, LOG_ERR);
|
dol_syslog(get_class($this) . "::select_element " . $this->error, LOG_ERR);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -666,23 +669,23 @@ class FormProjets
|
|||||||
/**
|
/**
|
||||||
* Build a HTML select list of element of same thirdparty to suggest to link them to project
|
* Build a HTML select list of element of same thirdparty to suggest to link them to project
|
||||||
*
|
*
|
||||||
* @param string $htmlname HTML name
|
* @param string $htmlname HTML name
|
||||||
* @param string $preselected Preselected (int or 'all' or 'none')
|
* @param string $preselected Preselected (int or 'all' or 'none')
|
||||||
* @param int $showempty Add an empty line
|
* @param int $showempty Add an empty line
|
||||||
* @param int $useshortlabel Use short label
|
* @param int $useshortlabel Use short label
|
||||||
* @param int $showallnone Add choice "All" and "None"
|
* @param int $showallnone Add choice "All" and "None"
|
||||||
* @param int $showpercent Show default probability for status
|
* @param int $showpercent Show default probability for status
|
||||||
* @param string $morecss Add more css
|
* @param string $morecss Add more css
|
||||||
* @param int $noadmininfo 0=Add admin info, 1=Disable admin info
|
* @param int $noadmininfo 0=Add admin info, 1=Disable admin info
|
||||||
* @param int $addcombojs 1=Add a js combo
|
* @param int $addcombojs 1=Add a js combo
|
||||||
* @return int|string The HTML select list of element or '' if nothing or -1 if KO
|
* @return int|string The HTML select list of element or '' if nothing or -1 if KO
|
||||||
*/
|
*/
|
||||||
public function selectOpportunityStatus($htmlname, $preselected = '-1', $showempty = 1, $useshortlabel = 0, $showallnone = 0, $showpercent = 0, $morecss = '', $noadmininfo = 0, $addcombojs = 0)
|
public function selectOpportunityStatus($htmlname, $preselected = '-1', $showempty = 1, $useshortlabel = 0, $showallnone = 0, $showpercent = 0, $morecss = '', $noadmininfo = 0, $addcombojs = 0)
|
||||||
{
|
{
|
||||||
global $conf, $langs, $user;
|
global $conf, $langs, $user;
|
||||||
|
|
||||||
$sql = "SELECT rowid, code, label, percent";
|
$sql = "SELECT rowid, code, label, percent";
|
||||||
$sql .= " FROM ".$this->db->prefix().'c_lead_status';
|
$sql .= " FROM " . $this->db->prefix() . 'c_lead_status';
|
||||||
$sql .= " WHERE active = 1";
|
$sql .= " WHERE active = 1";
|
||||||
$sql .= " ORDER BY position";
|
$sql .= " ORDER BY position";
|
||||||
|
|
||||||
@ -691,31 +694,31 @@ class FormProjets
|
|||||||
$num = $this->db->num_rows($resql);
|
$num = $this->db->num_rows($resql);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
if ($num > 0) {
|
if ($num > 0) {
|
||||||
$sellist = '<select class="flat oppstatus'.($morecss ? ' '.$morecss : '').'" id="'.$htmlname.'" name="'.$htmlname.'">';
|
$sellist = '<select class="flat oppstatus' . ($morecss ? ' ' . $morecss : '') . '" id="' . $htmlname . '" name="' . $htmlname . '">';
|
||||||
if ($showempty) {
|
if ($showempty) {
|
||||||
// Without  , strange move of screen when switching value
|
// Without  , strange move of screen when switching value
|
||||||
$sellist .= '<option value="-1"> </option>';
|
$sellist .= '<option value="-1"> </option>';
|
||||||
}
|
}
|
||||||
if ($showallnone) {
|
if ($showallnone) {
|
||||||
$sellist .= '<option value="all"'.($preselected == 'all' ? ' selected="selected"' : '').'>-- '.$langs->trans("OnlyOpportunitiesShort").'</option>';
|
$sellist .= '<option value="all"' . ($preselected == 'all' ? ' selected="selected"' : '') . '>-- ' . $langs->trans("OnlyOpportunitiesShort") . '</option>';
|
||||||
$sellist .= '<option value="openedopp"'.($preselected == 'openedopp' ? ' selected="selected"' : '').'>-- '.$langs->trans("OpenedOpportunitiesShort").'</option>';
|
$sellist .= '<option value="openedopp"' . ($preselected == 'openedopp' ? ' selected="selected"' : '') . '>-- ' . $langs->trans("OpenedOpportunitiesShort") . '</option>';
|
||||||
$sellist .= '<option value="notopenedopp"'.($preselected == 'notopenedopp' ? ' selected="selected"' : '').'>-- '.$langs->trans("NotOpenedOpportunitiesShort").'</option>';
|
$sellist .= '<option value="notopenedopp"' . ($preselected == 'notopenedopp' ? ' selected="selected"' : '') . '>-- ' . $langs->trans("NotOpenedOpportunitiesShort") . '</option>';
|
||||||
$sellist .= '<option value="none"'.($preselected == 'none' ? ' selected="selected"' : '').'>-- '.$langs->trans("NotAnOpportunityShort").'</option>';
|
$sellist .= '<option value="none"' . ($preselected == 'none' ? ' selected="selected"' : '') . '>-- ' . $langs->trans("NotAnOpportunityShort") . '</option>';
|
||||||
}
|
}
|
||||||
while ($i < $num) {
|
while ($i < $num) {
|
||||||
$obj = $this->db->fetch_object($resql);
|
$obj = $this->db->fetch_object($resql);
|
||||||
|
|
||||||
$sellist .= '<option value="'.$obj->rowid.'" defaultpercent="'.$obj->percent.'" elemcode="'.$obj->code.'"';
|
$sellist .= '<option value="' . $obj->rowid . '" defaultpercent="' . $obj->percent . '" elemcode="' . $obj->code . '"';
|
||||||
if ($obj->rowid == $preselected) {
|
if ($obj->rowid == $preselected) {
|
||||||
$sellist .= ' selected="selected"';
|
$sellist .= ' selected="selected"';
|
||||||
}
|
}
|
||||||
$sellist .= '>';
|
$sellist .= '>';
|
||||||
if ($useshortlabel) {
|
if ($useshortlabel) {
|
||||||
$finallabel = ($langs->transnoentitiesnoconv("OppStatus".$obj->code) != "OppStatus".$obj->code ? $langs->transnoentitiesnoconv("OppStatus".$obj->code) : $obj->label);
|
$finallabel = ($langs->transnoentitiesnoconv("OppStatus" . $obj->code) != "OppStatus" . $obj->code ? $langs->transnoentitiesnoconv("OppStatus" . $obj->code) : $obj->label);
|
||||||
} else {
|
} else {
|
||||||
$finallabel = ($langs->transnoentitiesnoconv("OppStatus".$obj->code) != "OppStatus".$obj->code ? $langs->transnoentitiesnoconv("OppStatus".$obj->code) : $obj->label);
|
$finallabel = ($langs->transnoentitiesnoconv("OppStatus" . $obj->code) != "OppStatus" . $obj->code ? $langs->transnoentitiesnoconv("OppStatus" . $obj->code) : $obj->label);
|
||||||
if ($showpercent) {
|
if ($showpercent) {
|
||||||
$finallabel .= ' ('.$obj->percent.'%)';
|
$finallabel .= ' (' . $obj->percent . '%)';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$sellist .= $finallabel;
|
$sellist .= $finallabel;
|
||||||
@ -744,8 +747,134 @@ class FormProjets
|
|||||||
} else {
|
} else {
|
||||||
$this->error = $this->db->lasterror();
|
$this->error = $this->db->lasterror();
|
||||||
$this->errors[] = $this->db->lasterror();
|
$this->errors[] = $this->db->lasterror();
|
||||||
dol_syslog(get_class($this)."::selectOpportunityStatus ".$this->error, LOG_ERR);
|
dol_syslog(get_class($this) . "::selectOpportunityStatus " . $this->error, LOG_ERR);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Output a combo list with invoices and lines qualified for a project
|
||||||
|
*
|
||||||
|
* @param int $selectedInvoiceId Id invoice preselected
|
||||||
|
* @param int $selectedLineId Id invoice line preselected
|
||||||
|
* @param string $htmlNameInvoice Name of HTML select for Invoice
|
||||||
|
* @param int $htmlNameInvoiceLine Name of HTML select for Invoice Line
|
||||||
|
* @param string $morecss More css added to the select component
|
||||||
|
* @param array $filters Array of filters
|
||||||
|
* @param int $lineOnly return only option for line
|
||||||
|
* @return string HTML Select
|
||||||
|
*/
|
||||||
|
public function selectInvoiceAndLine($selectedInvoiceId = 0, $selectedLineId = 0, $htmlNameInvoice = 'invoiceid', $htmlNameInvoiceLine = 'invoicelineid', $morecss = 'maxwidth500', $filters = array(), $lineOnly = 0)
|
||||||
|
{
|
||||||
|
global $user, $conf, $langs;
|
||||||
|
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php';
|
||||||
|
|
||||||
|
$out = '';
|
||||||
|
if (empty($lineOnly)) {
|
||||||
|
// Search Invoice
|
||||||
|
$sql = "SELECT f.rowid, f.ref as fref,";
|
||||||
|
$sql .= ' s.nom as name';
|
||||||
|
$sql .= ' FROM ' . $this->db->prefix() . 'projet as p';
|
||||||
|
$sql .= ' INNER JOIN ' . $this->db->prefix() . 'societe as s ON s.rowid = p.fk_soc';
|
||||||
|
$sql .= ' INNER JOIN ' . $this->db->prefix() . 'facture as f ON f.fk_projet = p.rowid';
|
||||||
|
$sql .= " WHERE p.entity IN (" . getEntity('project') . ")";
|
||||||
|
if (!empty($filters)) {
|
||||||
|
foreach ($filters as $key => $value) {
|
||||||
|
if ($key == 'p.rowid') {
|
||||||
|
$sql .= " AND p.rowid=" . (int) $value;
|
||||||
|
}
|
||||||
|
if ($key == 'f.rowid') {
|
||||||
|
$sql .= " AND f.rowid=" . (int) $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$sql .= " ORDER BY p.ref, f.ref ASC";
|
||||||
|
|
||||||
|
$resql = $this->db->query($sql);
|
||||||
|
if ($resql) {
|
||||||
|
// Use select2 selector
|
||||||
|
if (!empty($conf->use_javascript_ajax)) {
|
||||||
|
include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
|
||||||
|
$comboenhancement = ajax_combobox($htmlNameInvoice, array(array('method'=>'getLines', 'url'=>dol_buildpath('/core/ajax/ajaxinvoiceline.php', 1), 'htmlname'=>$htmlNameInvoiceLine)), 0, 0);
|
||||||
|
$out .= $comboenhancement;
|
||||||
|
$morecss = 'minwidth200imp maxwidth500';
|
||||||
|
}
|
||||||
|
|
||||||
|
$out .= '<select class="valignmiddle flat' . ($morecss ? ' ' . $morecss : '') . '" id="' . $htmlNameInvoice . '" name="' . $htmlNameInvoice . '">';
|
||||||
|
$num = $this->db->num_rows($resql);
|
||||||
|
if ($num) {
|
||||||
|
while ($obj = $this->db->fetch_object($resql)) {
|
||||||
|
$labeltoshow = $obj->fref; // Invoice ref
|
||||||
|
if ($obj->name) {
|
||||||
|
$labeltoshow .= ' - ' . $obj->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
$out .= '<option value="' . $obj->rowid . '" ';
|
||||||
|
if (!empty($selectedInvoiceId) && $selectedInvoiceId == $obj->rowid) {
|
||||||
|
$out .= ' selected ';
|
||||||
|
}
|
||||||
|
$out .= '>' . $labeltoshow . '</option>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$out .= '</select>';
|
||||||
|
} else {
|
||||||
|
dol_print_error($this->db->lasterror);
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Search Invoice Line
|
||||||
|
$sql = "SELECT fd.rowid, fd.label, fd.description";
|
||||||
|
$sql .= ' FROM ' . $this->db->prefix() . 'projet as p';
|
||||||
|
$sql .= ' INNER JOIN ' . $this->db->prefix() . 'societe as s ON s.rowid = p.fk_soc';
|
||||||
|
$sql .= ' INNER JOIN ' . $this->db->prefix() . 'facture as f ON f.fk_projet = p.rowid';
|
||||||
|
$sql .= ' INNER JOIN ' . $this->db->prefix() . 'facturedet as fd ON fd.fk_facture = f.rowid';
|
||||||
|
$sql .= " WHERE p.entity IN (" . getEntity('project') . ")";
|
||||||
|
if (!empty($filters)) {
|
||||||
|
foreach ($filters as $key => $value) {
|
||||||
|
if ($key == 'p.rowid') {
|
||||||
|
$sql .= " AND p.rowid=" . (int) $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!empty($selectedInvoiceId)) {
|
||||||
|
$sql .= " AND f.rowid=" . (int) $selectedInvoiceId;
|
||||||
|
}
|
||||||
|
$sql .= " ORDER BY p.ref, f.ref ASC";
|
||||||
|
$resql = $this->db->query($sql);
|
||||||
|
if ($resql) {
|
||||||
|
// Use select2 selector
|
||||||
|
if (empty($lineOnly)) {
|
||||||
|
if (!empty($conf->use_javascript_ajax)) {
|
||||||
|
include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
|
||||||
|
$comboenhancement = ajax_combobox($htmlNameInvoiceLine, '', 0, 0);
|
||||||
|
$out .= $comboenhancement;
|
||||||
|
$morecss = 'minwidth200imp maxwidth500';
|
||||||
|
}
|
||||||
|
|
||||||
|
$out .= '<select class="valignmiddle flat' . ($morecss ? ' ' . $morecss : '') . '" id="' . $htmlNameInvoiceLine . '" name="' . $htmlNameInvoiceLine . '">';
|
||||||
|
}
|
||||||
|
$num = $this->db->num_rows($resql);
|
||||||
|
if ($num) {
|
||||||
|
while ($obj = $this->db->fetch_object($resql)) {
|
||||||
|
$labeltoshow .= $obj->description; // Invoice ref
|
||||||
|
|
||||||
|
$out .= '<option value="' . $obj->rowid . '" ';
|
||||||
|
if (!empty($selectedLineId) && $selectedLineId == $obj->rowid) {
|
||||||
|
$out .= ' selected ';
|
||||||
|
}
|
||||||
|
$out .= '>' . $labeltoshow . '</option>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (empty($lineOnly)) {
|
||||||
|
$out .= '</select>';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
dol_print_error($this->db->lasterror);
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $out;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -419,7 +419,7 @@ class FormTicket
|
|||||||
print $langs->trans('SubjectAnswerToTicket').' '.$this->topic_title;
|
print $langs->trans('SubjectAnswerToTicket').' '.$this->topic_title;
|
||||||
} else {
|
} else {
|
||||||
if (isset($this->withreadid) && $this->withreadid > 0) {
|
if (isset($this->withreadid) && $this->withreadid > 0) {
|
||||||
$subject = $langs->trans('SubjectAnswerToTicket').' '.$this->withreadid.' : '.$this->topic_title.'';
|
$subject = $langs->trans('SubjectAnswerToTicket').' '.$this->withreadid.' : '.$this->topic_title;
|
||||||
} else {
|
} else {
|
||||||
$subject = GETPOST('subject', 'alpha');
|
$subject = GETPOST('subject', 'alpha');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1788,7 +1788,9 @@ function dolButtonToOpenUrlInDialogPopup($name, $label, $buttonstring, $url, $di
|
|||||||
if (empty($conf->use_javascript_ajax)) {
|
if (empty($conf->use_javascript_ajax)) {
|
||||||
$out .= ' href="'.DOL_URL_ROOT.$url.'" target="_blank"';
|
$out .= ' href="'.DOL_URL_ROOT.$url.'" target="_blank"';
|
||||||
} elseif ($jsonopen) {
|
} elseif ($jsonopen) {
|
||||||
$out .= ' onclick="javascript:'.$jsonopen.'"';
|
$out .= ' href="#" onclick="javascript:'.$jsonopen.'"';
|
||||||
|
} else {
|
||||||
|
$out .= ' href="#"';
|
||||||
}
|
}
|
||||||
$out .= '>'.$buttonstring.'</a>';
|
$out .= '>'.$buttonstring.'</a>';
|
||||||
|
|
||||||
|
|||||||
@ -57,7 +57,7 @@ $shmoffset = 1000; // Max number of entries found into a language file. If too l
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save data into a memory area shared by all users, all sessions on server
|
* Save data into a memory area shared by all users, all sessions on server. Note: MAIN_CACHE_COUNT must be set.
|
||||||
*
|
*
|
||||||
* @param string $memoryid Memory id of shared area
|
* @param string $memoryid Memory id of shared area
|
||||||
* @param mixed $data Data to save. It must not be a null value.
|
* @param mixed $data Data to save. It must not be a null value.
|
||||||
|
|||||||
@ -105,9 +105,39 @@ function propal_prepare_head($object)
|
|||||||
$head[$h][2] = 'document';
|
$head[$h][2] = 'document';
|
||||||
$h++;
|
$h++;
|
||||||
|
|
||||||
$head[$h][0] = DOL_URL_ROOT.'/comm/propal/info.php?id='.$object->id;
|
|
||||||
$head[$h][1] = $langs->trans('Info');
|
$head[$h][0] = DOL_URL_ROOT.'/comm/propal/agenda.php?id='.$object->id;
|
||||||
$head[$h][2] = 'info';
|
$head[$h][1] = $langs->trans("Events");
|
||||||
|
if (isModEnabled('agenda')&& (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) {
|
||||||
|
$nbEvent = 0;
|
||||||
|
// Enable caching of thirdparty count actioncomm
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/memory.lib.php';
|
||||||
|
$cachekey = 'count_events_propal_'.$object->id;
|
||||||
|
$dataretrieved = dol_getcache($cachekey);
|
||||||
|
if (!is_null($dataretrieved)) {
|
||||||
|
$nbEvent = $dataretrieved;
|
||||||
|
} else {
|
||||||
|
$sql = "SELECT COUNT(id) as nb";
|
||||||
|
$sql .= " FROM ".MAIN_DB_PREFIX."actioncomm";
|
||||||
|
$sql .= " WHERE fk_element = ".((int) $object->id);
|
||||||
|
$sql .= " AND elementtype = 'propal'";
|
||||||
|
$resql = $db->query($sql);
|
||||||
|
if ($resql) {
|
||||||
|
$obj = $db->fetch_object($resql);
|
||||||
|
$nbEvent = $obj->nb;
|
||||||
|
} else {
|
||||||
|
dol_syslog('Failed to count actioncomm '.$db->lasterror(), LOG_ERR);
|
||||||
|
}
|
||||||
|
dol_setcache($cachekey, $nbEvent, 120); // If setting cache fails, this is not a problem, so we do not test result.
|
||||||
|
}
|
||||||
|
|
||||||
|
$head[$h][1] .= '/';
|
||||||
|
$head[$h][1] .= $langs->trans("Agenda");
|
||||||
|
if ($nbEvent > 0) {
|
||||||
|
$head[$h][1] .= '<span class="badge marginleftonlyshort">'.$nbEvent.'</span>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$head[$h][2] = 'agenda';
|
||||||
$h++;
|
$h++;
|
||||||
|
|
||||||
complete_head_from_modules($conf, $langs, $object, $head, $h, 'propal', 'add', 'external');
|
complete_head_from_modules($conf, $langs, $object, $head, $h, 'propal', 'add', 'external');
|
||||||
|
|||||||
@ -444,7 +444,7 @@ function dolWebsiteIncrementCounter($websiteid, $websitepagetype, $websitepageid
|
|||||||
$sql .= " pageviews_total = pageviews_total + 1,";
|
$sql .= " pageviews_total = pageviews_total + 1,";
|
||||||
$sql .= " pageviews_month = pageviews_month + 1,";
|
$sql .= " pageviews_month = pageviews_month + 1,";
|
||||||
// if last access was done during previous month, we save pageview_month into pageviews_previous_month
|
// if last access was done during previous month, we save pageview_month into pageviews_previous_month
|
||||||
$sql .= " pageviews_previous_month = ".$db->ifsql("lastaccess < '".$db->idate(dol_mktime(0, 0, 0, $tmpnow['month'], 1, $tmpnow['year'], 'gmt', 0), 'gmt')."'", 'pageviews_month', 'pageviews_previous_month').",";
|
$sql .= " pageviews_previous_month = ".$db->ifsql("lastaccess < '".$db->idate(dol_mktime(0, 0, 0, $tmpnow['mon'], 1, $tmpnow['year'], 'gmt', 0), 'gmt')."'", 'pageviews_month', 'pageviews_previous_month').",";
|
||||||
$sql .= " lastaccess = '".$db->idate(dol_now('gmt'), 'gmt')."'";
|
$sql .= " lastaccess = '".$db->idate(dol_now('gmt'), 'gmt')."'";
|
||||||
$sql .= " WHERE rowid = ".((int) $websiteid);
|
$sql .= " WHERE rowid = ".((int) $websiteid);
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
|
|||||||
@ -504,7 +504,6 @@ class pdf_sepamandate extends ModeleBankAccountDoc
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -48,6 +48,11 @@ class MailingTargets // This can't be abstract as it is used for some method
|
|||||||
|
|
||||||
public $tooltip = '';
|
public $tooltip = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string The SQL string used to find the recipients
|
||||||
|
*/
|
||||||
|
public $sql;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
|
|||||||
@ -118,7 +118,7 @@ class modStripe extends DolibarrModules
|
|||||||
'url' => '',
|
'url' => '',
|
||||||
'langs' => 'stripe',
|
'langs' => 'stripe',
|
||||||
'position' => 100,
|
'position' => 100,
|
||||||
'enabled' => '$conf->stripe->enabled && $conf->banque->enabled && $conf->global->MAIN_FEATURES_LEVEL >= 1',
|
'enabled' => 'isModEnabled("stripe") && isModenabled("banque")',
|
||||||
'perms' => '$user->rights->banque->lire',
|
'perms' => '$user->rights->banque->lire',
|
||||||
'target' => '',
|
'target' => '',
|
||||||
'user' => 0
|
'user' => 0
|
||||||
@ -132,7 +132,7 @@ class modStripe extends DolibarrModules
|
|||||||
'url' => '/stripe/charge.php',
|
'url' => '/stripe/charge.php',
|
||||||
'langs' => 'stripe',
|
'langs' => 'stripe',
|
||||||
'position' => 102,
|
'position' => 102,
|
||||||
'enabled' => '$conf->stripe->enabled && $conf->banque->enabled && $conf->global->MAIN_FEATURES_LEVEL >= 1',
|
'enabled' => 'isModEnabled("stripe") && isModenabled("banque") && getDolGlobalInt("MAIN_FEATURES_LEVEL") >= 1',
|
||||||
'perms' => '$user->rights->banque->lire',
|
'perms' => '$user->rights->banque->lire',
|
||||||
'target' => '',
|
'target' => '',
|
||||||
'user' => 0
|
'user' => 0
|
||||||
@ -146,7 +146,7 @@ class modStripe extends DolibarrModules
|
|||||||
'url' => '/stripe/transaction.php',
|
'url' => '/stripe/transaction.php',
|
||||||
'langs' => 'stripe',
|
'langs' => 'stripe',
|
||||||
'position' => 102,
|
'position' => 102,
|
||||||
'enabled' => '$conf->stripe->enabled && $conf->banque->enabled && $conf->global->MAIN_FEATURES_LEVEL >= 1',
|
'enabled' => 'isModEnabled("stripe") && isModenabled("banque") && getDolGlobalInt("MAIN_FEATURES_LEVEL") >= 2',
|
||||||
'perms' => '$user->rights->banque->lire',
|
'perms' => '$user->rights->banque->lire',
|
||||||
'target' => '',
|
'target' => '',
|
||||||
'user' => 0
|
'user' => 0
|
||||||
@ -160,7 +160,7 @@ class modStripe extends DolibarrModules
|
|||||||
'url' => '/stripe/payout.php',
|
'url' => '/stripe/payout.php',
|
||||||
'langs' => 'stripe',
|
'langs' => 'stripe',
|
||||||
'position' => 103,
|
'position' => 103,
|
||||||
'enabled' => '$conf->stripe->enabled && $conf->banque->enabled && $conf->global->MAIN_FEATURES_LEVEL >= 1',
|
'enabled' => 'isModEnabled("stripe") && isModenabled("banque")',
|
||||||
'perms' => '$user->rights->banque->lire',
|
'perms' => '$user->rights->banque->lire',
|
||||||
'target' => '',
|
'target' => '',
|
||||||
'user' => 0
|
'user' => 0
|
||||||
|
|||||||
@ -49,9 +49,9 @@ class doc_generic_supplier_invoice_odt extends ModelePDFSuppliersInvoices
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @var array Minimum version of PHP required by module.
|
* @var array Minimum version of PHP required by module.
|
||||||
* e.g.: PHP ≥ 5.6 = array(5, 6)
|
* e.g.: PHP ≥ 7.0 = array(7, 0)
|
||||||
*/
|
*/
|
||||||
public $phpmin = array(5, 6);
|
public $phpmin = array(7, 0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Dolibarr version of the loaded document
|
* @var string Dolibarr version of the loaded document
|
||||||
@ -122,9 +122,10 @@ class doc_generic_supplier_invoice_odt extends ModelePDFSuppliersInvoices
|
|||||||
$texte = $this->description.".<br>\n";
|
$texte = $this->description.".<br>\n";
|
||||||
$texte .= '<form action="'.$_SERVER["PHP_SELF"].'" method="POST" enctype="multipart/form-data">';
|
$texte .= '<form action="'.$_SERVER["PHP_SELF"].'" method="POST" enctype="multipart/form-data">';
|
||||||
$texte .= '<input type="hidden" name="token" value="'.newToken().'">';
|
$texte .= '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
|
$texte .= '<input type="hidden" name="page_y" value="">';
|
||||||
$texte .= '<input type="hidden" name="action" value="setModuleOptions">';
|
$texte .= '<input type="hidden" name="action" value="setModuleOptions">';
|
||||||
$texte .= '<input type="hidden" name="param1" value="SUPPLIER_INVOICE_ADDON_PDF_ODT_PATH">';
|
$texte .= '<input type="hidden" name="param1" value="SUPPLIER_INVOICE_ADDON_PDF_ODT_PATH">';
|
||||||
$texte .= '<table class="nobinvoicenopadding" width="100%">';
|
$texte .= '<table class="nobordernopadding" width="100%">';
|
||||||
|
|
||||||
// List of directories area
|
// List of directories area
|
||||||
$texte .= '<tr><td>';
|
$texte .= '<tr><td>';
|
||||||
@ -161,7 +162,7 @@ class doc_generic_supplier_invoice_odt extends ModelePDFSuppliersInvoices
|
|||||||
$texte .= $conf->global->SUPPLIER_INVOICE_ADDON_PDF_ODT_PATH;
|
$texte .= $conf->global->SUPPLIER_INVOICE_ADDON_PDF_ODT_PATH;
|
||||||
$texte .= '</textarea>';
|
$texte .= '</textarea>';
|
||||||
$texte .= '</div><div style="display: inline-block; vertical-align: middle;">';
|
$texte .= '</div><div style="display: inline-block; vertical-align: middle;">';
|
||||||
$texte .= '<input type="submit" class="button small" value="'.$langs->trans("Modify").'" name="Button">';
|
$texte .= '<input type="submit" class="button small reposition" name="modify" value="'.$langs->trans("Modify").'">';
|
||||||
$texte .= '<br></div></div>';
|
$texte .= '<br></div></div>';
|
||||||
|
|
||||||
// Scan directories
|
// Scan directories
|
||||||
@ -178,7 +179,9 @@ class doc_generic_supplier_invoice_odt extends ModelePDFSuppliersInvoices
|
|||||||
$texte .= '<div id="div_'.get_class($this).'" class="hiddenx">';
|
$texte .= '<div id="div_'.get_class($this).'" class="hiddenx">';
|
||||||
// Show list of found files
|
// Show list of found files
|
||||||
foreach ($listoffiles as $file) {
|
foreach ($listoffiles as $file) {
|
||||||
$texte .= '- '.$file['name'].' <a href="'.DOL_URL_ROOT.'/document.php?modulepart=doctemplates&file=supplier_invoices/'.urlencode(basename($file['name'])).'">'.img_picto('', 'listlight').'</a><br>';
|
$texte .= '- '.$file['name'].' <a href="'.DOL_URL_ROOT.'/document.php?modulepart=doctemplates&file=supplier_invoices/'.urlencode(basename($file['name'])).'">'.img_picto('', 'listlight').'</a>';
|
||||||
|
$texte .= ' <a class="reposition" href="'.$_SERVER["PHP_SELF"].'?modulepart=doctemplates&keyforuploaddir=SUPPLIER_INVOICE_ADDON_PDF_ODT_PATH&action=deletefile&token='.newToken().'&file='.urlencode(basename($file['name'])).'">'.img_picto('', 'delete').'</a>';
|
||||||
|
$texte .= '<br>';
|
||||||
}
|
}
|
||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
}
|
}
|
||||||
@ -189,9 +192,10 @@ class doc_generic_supplier_invoice_odt extends ModelePDFSuppliersInvoices
|
|||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
$texte .= '</td>';
|
$texte .= '</td>';
|
||||||
|
|
||||||
|
|
||||||
$texte .= '<td rowspan="2" class="tdtop hideonsmartphone">';
|
$texte .= '<td rowspan="2" class="tdtop hideonsmartphone">';
|
||||||
|
$texte .= '<span class="opacitymedium">';
|
||||||
$texte .= $langs->trans("ExampleOfDirectoriesForModelGen");
|
$texte .= $langs->trans("ExampleOfDirectoriesForModelGen");
|
||||||
|
$texte .= '</span>';
|
||||||
$texte .= '</td>';
|
$texte .= '</td>';
|
||||||
$texte .= '</tr>';
|
$texte .= '</tr>';
|
||||||
|
|
||||||
|
|||||||
@ -119,7 +119,7 @@ class doc_generic_supplier_order_odt extends ModelePDFSuppliersOrders
|
|||||||
$form = new Form($this->db);
|
$form = new Form($this->db);
|
||||||
|
|
||||||
$texte = $this->description.".<br>\n";
|
$texte = $this->description.".<br>\n";
|
||||||
$texte .= '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
|
$texte .= '<form action="'.$_SERVER["PHP_SELF"].'" method="POST" enctype="multipart/form-data">';
|
||||||
$texte .= '<input type="hidden" name="token" value="'.newToken().'">';
|
$texte .= '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
$texte .= '<input type="hidden" name="page_y" value="">';
|
$texte .= '<input type="hidden" name="page_y" value="">';
|
||||||
$texte .= '<input type="hidden" name="action" value="setModuleOptions">';
|
$texte .= '<input type="hidden" name="action" value="setModuleOptions">';
|
||||||
@ -181,7 +181,11 @@ class doc_generic_supplier_order_odt extends ModelePDFSuppliersOrders
|
|||||||
}
|
}
|
||||||
$texte .= '</div>';
|
$texte .= '</div>';
|
||||||
}
|
}
|
||||||
|
// Add input to upload a new template file.
|
||||||
|
$texte .= '<div>'.$langs->trans("UploadNewTemplate").' <input type="file" name="uploadfile">';
|
||||||
|
$texte .= '<input type="hidden" value="SUPPLIER_ORDER_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
||||||
|
$texte .= '<input type="submit" class="button small" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
||||||
|
$texte .= '</div>';
|
||||||
$texte .= '</td>';
|
$texte .= '</td>';
|
||||||
|
|
||||||
$texte .= '<td rowspan="2" class="tdtop hideonsmartphone">';
|
$texte .= '<td rowspan="2" class="tdtop hideonsmartphone">';
|
||||||
|
|||||||
@ -83,7 +83,7 @@ class mod_supplier_proposal_saphir extends ModeleNumRefSupplierProposal
|
|||||||
$tooltip .= $langs->trans("GenericMaskCodes4a", $langs->transnoentities("CommRequest"), $langs->transnoentities("CommRequest"));
|
$tooltip .= $langs->trans("GenericMaskCodes4a", $langs->transnoentities("CommRequest"), $langs->transnoentities("CommRequest"));
|
||||||
$tooltip .= $langs->trans("GenericMaskCodes5");
|
$tooltip .= $langs->trans("GenericMaskCodes5");
|
||||||
|
|
||||||
$mask = dolGetGlobalString('SUPPLIER_PROPOSAL_SAPHIR_MASK');
|
$mask = getDolGlobalString('SUPPLIER_PROPOSAL_SAPHIR_MASK');
|
||||||
|
|
||||||
// Parametrage du prefix
|
// Parametrage du prefix
|
||||||
$texte .= '<tr><td>'.$langs->trans("Mask").':</td>';
|
$texte .= '<tr><td>'.$langs->trans("Mask").':</td>';
|
||||||
|
|||||||
@ -146,7 +146,7 @@ if ($usemargins && isModEnabled('margin') && empty($user->socid)) {
|
|||||||
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?mode=marginforalllines&id='.$object->id.'">'.img_edit($langs->trans("UpdateForAllLines"), 0, 'class="clickmarginforalllines opacitymedium paddingleft cursorpointer"').'</a>';
|
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?mode=marginforalllines&id='.$object->id.'">'.img_edit($langs->trans("UpdateForAllLines"), 0, 'class="clickmarginforalllines opacitymedium paddingleft cursorpointer"').'</a>';
|
||||||
if (GETPOST('mode', 'aZ09') == 'marginforalllines') {
|
if (GETPOST('mode', 'aZ09') == 'marginforalllines') {
|
||||||
print '<div class="classmarginforalllines inline-block nowraponall">';
|
print '<div class="classmarginforalllines inline-block nowraponall">';
|
||||||
print '<input type="number" name="marginforalllines" min="0" max="999.9" value="20.0" step="0.1"><label>%</label>';
|
print '<input type="number" name="marginforalllines" min="0" max="999.9" value="20.0" step="0.1" class="width50"><label>%</label>';
|
||||||
print '<input class="inline-block button smallpaddingimp" type="submit" name="submitforallmargins" value="'.$langs->trans("Update").'">';
|
print '<input class="inline-block button smallpaddingimp" type="submit" name="submitforallmargins" value="'.$langs->trans("Update").'">';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,7 +51,7 @@ if (!is_object($website)) {
|
|||||||
$website->fetch(0, $websitekey);
|
$website->fetch(0, $websitekey);
|
||||||
}
|
}
|
||||||
// Define $websitepage if we have $websitepagefile defined
|
// Define $websitepage if we have $websitepagefile defined
|
||||||
if (!$pageid && !empty($websitepagefile)) {
|
if (empty($pageid) && !empty($websitepagefile)) {
|
||||||
$pageid = str_replace(array('.tpl.php', 'page'), array('', ''), basename($websitepagefile));
|
$pageid = str_replace(array('.tpl.php', 'page'), array('', ''), basename($websitepagefile));
|
||||||
if ($pageid == 'index.php') {
|
if ($pageid == 'index.php') {
|
||||||
$pageid = $website->fk_default_home;
|
$pageid = $website->fk_default_home;
|
||||||
|
|||||||
@ -62,7 +62,7 @@ class DolRequestDataCollector extends RequestDataCollector
|
|||||||
/**
|
/**
|
||||||
* Return widget settings
|
* Return widget settings
|
||||||
*
|
*
|
||||||
* @return void
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function getWidgets()
|
public function getWidgets()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1154,6 +1154,8 @@ class Don extends CommonObject
|
|||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -1161,6 +1163,7 @@ class Don extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'date')) {
|
if (property_exists($this, 'date')) {
|
||||||
$return .= ' | <span class="opacitymedium" >'.$langs->trans("Date").'</span> : <span class="info-box-label">'.dol_print_date($this->date).'</span>';
|
$return .= ' | <span class="opacitymedium" >'.$langs->trans("Date").'</span> : <span class="info-box-label">'.dol_print_date($this->date).'</span>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -106,7 +106,7 @@ class ConferenceOrBooth extends ActionComm
|
|||||||
'id' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"),
|
'id' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"),
|
||||||
'ref' => array('type'=>'integer', 'label'=>'Ref', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>2, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'csslist'=>'left', 'comment'=>"Id"),
|
'ref' => array('type'=>'integer', 'label'=>'Ref', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>2, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'csslist'=>'left', 'comment'=>"Id"),
|
||||||
'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>'1', 'position'=>30, 'notnull'=>1, 'visible'=>1, 'searchall'=>1, 'css'=>'minwidth300', 'csslist'=>'tdoverflowmax125', 'help'=>"OrganizationEvenLabelName", 'showoncombobox'=>'1', 'autofocusoncreate'=>1),
|
'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>'1', 'position'=>30, 'notnull'=>1, 'visible'=>1, 'searchall'=>1, 'css'=>'minwidth300', 'csslist'=>'tdoverflowmax125', 'help'=>"OrganizationEvenLabelName", 'showoncombobox'=>'1', 'autofocusoncreate'=>1),
|
||||||
'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1:(t.usage_organize_event:=:1)', 'label'=>'Project', 'enabled'=>"isModEnabled('project')", 'position'=>52, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'picto'=>'project', 'css'=>'tdoverflowmax150 maxwidth500', 'csslist'=>'width100'),
|
'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1:(t.usage_organize_event:=:1)', 'label'=>'Project', 'enabled'=>"isModEnabled('project')", 'position'=>52, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'picto'=>'project', 'css'=>'tdoverflowmax150 maxwidth500', 'csslist'=>'nowraponall'),
|
||||||
'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:((status:=:1) AND (entity:IN:__SHARED_ENTITIES__))', 'label'=>'ThirdParty', 'enabled'=>'$conf->societe->enabled', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'help'=>"OrganizationEventLinkToThirdParty", 'picto'=>'company', 'csslist'=>'tdoverflowmax125', 'css'=>'maxwidth500'),
|
'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:((status:=:1) AND (entity:IN:__SHARED_ENTITIES__))', 'label'=>'ThirdParty', 'enabled'=>'$conf->societe->enabled', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'help'=>"OrganizationEventLinkToThirdParty", 'picto'=>'company', 'csslist'=>'tdoverflowmax125', 'css'=>'maxwidth500'),
|
||||||
'note' => array('type'=>'html', 'label'=>'Description', 'enabled'=>'1', 'position'=>60, 'notnull'=>0, 'visible'=>3),
|
'note' => array('type'=>'html', 'label'=>'Description', 'enabled'=>'1', 'position'=>60, 'notnull'=>0, 'visible'=>3),
|
||||||
'fk_action' => array('type'=>'sellist:c_actioncomm:libelle:id::module LIKE (\'%@eventorganization\')', 'label'=>'Format', 'enabled'=>'1', 'position'=>60, 'notnull'=>1, 'visible'=>1, 'css'=>'width100', 'csslist'=>'tdoverflowmax100'),
|
'fk_action' => array('type'=>'sellist:c_actioncomm:libelle:id::module LIKE (\'%@eventorganization\')', 'label'=>'Format', 'enabled'=>'1', 'position'=>60, 'notnull'=>1, 'visible'=>1, 'css'=>'width100', 'csslist'=>'tdoverflowmax100'),
|
||||||
|
|||||||
@ -921,9 +921,9 @@ while ($i < $imaxinloop) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (in_array($val['type'], array('timestamp'))) {
|
if (in_array($val['type'], array('timestamp'))) {
|
||||||
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap';
|
$cssforfield .= ($cssforfield ? ' ' : '').'nowraponall';
|
||||||
} elseif ($key == 'ref') {
|
} elseif ($key == 'ref') {
|
||||||
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap';
|
$cssforfield .= ($cssforfield ? ' ' : '').'nowraponall';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('rowid', 'ref', 'status')) && empty($val['arrayofkeyval'])) {
|
if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('rowid', 'ref', 'status')) && empty($val['arrayofkeyval'])) {
|
||||||
|
|||||||
@ -2375,7 +2375,7 @@ class ExpenseReport extends CommonObject
|
|||||||
* Return list of people with permission to validate expense reports.
|
* Return list of people with permission to validate expense reports.
|
||||||
* Search for permission "approve expense report"
|
* Search for permission "approve expense report"
|
||||||
*
|
*
|
||||||
* @return array Array of user ids
|
* @return array|int Array of user ids, <0 if KO
|
||||||
*/
|
*/
|
||||||
public function fetch_users_approver_expensereport()
|
public function fetch_users_approver_expensereport()
|
||||||
{
|
{
|
||||||
@ -2772,7 +2772,10 @@ class ExpenseReport extends CommonObject
|
|||||||
*/
|
*/
|
||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $langs, $selected,$arrayofselected;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -2780,9 +2783,6 @@ class ExpenseReport extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
||||||
if (in_array($this->id, $arrayofselected)) {
|
|
||||||
$selected = 1;
|
|
||||||
}
|
|
||||||
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'fk_user_author') && !empty($this->id)) {
|
if (property_exists($this, 'fk_user_author') && !empty($this->id)) {
|
||||||
$return .= '<br><span class="info-box-label">'.$this->fk_user_author.'</span>';
|
$return .= '<br><span class="info-box-label">'.$this->fk_user_author.'</span>';
|
||||||
|
|||||||
@ -724,6 +724,9 @@ class PaymentExpenseReport extends CommonObject
|
|||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -731,6 +734,7 @@ class PaymentExpenseReport extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'datep')) {
|
if (property_exists($this, 'datep')) {
|
||||||
$return .= '<br><span class="opacitymedium">'.$langs->trans("Date").'</span> : <span class="info-box-label">'.dol_print_date($this->db->jdate($this->datep), 'dayhour').'</span>';
|
$return .= '<br><span class="opacitymedium">'.$langs->trans("Date").'</span> : <span class="info-box-label">'.dol_print_date($this->db->jdate($this->datep), 'dayhour').'</span>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1488,6 +1488,9 @@ class Fichinter extends CommonObject
|
|||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -1496,6 +1499,7 @@ class Fichinter extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'socid')) {
|
if (property_exists($this, 'socid')) {
|
||||||
$return .= '<br><span class="info-box-label">'.$this->socid.'</span>';
|
$return .= '<br><span class="info-box-label">'.$this->socid.'</span>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -529,7 +529,7 @@ class CommandeFournisseur extends CommonOrder
|
|||||||
|
|
||||||
$this->lines = array();
|
$this->lines = array();
|
||||||
|
|
||||||
$sql = "SELECT l.rowid, l.ref as ref_supplier, l.fk_product, l.product_type, l.label, l.description, l.qty,";
|
$sql = "SELECT l.rowid, l.fk_commande, l.ref as ref_supplier, l.fk_product, l.product_type, l.label, l.description, l.qty,";
|
||||||
$sql .= " l.vat_src_code, l.tva_tx, l.remise_percent, l.subprice,";
|
$sql .= " l.vat_src_code, l.tva_tx, l.remise_percent, l.subprice,";
|
||||||
$sql .= " l.localtax1_tx, l. localtax2_tx, l.localtax1_type, l. localtax2_type, l.total_localtax1, l.total_localtax2,";
|
$sql .= " l.localtax1_tx, l. localtax2_tx, l.localtax1_type, l. localtax2_type, l.total_localtax1, l.total_localtax2,";
|
||||||
$sql .= " l.total_ht, l.total_tva, l.total_ttc, l.special_code, l.fk_parent_line, l.rang,";
|
$sql .= " l.total_ht, l.total_tva, l.total_ttc, l.special_code, l.fk_parent_line, l.rang,";
|
||||||
@ -559,6 +559,7 @@ class CommandeFournisseur extends CommonOrder
|
|||||||
$line = new CommandeFournisseurLigne($this->db);
|
$line = new CommandeFournisseurLigne($this->db);
|
||||||
|
|
||||||
$line->id = $objp->rowid;
|
$line->id = $objp->rowid;
|
||||||
|
$line->fk_commande = $objp->fk_commande;
|
||||||
$line->desc = $objp->description;
|
$line->desc = $objp->description;
|
||||||
$line->description = $objp->description;
|
$line->description = $objp->description;
|
||||||
$line->qty = $objp->qty;
|
$line->qty = $objp->qty;
|
||||||
@ -3633,6 +3634,9 @@ class CommandeFournisseur extends CommonOrder
|
|||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -3641,6 +3645,7 @@ class CommandeFournisseur extends CommonOrder
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'socid') || property_exists($this, 'total_tva')) {
|
if (property_exists($this, 'socid') || property_exists($this, 'total_tva')) {
|
||||||
$return .='<br><span class="info-box-label amount">'.$this->socid.'</span>';
|
$return .='<br><span class="info-box-label amount">'.$this->socid.'</span>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3286,6 +3286,9 @@ class FactureFournisseur extends CommonInvoice
|
|||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -3293,6 +3296,7 @@ class FactureFournisseur extends CommonInvoice
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'socid')) {
|
if (property_exists($this, 'socid')) {
|
||||||
$return .= ' | <span class="info-box-label">'.$this->socid.'</span>';
|
$return .= ' | <span class="info-box-label">'.$this->socid.'</span>';
|
||||||
}
|
}
|
||||||
@ -3307,7 +3311,8 @@ class FactureFournisseur extends CommonInvoice
|
|||||||
$return .= '<br><span class="opacitymedium">'.$langs->trans("AmountHT").'</span> : <span class="info-box-label amount">'.price($this->total_ht).'</span>';
|
$return .= '<br><span class="opacitymedium">'.$langs->trans("AmountHT").'</span> : <span class="info-box-label amount">'.price($this->total_ht).'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'getLibStatut')) {
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
$alreadypaid = (empty($arraydata['alreadypaid']) ? 0 : $arraydata['alreadypaid']);
|
||||||
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3, $alreadypaid).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -2086,7 +2086,7 @@ if ($action == 'create') {
|
|||||||
}
|
}
|
||||||
print '<tr><td class="titlefield">'.$langs->trans("Date").'</td><td>';
|
print '<tr><td class="titlefield">'.$langs->trans("Date").'</td><td>';
|
||||||
print $object->date_commande ? dol_print_date($object->date_commande, $usehourmin ? 'dayhour' : 'day') : '';
|
print $object->date_commande ? dol_print_date($object->date_commande, $usehourmin ? 'dayhour' : 'day') : '';
|
||||||
if ($object->hasDelay() && !empty($object->date_delivery) && !empty($object->date_commande)) {
|
if ($object->hasDelay() && !empty($object->delivery_date) && !empty($object->date_commande)) {
|
||||||
print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning");
|
print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning");
|
||||||
}
|
}
|
||||||
print "</td></tr>";
|
print "</td></tr>";
|
||||||
@ -2256,7 +2256,7 @@ if ($action == 'create') {
|
|||||||
$usehourmin = 1;
|
$usehourmin = 1;
|
||||||
}
|
}
|
||||||
print $form->selectDate($object->delivery_date ? $object->delivery_date : -1, 'liv_', $usehourmin, $usehourmin, '', "setdate_livraison");
|
print $form->selectDate($object->delivery_date ? $object->delivery_date : -1, 'liv_', $usehourmin, $usehourmin, '', "setdate_livraison");
|
||||||
print '<input type="submit" class="button button-edit" value="'.$langs->trans('Modify').'">';
|
print '<input type="submit" class="button button-edit smallpaddingimp valign middle" value="'.$langs->trans('Modify').'">';
|
||||||
print '</form>';
|
print '</form>';
|
||||||
} else {
|
} else {
|
||||||
$usehourmin = 'day';
|
$usehourmin = 'day';
|
||||||
@ -2264,7 +2264,7 @@ if ($action == 'create') {
|
|||||||
$usehourmin = 'dayhour';
|
$usehourmin = 'dayhour';
|
||||||
}
|
}
|
||||||
print $object->delivery_date ? dol_print_date($object->delivery_date, $usehourmin) : ' ';
|
print $object->delivery_date ? dol_print_date($object->delivery_date, $usehourmin) : ' ';
|
||||||
if ($object->hasDelay() && !empty($object->delivery_date)) {
|
if ($object->hasDelay() && !empty($object->delivery_date) && ($object->statut == $object::STATUS_ORDERSENT || $object->statut == $object::STATUS_RECEIVED_PARTIALLY)) {
|
||||||
print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning");
|
print ' '.img_picto($langs->trans("Late").' : '.$object->showDelay(), "warning");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -2476,6 +2476,8 @@ class Holiday extends CommonObject
|
|||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -2483,6 +2485,7 @@ class Holiday extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.$arraydata['user']->getNomUrl(-1).'</span>';
|
$return .= '<span class="info-box-ref">'.$arraydata['user']->getNomUrl(-1).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'fk_type')) {
|
if (property_exists($this, 'fk_type')) {
|
||||||
$return .= '<br><span class="opacitymedium">'.$langs->trans("Type").'</span> : ';
|
$return .= '<br><span class="opacitymedium">'.$langs->trans("Type").'</span> : ';
|
||||||
$return .= '<span class="info_box-label maxwidth100">'.arraydata['labeltype'].'</span>';
|
$return .= '<span class="info_box-label maxwidth100">'.arraydata['labeltype'].'</span>';
|
||||||
|
|||||||
@ -1066,6 +1066,9 @@ class Evaluation extends CommonObject
|
|||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $selected, $langs;
|
global $selected, $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
|
|||||||
@ -1066,6 +1066,8 @@ class Job extends CommonObject
|
|||||||
{
|
{
|
||||||
global $selected, $langs;
|
global $selected, $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
|
|||||||
@ -1129,6 +1129,9 @@ class Position extends CommonObject
|
|||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $selected, $langs;
|
global $selected, $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
|
|||||||
@ -1125,6 +1125,8 @@ class Skill extends CommonObject
|
|||||||
{
|
{
|
||||||
global $selected, $langs;
|
global $selected, $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
|
|||||||
@ -134,10 +134,10 @@ $object->fields = dol_sort_array($object->fields, 'position');
|
|||||||
$arrayfields = dol_sort_array($arrayfields, 'position');
|
$arrayfields = dol_sort_array($arrayfields, 'position');
|
||||||
|
|
||||||
// Permissions
|
// Permissions
|
||||||
$permissiontoread = $user->hasRight('hrm', 'evaluation', 'read');
|
$permissiontoread = $user->hasRight('hrm', 'evaluation', 'read');
|
||||||
$permissiontoreadall = $user->hasRight('hrm', 'evaluation', 'readall');
|
$permissiontoreadall = $user->hasRight('hrm', 'evaluation', 'readall');
|
||||||
$permissiontoadd = $user->hasRight('hrm', 'evaluation', 'write');
|
$permissiontoadd = $user->hasRight('hrm', 'evaluation', 'write');
|
||||||
$permissiontodelete = $user->hasRight('hrm', 'evaluation', 'delete');
|
$permissiontodelete = $user->hasRight('hrm', 'evaluation', 'delete');
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
if (!isModEnabled('hrm')) {
|
if (!isModEnabled('hrm')) {
|
||||||
|
|||||||
@ -32,8 +32,8 @@
|
|||||||
|
|
||||||
-- Payment modes
|
-- Payment modes
|
||||||
insert into llx_c_paiement (id,code,libelle,type,active) values ( 1, 'TIP', 'TIP', 2, 0);
|
insert into llx_c_paiement (id,code,libelle,type,active) values ( 1, 'TIP', 'TIP', 2, 0);
|
||||||
insert into llx_c_paiement (id,code,libelle,type,active) values ( 2, 'VIR', 'Transfer', 2, 1);
|
insert into llx_c_paiement (id,code,libelle,type,active) values ( 2, 'VIR', 'Credit Transfer', 2, 1);
|
||||||
insert into llx_c_paiement (id,code,libelle,type,active) values ( 3, 'PRE', 'Debit order', 2, 1);
|
insert into llx_c_paiement (id,code,libelle,type,active) values ( 3, 'PRE', 'Direct Debit', 2, 1);
|
||||||
insert into llx_c_paiement (id,code,libelle,type,active) values ( 4, 'LIQ', 'Cash', 2, 1);
|
insert into llx_c_paiement (id,code,libelle,type,active) values ( 4, 'LIQ', 'Cash', 2, 1);
|
||||||
insert into llx_c_paiement (id,code,libelle,type,active) values ( 6, 'CB', 'Credit card', 2, 1);
|
insert into llx_c_paiement (id,code,libelle,type,active) values ( 6, 'CB', 'Credit card', 2, 1);
|
||||||
insert into llx_c_paiement (id,code,libelle,type,active) values ( 7, 'CHQ', 'Cheque', 2, 1);
|
insert into llx_c_paiement (id,code,libelle,type,active) values ( 7, 'CHQ', 'Cheque', 2, 1);
|
||||||
|
|||||||
@ -98,3 +98,5 @@ UPDATE llx_prelevement_demande SET type = 'ban' WHERE ext_payment_id IS NULL AND
|
|||||||
|
|
||||||
ALTER TABLE llx_recruitment_recruitmentcandidature ADD COLUMN fk_user integer;
|
ALTER TABLE llx_recruitment_recruitmentcandidature ADD COLUMN fk_user integer;
|
||||||
|
|
||||||
|
ALTER TABLE llx_bordereau_cheque ADD COLUMN type VARCHAR(6) DEFAULT 'CHQ';
|
||||||
|
|
||||||
|
|||||||
@ -26,6 +26,7 @@ create table llx_bordereau_cheque
|
|||||||
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||||
ref varchar(30) NOT NULL, -- ref
|
ref varchar(30) NOT NULL, -- ref
|
||||||
ref_ext varchar(255), -- ref_ext
|
ref_ext varchar(255), -- ref_ext
|
||||||
|
type varchar(6) DEFAULT 'CHQ', -- 'CHQ', 'TRA', ...
|
||||||
datec datetime NOT NULL,
|
datec datetime NOT NULL,
|
||||||
date_bordereau date,
|
date_bordereau date,
|
||||||
amount double(24,8) NOT NULL,
|
amount double(24,8) NOT NULL,
|
||||||
|
|||||||
@ -4222,12 +4222,12 @@ function migrate_delete_old_dir($db, $langs, $conf)
|
|||||||
* @param Conf $conf Object conf
|
* @param Conf $conf Object conf
|
||||||
* @param array $listofmodule List of modules, like array('MODULE_KEY_NAME'=>', $reloadmode)
|
* @param array $listofmodule List of modules, like array('MODULE_KEY_NAME'=>', $reloadmode)
|
||||||
* @param int $force 1=Reload module even if not already loaded
|
* @param int $force 1=Reload module even if not already loaded
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $force = 0)
|
function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $force = 0)
|
||||||
{
|
{
|
||||||
if (count($listofmodule) == 0) {
|
if (count($listofmodule) == 0) {
|
||||||
return;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
dolibarr_install_syslog("upgrade2::migrate_reload_modules force=".$force.", listofmodule=".join(',', array_keys($listofmodule)));
|
dolibarr_install_syslog("upgrade2::migrate_reload_modules force=".$force.", listofmodule=".join(',', array_keys($listofmodule)));
|
||||||
|
|||||||
@ -1125,7 +1125,10 @@ class KnowledgeRecord extends CommonObject
|
|||||||
*/
|
*/
|
||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $langs, $selected,$arrayofselected;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -1133,9 +1136,6 @@ class KnowledgeRecord extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
||||||
if (in_array($this->id, $arrayofselected)) {
|
|
||||||
$selected = 1;
|
|
||||||
}
|
|
||||||
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'lang') && !empty($this->lang)) {
|
if (property_exists($this, 'lang') && !empty($this->lang)) {
|
||||||
//$return .= '<br><span class="opacitymedium">'.$langs->trans("Language").'</span> : <span class="info-box-label" title="'.$langs->trans("Language_".$this->lang).'">'.$langs->trans("Language_".$this->lang, '', '', '', '', 12).'</span>';
|
//$return .= '<br><span class="opacitymedium">'.$langs->trans("Language").'</span> : <span class="info-box-label" title="'.$langs->trans("Language_".$this->lang).'">'.$langs->trans("Language_".$this->lang, '', '', '', '', 12).'</span>';
|
||||||
|
|||||||
@ -512,7 +512,7 @@ ClickToShowDescription=Click to show description
|
|||||||
DependsOn=This module needs the module(s)
|
DependsOn=This module needs the module(s)
|
||||||
RequiredBy=This module is required by module(s)
|
RequiredBy=This module is required by module(s)
|
||||||
TheKeyIsTheNameOfHtmlField=This is the name of the HTML field. Technical knowledge is required to read the content of the HTML page to get the key name of a field.
|
TheKeyIsTheNameOfHtmlField=This is the name of the HTML field. Technical knowledge is required to read the content of the HTML page to get the key name of a field.
|
||||||
PageUrlForDefaultValues=You must enter the relative path of the page URL. If you include parameters in URL, the default values will be effective if all parameters are set to same value.
|
PageUrlForDefaultValues=You must enter the relative path of the page URL. If you include parameters in URL, it will be effective if all parameters in browsed URL have the value defined here.
|
||||||
PageUrlForDefaultValuesCreate=<br>Example:<br>For the form to create a new third party, it is <strong>%s</strong>.<br>For URL of external modules installed into custom directory, do not include the "custom/", so use path like <strong>mymodule/mypage.php</strong> and not custom/mymodule/mypage.php.<br>If you want default value only if url has some parameter, you can use <strong>%s</strong>
|
PageUrlForDefaultValuesCreate=<br>Example:<br>For the form to create a new third party, it is <strong>%s</strong>.<br>For URL of external modules installed into custom directory, do not include the "custom/", so use path like <strong>mymodule/mypage.php</strong> and not custom/mymodule/mypage.php.<br>If you want default value only if url has some parameter, you can use <strong>%s</strong>
|
||||||
PageUrlForDefaultValuesList=<br>Example:<br>For the page that lists third parties, it is <strong>%s</strong>.<br>For URL of external modules installed into custom directory, do not include the "custom/" so use a path like <strong>mymodule/mypagelist.php</strong> and not custom/mymodule/mypagelist.php.<br>If you want default value only if url has some parameter, you can use <strong>%s</strong>
|
PageUrlForDefaultValuesList=<br>Example:<br>For the page that lists third parties, it is <strong>%s</strong>.<br>For URL of external modules installed into custom directory, do not include the "custom/" so use a path like <strong>mymodule/mypagelist.php</strong> and not custom/mymodule/mypagelist.php.<br>If you want default value only if url has some parameter, you can use <strong>%s</strong>
|
||||||
AlsoDefaultValuesAreEffectiveForActionCreate=Also note that overwritting default values for form creation works only for pages that were correctly designed (so with parameter action=create or presend...)
|
AlsoDefaultValuesAreEffectiveForActionCreate=Also note that overwritting default values for form creation works only for pages that were correctly designed (so with parameter action=create or presend...)
|
||||||
|
|||||||
@ -120,6 +120,7 @@ ValidateCheckReceipt=Validate this check receipt?
|
|||||||
ConfirmValidateCheckReceipt=Are you sure that you want to submit this check receipt for validation? No changes will be possible once validated.
|
ConfirmValidateCheckReceipt=Are you sure that you want to submit this check receipt for validation? No changes will be possible once validated.
|
||||||
DeleteCheckReceipt=Delete this check receipt?
|
DeleteCheckReceipt=Delete this check receipt?
|
||||||
ConfirmDeleteCheckReceipt=Are you sure you want to delete this check receipt?
|
ConfirmDeleteCheckReceipt=Are you sure you want to delete this check receipt?
|
||||||
|
DocumentsForDeposit=Documents to deposit at the bank
|
||||||
BankChecks=Bank checks
|
BankChecks=Bank checks
|
||||||
BankChecksToReceipt=Checks awaiting deposit
|
BankChecksToReceipt=Checks awaiting deposit
|
||||||
BankChecksToReceiptShort=Checks awaiting deposit
|
BankChecksToReceiptShort=Checks awaiting deposit
|
||||||
@ -145,6 +146,7 @@ BackToAccount=Back to account
|
|||||||
ShowAllAccounts=Show for all accounts
|
ShowAllAccounts=Show for all accounts
|
||||||
FutureTransaction=Future transaction. Unable to reconcile.
|
FutureTransaction=Future transaction. Unable to reconcile.
|
||||||
SelectChequeTransactionAndGenerate=Select/filter the checks which are to be included in the check deposit receipt. Then, click on "Create".
|
SelectChequeTransactionAndGenerate=Select/filter the checks which are to be included in the check deposit receipt. Then, click on "Create".
|
||||||
|
SelectPaymentTransactionAndGenerate=Select/filter the documents which are to be included in the %s deposit receipt. Then, click on "Create".
|
||||||
InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD
|
InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD
|
||||||
EventualyAddCategory=Eventually, specify a category in which to classify the records
|
EventualyAddCategory=Eventually, specify a category in which to classify the records
|
||||||
ToConciliate=To reconcile?
|
ToConciliate=To reconcile?
|
||||||
|
|||||||
@ -509,13 +509,14 @@ UseLine=Apply
|
|||||||
UseDiscount=Use discount
|
UseDiscount=Use discount
|
||||||
UseCredit=Use credit
|
UseCredit=Use credit
|
||||||
UseCreditNoteInInvoicePayment=Reduce amount to pay with this credit
|
UseCreditNoteInInvoicePayment=Reduce amount to pay with this credit
|
||||||
MenuChequeDeposits=Check Deposits
|
MenuChequeDeposits=Deposits slips
|
||||||
MenuCheques=Checks
|
MenuCheques=Checks
|
||||||
MenuChequesReceipts=Check receipts
|
MenuChequesReceipts=Deposit slips
|
||||||
NewChequeDeposit=New deposit
|
NewChequeDeposit=New deposit slip
|
||||||
ChequesReceipts=Check receipts
|
ChequesReceipts=Cheque deposit slips
|
||||||
ChequesArea=Check deposits area
|
DocumentsDepositArea=Deposit slip area
|
||||||
ChequeDeposits=Check deposits
|
ChequesArea=Deposit slips area
|
||||||
|
ChequeDeposits=Deposit slips
|
||||||
Cheques=Checks
|
Cheques=Checks
|
||||||
DepositId=Id deposit
|
DepositId=Id deposit
|
||||||
NbCheque=Number of checks
|
NbCheque=Number of checks
|
||||||
|
|||||||
@ -130,14 +130,17 @@ SalesTurnoverMinimum=Minimum turnover
|
|||||||
ByExpenseIncome=By expenses & incomes
|
ByExpenseIncome=By expenses & incomes
|
||||||
ByThirdParties=By third parties
|
ByThirdParties=By third parties
|
||||||
ByUserAuthorOfInvoice=By invoice author
|
ByUserAuthorOfInvoice=By invoice author
|
||||||
CheckReceipt=Check deposit
|
CheckReceipt=Deposit slip
|
||||||
CheckReceiptShort=Check deposit
|
CheckReceiptShort=Deposit slip
|
||||||
LastCheckReceiptShort=Latest %s check receipts
|
LastCheckReceiptShort=Latest %s deposit slips
|
||||||
|
LastPaymentForDepositShort=Latest %s %s deposit slips
|
||||||
NewCheckReceipt=New discount
|
NewCheckReceipt=New discount
|
||||||
NewCheckDeposit=New check deposit
|
NewCheckDeposit=New deposit slip
|
||||||
NewCheckDepositOn=Create receipt for deposit on account: %s
|
NewCheckDepositOn=Create receipt for deposit on account: %s
|
||||||
NoWaitingChecks=No checks awaiting deposit.
|
NoWaitingChecks=No checks awaiting deposit.
|
||||||
|
NoWaitingPaymentForDeposit=No %s payment awaiting deposit.
|
||||||
DateChequeReceived=Check receiving date
|
DateChequeReceived=Check receiving date
|
||||||
|
DatePaymentReceived=Date of document reception
|
||||||
NbOfCheques=No. of checks
|
NbOfCheques=No. of checks
|
||||||
PaySocialContribution=Pay a social/fiscal tax
|
PaySocialContribution=Pay a social/fiscal tax
|
||||||
PayVAT=Pay a VAT declaration
|
PayVAT=Pay a VAT declaration
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
ContractsArea=Contracts area
|
ContractsArea=Contracts area
|
||||||
ListOfContracts=List of contracts
|
ListOfContracts=List of contracts
|
||||||
AllContracts=All contracts
|
AllContracts=All contracts
|
||||||
ContractCard=Contract card
|
ContractCard=Contract
|
||||||
ContractStatusNotRunning=Not running
|
ContractStatusNotRunning=Not running
|
||||||
ContractStatusDraft=Draft
|
ContractStatusDraft=Draft
|
||||||
ContractStatusValidated=Validated
|
ContractStatusValidated=Validated
|
||||||
|
|||||||
@ -32,6 +32,7 @@ Language_en_AU=English (Australia)
|
|||||||
Language_en_CA=English (Canada)
|
Language_en_CA=English (Canada)
|
||||||
Language_en_GB=English (United Kingdom)
|
Language_en_GB=English (United Kingdom)
|
||||||
Language_en_IN=English (India)
|
Language_en_IN=English (India)
|
||||||
|
Language_en_MY=English (Myanmar)
|
||||||
Language_en_NZ=English (New Zealand)
|
Language_en_NZ=English (New Zealand)
|
||||||
Language_en_SA=English (Saudi Arabia)
|
Language_en_SA=English (Saudi Arabia)
|
||||||
Language_en_SG=English (Singapore)
|
Language_en_SG=English (Singapore)
|
||||||
|
|||||||
@ -174,3 +174,6 @@ MenuDeletedSuccessfuly=Menu has been successfully deleted
|
|||||||
MenuAddedSuccessfuly=Menu has been successfully added
|
MenuAddedSuccessfuly=Menu has been successfully added
|
||||||
MenuUpdatedSuccessfuly=Menu has been successfully updated
|
MenuUpdatedSuccessfuly=Menu has been successfully updated
|
||||||
ApiObjectDeleted=API for object %s has been successfully deleted
|
ApiObjectDeleted=API for object %s has been successfully deleted
|
||||||
|
CRUDRead=Read
|
||||||
|
CRUDCreateWrite=Create or Update
|
||||||
|
FailedToAddCodeIntoDescriptor=Failed to add code into descriptor. Check that the string comment "%s" is still present into the file.
|
||||||
@ -733,6 +733,9 @@ class Loan extends CommonObject
|
|||||||
public function getKanbanView($option = '')
|
public function getKanbanView($option = '')
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -740,6 +743,7 @@ class Loan extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl(1) : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'capital')) {
|
if (property_exists($this, 'capital')) {
|
||||||
$return .= ' | <span class="opacitymedium">'.$langs->trans("Amount").'</span> : <span class="info-box-label amount">'.price($this->capital).'</span>';
|
$return .= ' | <span class="opacitymedium">'.$langs->trans("Amount").'</span> : <span class="info-box-label amount">'.price($this->capital).'</span>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -401,27 +401,29 @@ if ($dirins && in_array($action, array('initapi', 'initphpunit', 'initpagecontac
|
|||||||
$modulename = ucfirst($module); // Force first letter in uppercase
|
$modulename = ucfirst($module); // Force first letter in uppercase
|
||||||
$objectname = $tabobj;
|
$objectname = $tabobj;
|
||||||
$varnametoupdate = '';
|
$varnametoupdate = '';
|
||||||
|
$dirins = $listofmodules[strtolower($module)]['moduledescriptorrootpath'];
|
||||||
|
$destdir = $dirins.'/'.strtolower($module);
|
||||||
|
|
||||||
|
// Get list of existing objects
|
||||||
|
$objects = array();
|
||||||
|
$listofobject = dol_dir_list($destdir.'/class', 'files', 0, '\.class\.php$');
|
||||||
|
foreach ($listofobject as $fileobj) {
|
||||||
|
if (preg_match('/^api_/', $fileobj['name'])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (preg_match('/^actions_/', $fileobj['name'])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$tmpcontent = file_get_contents($fileobj['fullname']);
|
||||||
|
$reg = array();
|
||||||
|
if (preg_match('/class\s+([^\s]*)\s+extends\s+CommonObject/ims', $tmpcontent, $reg)) {
|
||||||
|
$objectnameloop = $reg[1];
|
||||||
|
$objects[$fileobj['fullname']] = $objectnameloop;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($action == 'initapi') {
|
if ($action == 'initapi') {
|
||||||
$dirins = $listofmodules[strtolower($module)]['moduledescriptorrootpath'];
|
|
||||||
$destdir = $dirins.'/'.strtolower($module);
|
|
||||||
$listofobject = dol_dir_list($destdir.'/class', 'files', 0, '\.class\.php$');
|
|
||||||
$objects = array();
|
|
||||||
foreach ($listofobject as $fileobj) {
|
|
||||||
if (preg_match('/^api_/', $fileobj['name'])) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (preg_match('/^actions_/', $fileobj['name'])) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$tmpcontent = file_get_contents($fileobj['fullname']);
|
|
||||||
$reg = array();
|
|
||||||
if (preg_match('/class\s+([^\s]*)\s+extends\s+CommonObject/ims', $tmpcontent, $reg)) {
|
|
||||||
$objectnameloop = $reg[1];
|
|
||||||
$objects[] = $objectnameloop;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (file_exists($dirins.'/'.strtolower($module).'/class/api_'.strtolower($module).'.class.php')) {
|
if (file_exists($dirins.'/'.strtolower($module).'/class/api_'.strtolower($module).'.class.php')) {
|
||||||
$result = dol_copy(DOL_DOCUMENT_ROOT.'/modulebuilder/template/class/api_mymodule.class.php', $dirins.'/'.strtolower($module).'/class/api_'.strtolower($module).'.class.php', 0, 1);
|
$result = dol_copy(DOL_DOCUMENT_ROOT.'/modulebuilder/template/class/api_mymodule.class.php', $dirins.'/'.strtolower($module).'/class/api_'.strtolower($module).'.class.php', 0, 1);
|
||||||
}
|
}
|
||||||
@ -482,6 +484,7 @@ if ($dirins && in_array($action, array('initapi', 'initphpunit', 'initpagecontac
|
|||||||
'MYOBJECT'=>strtoupper($objectname),
|
'MYOBJECT'=>strtoupper($objectname),
|
||||||
'---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '')
|
'---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '')
|
||||||
);
|
);
|
||||||
|
|
||||||
if (count($objects) > 1) {
|
if (count($objects) > 1) {
|
||||||
$file = $destfile;
|
$file = $destfile;
|
||||||
$content = file($file);
|
$content = file($file);
|
||||||
@ -913,10 +916,16 @@ if ($dirins && $action == 'addlanguage' && !empty($module)) {
|
|||||||
setEventMessages($langs->trans("ErrorFailToCopyFile", $srcfile, $destfile), null, 'errors');
|
setEventMessages($langs->trans("ErrorFailToCopyFile", $srcfile, $destfile), null, 'errors');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$srcfile = $diroflang.'/langs/en_US';
|
$srcdir = $diroflang.'/langs/en_US';
|
||||||
$destfile = $diroflang.'/langs/'.$newlangcode;
|
$srcfile = $diroflang.'/langs/en_US/'.$modulelowercase.'.lang';
|
||||||
|
$destdir = $diroflang.'/langs/'.$newlangcode;
|
||||||
|
|
||||||
$result = dolCopyDir($srcfile, $destfile, 0, 0);
|
$arrayofreplacement = array();
|
||||||
|
if (!dol_is_dir($srcfile) || !dol_is_file($srcfile)) {
|
||||||
|
$srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template/langs/en_US';
|
||||||
|
$arrayofreplacement = array('mymodule'=>$modulelowercase);
|
||||||
|
}
|
||||||
|
$result = dolCopyDir($srcdir, $destdir, 0, 0, $arrayofreplacement);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Language")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Language")), null, 'errors');
|
||||||
@ -924,19 +933,18 @@ if ($dirins && $action == 'addlanguage' && !empty($module)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// remove/delete File
|
// Remove/delete File
|
||||||
if ($dirins && $action == 'confirm_removefile' && !empty($module)) {
|
if ($dirins && $action == 'confirm_removefile' && !empty($module)) {
|
||||||
$objectname = $tabobj;
|
$objectname = $tabobj;
|
||||||
|
|
||||||
$relativefilename = dol_sanitizePathName(GETPOST('file', 'restricthtml'));
|
|
||||||
$file_api = $dirins."/".$relativefilename;
|
|
||||||
|
|
||||||
//check if have more than one object
|
|
||||||
$dirins = $listofmodules[strtolower($module)]['moduledescriptorrootpath'];
|
$dirins = $listofmodules[strtolower($module)]['moduledescriptorrootpath'];
|
||||||
$destdir = $dirins.'/'.strtolower($module);
|
$destdir = $dirins.'/'.strtolower($module);
|
||||||
$listofobject = dol_dir_list($destdir.'/class', 'files', 0, '\.class\.php$');
|
|
||||||
$objects = array();
|
|
||||||
|
|
||||||
|
$relativefilename = dol_sanitizePathName(GETPOST('file', 'restricthtml'));
|
||||||
|
|
||||||
|
// Get list of existing objects
|
||||||
|
// TODO ALI This part of code is common at several places and is autonomous. So replace it with $objects = dolGetListOfObjectclasses($destdir);
|
||||||
|
$objects = array();
|
||||||
|
$listofobject = dol_dir_list($destdir.'/class', 'files', 0, '\.class\.php$');
|
||||||
foreach ($listofobject as $fileobj) {
|
foreach ($listofobject as $fileobj) {
|
||||||
if (preg_match('/^api_/', $fileobj['name'])) {
|
if (preg_match('/^api_/', $fileobj['name'])) {
|
||||||
continue;
|
continue;
|
||||||
@ -944,123 +952,66 @@ if ($dirins && $action == 'confirm_removefile' && !empty($module)) {
|
|||||||
if (preg_match('/^actions_/', $fileobj['name'])) {
|
if (preg_match('/^actions_/', $fileobj['name'])) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$tmpcontent = file_get_contents($fileobj['fullname']);
|
$tmpcontent = file_get_contents($fileobj['fullname']);
|
||||||
$reg = array();
|
$reg = array();
|
||||||
if (preg_match('/class\s+([^\s]*)\s+extends\s+CommonObject/ims', $tmpcontent, $reg)) {
|
if (preg_match('/class\s+([^\s]*)\s+extends\s+CommonObject/ims', $tmpcontent, $reg)) {
|
||||||
$objectnameloop = $reg[1];
|
$objectnameloop = $reg[1];
|
||||||
$objects[] = $objectnameloop;
|
$objects[$fileobj['fullname']] = $objectnameloop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$existObj = 0;
|
// Now we delete the file
|
||||||
$file = file_get_contents($file_api);
|
if ($relativefilename) {
|
||||||
$objs = array();
|
$dirnametodelete = dirname($relativefilename);
|
||||||
if (str_contains($file, $objectname)) {
|
$filetodelete = $dirins.'/'.$relativefilename;
|
||||||
$existObj++;
|
$dirtodelete = $dirins.'/'.$dirnametodelete;
|
||||||
}
|
|
||||||
if ($existObj && count($objects) > 1) {
|
$result = dol_delete_file($filetodelete);
|
||||||
$begin = '/*CRUD FOR '.strtoupper($objectname).'*/';
|
if (!$result) {
|
||||||
$end = '/*END CRUD FOR '.strtoupper($objectname).'*/';
|
setEventMessages($langs->trans("ErrorFailToDeleteFile", basename($filetodelete)), null, 'errors');
|
||||||
$varcomentedDel = "\t * @var ".$objectname." \$".strtolower($objectname)." {@type ".$objectname."}";
|
} else {
|
||||||
$propsDel .= "\tpublic \$".strtolower($objectname).";";
|
// If we delete a .sql file, we delete also the other .sql file
|
||||||
$constructObjDel .= "\t\t\$this->".strtolower($objectname)."= new ".$objectname."(\$this->db);";
|
if (preg_match('/\.sql$/', $relativefilename)) {
|
||||||
$content = file($file_api);
|
if (preg_match('/\.key\.sql$/', $relativefilename)) {
|
||||||
// for delete property and the initialization from the construct
|
$relativefilename = preg_replace('/\.key\.sql$/', '.sql', $relativefilename);
|
||||||
foreach ($content as $lineNumber => &$lineContent) {
|
$filetodelete = $dirins.'/'.$relativefilename;
|
||||||
if (strpos($lineContent, $varcomentedDel) !== false) {
|
$result = dol_delete_file($filetodelete);
|
||||||
$lineContent = '';
|
} elseif (preg_match('/\.sql$/', $relativefilename)) {
|
||||||
|
$relativefilename = preg_replace('/\.sql$/', '.key.sql', $relativefilename);
|
||||||
|
$filetodelete = $dirins.'/'.$relativefilename;
|
||||||
|
$result = dol_delete_file($filetodelete);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (strpos($lineContent, $propsDel) !== false) {
|
|
||||||
$lineContent = '';
|
if (dol_is_dir_empty($dirtodelete)) {
|
||||||
|
dol_delete_dir($dirtodelete);
|
||||||
}
|
}
|
||||||
if (strpos($lineContent, $constructObjDel) !== false) {
|
|
||||||
$lineContent = '';
|
// Update descriptor file to comment file
|
||||||
|
if (in_array($tab, array('css', 'js'))) {
|
||||||
|
$srcfile = $dirins.'/'.strtolower($module).'/core/modules/mod'.$module.'.class.php';
|
||||||
|
$arrayreplacement = array('/^\s*\''.preg_quote('/'.$relativefilename, '/').'\',*/m'=>' // \'/'.$relativefilename.'\',');
|
||||||
|
dolReplaceInFile($srcfile, $arrayreplacement, '', 0, 0, 1);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
$allContent = implode("", $content);
|
if (preg_match('/_extrafields/', $relativefilename)) {
|
||||||
file_put_contents($file_api, $allContent);
|
// Now we update the object file to set $isextrafieldmanaged to 0
|
||||||
// for delete methods of object
|
$srcfile = $dirins.'/'.strtolower($module).'/class/'.strtolower($objectname).'.class.php';
|
||||||
$handle = fopen($file_api, "r");
|
$arrayreplacement = array('/\$isextrafieldmanaged = 1;/' => '$isextrafieldmanaged = 0;');
|
||||||
$i = 1;
|
dolReplaceInFile($srcfile, $arrayreplacement, '', 0, 0, 1);
|
||||||
$lines = array();
|
|
||||||
while (($line = fgets($handle)) !== false) {
|
|
||||||
//search line begin
|
|
||||||
if (strpos($line, $begin) !== false) {
|
|
||||||
$start_line = $i;
|
|
||||||
// Copy lines until the end on array
|
|
||||||
while (($line = fgets($handle)) !== false) {
|
|
||||||
if (strpos($line, $end) !== false) {
|
|
||||||
$end_line = $i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
$lines[] = $line;
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
$allContent = implode("", $lines);
|
|
||||||
//var_dump($allContent);exit;
|
|
||||||
$check = dolReplaceInFile($file_api, array($allContent => ''));
|
|
||||||
if ($check) {
|
|
||||||
dolReplaceInFile($file_api, array($begin => '', $end => ''));
|
|
||||||
setEventMessages($langs->trans("ApiObjectDeleted", $langs->transnoentities($objectname)), null);
|
|
||||||
}
|
|
||||||
fclose($handle);
|
|
||||||
}
|
|
||||||
if (count($objects) == 1 && $existObj) {
|
|
||||||
if ($relativefilename) {
|
|
||||||
$dirnametodelete = dirname($relativefilename);
|
|
||||||
$filetodelete = $dirins.'/'.$relativefilename;
|
|
||||||
$dirtodelete = $dirins.'/'.$dirnametodelete;
|
|
||||||
|
|
||||||
$result = dol_delete_file($filetodelete);
|
// Now we update the lib file to set $showtabofpagexxx to 0
|
||||||
if (!$result) {
|
$varnametoupdate = '';
|
||||||
setEventMessages($langs->trans("ErrorFailToDeleteFile", basename($filetodelete)), null, 'errors');
|
$reg = array();
|
||||||
} else {
|
if (preg_match('/_([a-z]+)\.php$/', $relativefilename, $reg)) {
|
||||||
// If we delete a .sql file, we delete also the other .sql file
|
$varnametoupdate = 'showtabofpage'.$reg[1];
|
||||||
if (preg_match('/\.sql$/', $relativefilename)) {
|
}
|
||||||
if (preg_match('/\.key\.sql$/', $relativefilename)) {
|
if ($varnametoupdate) {
|
||||||
$relativefilename = preg_replace('/\.key\.sql$/', '.sql', $relativefilename);
|
$srcfile = $dirins.'/'.strtolower($module).'/lib/'.strtolower($module).'_'.strtolower($objectname).'.lib.php';
|
||||||
$filetodelete = $dirins.'/'.$relativefilename;
|
$arrayreplacement = array('/\$'.$varnametoupdate.' = 1;/' => '$'.$varnametoupdate.' = 0;');
|
||||||
$result = dol_delete_file($filetodelete);
|
dolReplaceInFile($srcfile, $arrayreplacement, '', 0, 0, 1);
|
||||||
} elseif (preg_match('/\.sql$/', $relativefilename)) {
|
|
||||||
$relativefilename = preg_replace('/\.sql$/', '.key.sql', $relativefilename);
|
|
||||||
$filetodelete = $dirins.'/'.$relativefilename;
|
|
||||||
$result = dol_delete_file($filetodelete);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dol_is_dir_empty($dirtodelete)) {
|
|
||||||
dol_delete_dir($dirtodelete);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update descriptor file to comment file
|
|
||||||
if (in_array($tab, array('css', 'js'))) {
|
|
||||||
$srcfile = $dirins.'/'.strtolower($module).'/core/modules/mod'.$module.'.class.php';
|
|
||||||
$arrayreplacement = array('/^\s*\''.preg_quote('/'.$relativefilename, '/').'\',*/m'=>' // \'/'.$relativefilename.'\',');
|
|
||||||
dolReplaceInFile($srcfile, $arrayreplacement, '', 0, 0, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (preg_match('/_extrafields/', $relativefilename)) {
|
|
||||||
// Now we update the object file to set $isextrafieldmanaged to 0
|
|
||||||
$srcfile = $dirins.'/'.strtolower($module).'/class/'.strtolower($objectname).'.class.php';
|
|
||||||
$arrayreplacement = array('/\$isextrafieldmanaged = 1;/' => '$isextrafieldmanaged = 0;');
|
|
||||||
dolReplaceInFile($srcfile, $arrayreplacement, '', 0, 0, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now we update the lib file to set $showtabofpagexxx to 0
|
|
||||||
$varnametoupdate = '';
|
|
||||||
$reg = array();
|
|
||||||
if (preg_match('/_([a-z]+)\.php$/', $relativefilename, $reg)) {
|
|
||||||
$varnametoupdate = 'showtabofpage'.$reg[1];
|
|
||||||
}
|
|
||||||
if ($varnametoupdate) {
|
|
||||||
$srcfile = $dirins.'/'.strtolower($module).'/lib/'.strtolower($module).'_'.strtolower($objectname).'.lib.php';
|
|
||||||
$arrayreplacement = array('/\$'.$varnametoupdate.' = 1;/' => '$'.$varnametoupdate.' = 0;');
|
|
||||||
dolReplaceInFile($srcfile, $arrayreplacement, '', 0, 0, 1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1074,9 +1025,12 @@ if ($dirins && $action == 'initobject' && $module && $objectname) {
|
|||||||
dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", (int) $conf->global->MAIN_IHM_PARAMS_REV + 1, 'chaine', 0, '', $conf->entity);
|
dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", (int) $conf->global->MAIN_IHM_PARAMS_REV + 1, 'chaine', 0, '', $conf->entity);
|
||||||
if ($result) {
|
if ($result) {
|
||||||
setEventMessages($result, null, 'errors');
|
setEventMessages($result, null, 'errors');
|
||||||
|
} else {
|
||||||
|
/* FIX ALI header must be after action. Always add an exit after a header.
|
||||||
|
header("Location: ".DOL_URL_ROOT.'/modulebuilder/index.php?tab=permissions&module='.$module);
|
||||||
|
*/
|
||||||
|
setEventMessages($langs->trans('WarningModuleNeedRefrech', $langs->transnoentities($module)), null, 'warnings');
|
||||||
}
|
}
|
||||||
header("Location: ".DOL_URL_ROOT.'/modulebuilder/index.php?tab=permissions&module='.$module);
|
|
||||||
setEventMessages($langs->trans('WarningModuleNeedRefrech', $langs->transnoentities($module)), null, 'warnings');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$objectname = ucfirst($objectname);
|
$objectname = ucfirst($objectname);
|
||||||
@ -1539,31 +1493,43 @@ if ($dirins && $action == 'initobject' && $module && $objectname) {
|
|||||||
// Regenerate left menu entry in descriptor for $objectname
|
// Regenerate left menu entry in descriptor for $objectname
|
||||||
$stringtoadd = "
|
$stringtoadd = "
|
||||||
\$this->menu[\$r++]=array(
|
\$this->menu[\$r++]=array(
|
||||||
|
// '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
|
||||||
'fk_menu'=>'fk_mainmenu=mymodule',
|
'fk_menu'=>'fk_mainmenu=mymodule',
|
||||||
|
// This is a Left menu entry
|
||||||
'type'=>'left',
|
'type'=>'left',
|
||||||
'titre'=>'List MyObject',
|
'titre'=>'List MyObject',
|
||||||
'mainmenu'=>'mymodule',
|
'mainmenu'=>'mymodule',
|
||||||
'leftmenu'=>'myobject',
|
'leftmenu'=>'mymodule_myobject',
|
||||||
'url'=>'/mymodule/myobject_list.php',
|
'url'=>'/mymodule/myobject_list.php',
|
||||||
|
// Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||||
'langs'=>'mymodule@mymodule',
|
'langs'=>'mymodule@mymodule',
|
||||||
'position'=>1100+\$r,
|
'position'=>1100+\$r,
|
||||||
|
// Define condition to show or hide menu entry. Use '\$conf->mymodule->enabled' if entry must be visible if module is enabled. Use '\$leftmenu==\'system\'' to show if leftmenu system is selected.
|
||||||
'enabled'=>'\$conf->mymodule->enabled',
|
'enabled'=>'\$conf->mymodule->enabled',
|
||||||
|
// Use 'perms'=>'\$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
||||||
'perms'=>'1',
|
'perms'=>'1',
|
||||||
'target'=>'',
|
'target'=>'',
|
||||||
|
// 0=Menu for internal users, 1=external users, 2=both
|
||||||
'user'=>2,
|
'user'=>2,
|
||||||
);
|
);
|
||||||
\$this->menu[\$r++]=array(
|
\$this->menu[\$r++]=array(
|
||||||
'fk_menu'=>'fk_mainmenu=mymodule,fk_leftmenu=myobject',
|
// '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
|
||||||
|
'fk_menu'=>'fk_mainmenu=mymodule,fk_leftmenu=mymodule_myobject',
|
||||||
|
// This is a Left menu entry
|
||||||
'type'=>'left',
|
'type'=>'left',
|
||||||
'titre'=>'New MyObject',
|
'titre'=>'New MyObject',
|
||||||
'mainmenu'=>'mymodule',
|
'mainmenu'=>'mymodule',
|
||||||
'leftmenu'=>'myobject',
|
'leftmenu'=>'mymodule_myobject',
|
||||||
'url'=>'/mymodule/myobject_card.php?action=create',
|
'url'=>'/mymodule/myobject_card.php?action=create',
|
||||||
|
// Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||||
'langs'=>'mymodule@mymodule',
|
'langs'=>'mymodule@mymodule',
|
||||||
'position'=>1100+\$r,
|
'position'=>1100+\$r,
|
||||||
|
// Define condition to show or hide menu entry. Use '\$conf->mymodule->enabled' if entry must be visible if module is enabled. Use '\$leftmenu==\'system\'' to show if leftmenu system is selected.
|
||||||
'enabled'=>'\$conf->mymodule->enabled',
|
'enabled'=>'\$conf->mymodule->enabled',
|
||||||
|
// Use 'perms'=>'\$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
||||||
'perms'=>'1',
|
'perms'=>'1',
|
||||||
'target'=>'',
|
'target'=>'',
|
||||||
|
// 0=Menu for internal users, 1=external users, 2=both
|
||||||
'user'=>2
|
'user'=>2
|
||||||
);\n";
|
);\n";
|
||||||
$stringtoadd = preg_replace('/MyObject/', $objectname, $stringtoadd);
|
$stringtoadd = preg_replace('/MyObject/', $objectname, $stringtoadd);
|
||||||
@ -1572,13 +1538,14 @@ if ($dirins && $action == 'initobject' && $module && $objectname) {
|
|||||||
|
|
||||||
$moduledescriptorfile = $destdir.'/core/modules/mod'.$module.'.class.php';
|
$moduledescriptorfile = $destdir.'/core/modules/mod'.$module.'.class.php';
|
||||||
}
|
}
|
||||||
// TODO Allow a replace with regex using dolReplaceInFile with param arryreplacementisregex to 1
|
|
||||||
// TODO Avoid duplicate addition
|
|
||||||
|
|
||||||
// load class and check if menu exist with same object name
|
// TODO Allow a replace with regex using dolReplaceInFile with param arryreplacementisregex to 1
|
||||||
$pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath'];
|
// TODO Avoid duplicate addition
|
||||||
dol_include_once($pathtofile);
|
|
||||||
$class = 'mod'.$module;
|
// load class and check if menu exist with same object name
|
||||||
|
$pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath'];
|
||||||
|
dol_include_once($pathtofile);
|
||||||
|
$class = 'mod'.$module;
|
||||||
if (class_exists($class)) {
|
if (class_exists($class)) {
|
||||||
try {
|
try {
|
||||||
$moduleobj = new $class($db);
|
$moduleobj = new $class($db);
|
||||||
@ -1587,8 +1554,8 @@ if ($dirins && $action == 'initobject' && $module && $objectname) {
|
|||||||
dol_print_error($db, $e->getMessage());
|
dol_print_error($db, $e->getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$menus = $moduleobj->menu;
|
$menus = $moduleobj->menu;
|
||||||
$counter = 0 ;
|
$counter = 0 ;
|
||||||
foreach ($menus as $menu) {
|
foreach ($menus as $menu) {
|
||||||
if ($menu['leftmenu'] == strtolower($objectname)) {
|
if ($menu['leftmenu'] == strtolower($objectname)) {
|
||||||
$counter++;
|
$counter++;
|
||||||
@ -1597,8 +1564,9 @@ if ($dirins && $action == 'initobject' && $module && $objectname) {
|
|||||||
if (!$counter) {
|
if (!$counter) {
|
||||||
dolReplaceInFile($moduledescriptorfile, array('/* END MODULEBUILDER LEFTMENU MYOBJECT */' => '/*LEFTMENU '.strtoupper($objectname).'*/'.$stringtoadd."\n\t\t".'/*END LEFTMENU '.strtoupper($objectname).'*/'."\n\t\t".'/* END MODULEBUILDER LEFTMENU MYOBJECT */'));
|
dolReplaceInFile($moduledescriptorfile, array('/* END MODULEBUILDER LEFTMENU MYOBJECT */' => '/*LEFTMENU '.strtoupper($objectname).'*/'.$stringtoadd."\n\t\t".'/*END LEFTMENU '.strtoupper($objectname).'*/'."\n\t\t".'/* END MODULEBUILDER LEFTMENU MYOBJECT */'));
|
||||||
}
|
}
|
||||||
// Add module descriptor to list of files to replace "MyObject' string with real name of object.
|
|
||||||
$filetogenerate[] = 'core/modules/mod'.$module.'.class.php';
|
// Add module descriptor to list of files to replace "MyObject' string with real name of object.
|
||||||
|
$filetogenerate[] = 'core/modules/mod'.$module.'.class.php';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
@ -1940,9 +1908,13 @@ if ($dirins && $action == 'confirm_deleteobject' && $objectname) {
|
|||||||
dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", (int) $conf->global->MAIN_IHM_PARAMS_REV + 1, 'chaine', 0, '', $conf->entity);
|
dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", (int) $conf->global->MAIN_IHM_PARAMS_REV + 1, 'chaine', 0, '', $conf->entity);
|
||||||
if ($result) {
|
if ($result) {
|
||||||
setEventMessages($result, null, 'errors');
|
setEventMessages($result, null, 'errors');
|
||||||
|
$error++;
|
||||||
|
} else {
|
||||||
|
/* TODO ALI Header redirect must be at end after actions. Also tab=pemrissions looks strange
|
||||||
|
header("Location: ".DOL_URL_ROOT.'/modulebuilder/index.php?tab=permissions&module='.$module);
|
||||||
|
*/
|
||||||
|
setEventMessages($langs->trans('WarningModuleNeedRefrech', $langs->transnoentities($module)), null, 'warnings');
|
||||||
}
|
}
|
||||||
header("Location: ".DOL_URL_ROOT.'/modulebuilder/index.php?tab=permissions&module='.$module);
|
|
||||||
setEventMessages($langs->trans('WarningModuleNeedRefrech', $langs->transnoentities($module)), null, 'warnings');
|
|
||||||
}
|
}
|
||||||
if (preg_match('/[^a-z0-9_]/i', $objectname)) {
|
if (preg_match('/[^a-z0-9_]/i', $objectname)) {
|
||||||
$error++;
|
$error++;
|
||||||
@ -2244,15 +2216,32 @@ if ($dirins && $action == 'addright' && !empty($module) && empty($cancel)) {
|
|||||||
\$r++;
|
\$r++;
|
||||||
";
|
";
|
||||||
$moduledescriptorfile = $dirins.'/'.strtolower($module).'/core/modules/mod'.$module.'.class.php';
|
$moduledescriptorfile = $dirins.'/'.strtolower($module).'/core/modules/mod'.$module.'.class.php';
|
||||||
|
|
||||||
|
//var_dump($existRight.' '.$firstRight);exit;
|
||||||
if (!$existRight) {
|
if (!$existRight) {
|
||||||
dolReplaceInFile($moduledescriptorfile, array('/*END '.strtoupper($objectForPerms).'*/' => $rightToAdd.'/*END '.strtoupper($objectForPerms).'*/'));
|
dolReplaceInFile($moduledescriptorfile, array('/*END '.strtoupper($objectForPerms).'*/' => $rightToAdd.'/*END '.strtoupper($objectForPerms).'*/'));
|
||||||
setEventMessages($langs->trans('PermissionAddedSuccesfuly'), null);
|
setEventMessages($langs->trans('PermissionAddedSuccesfuly'), null);
|
||||||
}
|
}
|
||||||
if ($firstRight>0) {
|
if ($firstRight > 0) {
|
||||||
dolReplaceInFile($moduledescriptorfile, array('/* END MODULEBUILDER PERMISSIONS */' => '/*'.strtoupper($objectForPerms).'*/'.$rightToAdd."/*END ".strtoupper($objectForPerms).'*/'."\n\t\t".'/* END MODULEBUILDER PERMISSIONS */'));
|
$filecontentbefore = file_get_contents($moduledescriptorfile);
|
||||||
setEventMessages($langs->trans('PermissionAddedSuccesfuly'), null);
|
|
||||||
|
$result = dolReplaceInFile($moduledescriptorfile, array('/* END MODULEBUILDER PERMISSIONS */' => '/*'.strtoupper($objectForPerms).'*/'.$rightToAdd."/*END ".strtoupper($objectForPerms).'*/'."\n\t\t".'/* END MODULEBUILDER PERMISSIONS */'));
|
||||||
|
|
||||||
|
$filecontentafter = file_get_contents($moduledescriptorfile);
|
||||||
|
|
||||||
|
if ($filecontentbefore != $filecontentafter) {
|
||||||
|
setEventMessages($langs->trans('PermissionAddedSuccesfuly'), null);
|
||||||
|
} else {
|
||||||
|
setEventMessages($langs->trans('FailedToAddCodeIntoDescriptor', 'END MODULEBUILDER PERMISSIONS'), null, 'warnings');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
clearstatcache(true);
|
||||||
|
if (function_exists('opcache_invalidate')) {
|
||||||
|
opcache_reset(); // remove the include cache hell !
|
||||||
|
}
|
||||||
|
|
||||||
header("Location: ".DOL_URL_ROOT.'/modulebuilder/index.php?tab=permissions&module='.$module);
|
header("Location: ".DOL_URL_ROOT.'/modulebuilder/index.php?tab=permissions&module='.$module);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
@ -2336,6 +2325,7 @@ if ($dirins && GETPOST('action') == 'update_right' && GETPOST('modifyright')&& e
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO ALI Update of permission must be done by rewriting completely the permission section
|
||||||
//prepare right want to delete
|
//prepare right want to delete
|
||||||
$right = "
|
$right = "
|
||||||
\$this->rights[\$r][0] = \$this->numero . sprintf('%02d', \$r + 1);
|
\$this->rights[\$r][0] = \$this->numero . sprintf('%02d', \$r + 1);
|
||||||
@ -2352,6 +2342,7 @@ if ($dirins && GETPOST('action') == 'update_right' && GETPOST('modifyright')&& e
|
|||||||
\$this->rights[\$r][5] = '$crud';
|
\$this->rights[\$r][5] = '$crud';
|
||||||
\$r++;
|
\$r++;
|
||||||
";
|
";
|
||||||
|
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
if (isModEnabled(strtolower($module))) {
|
if (isModEnabled(strtolower($module))) {
|
||||||
$result = unActivateModule(strtolower($module));
|
$result = unActivateModule(strtolower($module));
|
||||||
@ -2366,8 +2357,14 @@ if ($dirins && GETPOST('action') == 'update_right' && GETPOST('modifyright')&& e
|
|||||||
$moduledescriptorfile = $dirins.'/'.strtolower($module).'/core/modules/mod'.$module.'.class.php';
|
$moduledescriptorfile = $dirins.'/'.strtolower($module).'/core/modules/mod'.$module.'.class.php';
|
||||||
$check = dolReplaceInFile($moduledescriptorfile, array($right => $rightUpdated));
|
$check = dolReplaceInFile($moduledescriptorfile, array($right => $rightUpdated));
|
||||||
|
|
||||||
header("Location: ".DOL_URL_ROOT.'/modulebuilder/index.php?tab=permissions&module='.$module);
|
|
||||||
setEventMessages($langs->trans('PermissionUpdatedSuccesfuly'), null);
|
setEventMessages($langs->trans('PermissionUpdatedSuccesfuly'), null);
|
||||||
|
|
||||||
|
clearstatcache(true);
|
||||||
|
if (function_exists('opcache_invalidate')) {
|
||||||
|
opcache_reset(); // remove the include cache hell !
|
||||||
|
}
|
||||||
|
|
||||||
|
header("Location: ".DOL_URL_ROOT.'/modulebuilder/index.php?tab=permissions&module='.$module);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2377,7 +2374,7 @@ if ($dirins && $action == 'confirm_deleteright' && !empty($module) && GETPOST('p
|
|||||||
// load class and check if right exist
|
// load class and check if right exist
|
||||||
$pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath'];
|
$pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath'];
|
||||||
dol_include_once($pathtofile);
|
dol_include_once($pathtofile);
|
||||||
$class = 'mod'.$module;
|
$class = 'mod'.$module;
|
||||||
if (class_exists($class)) {
|
if (class_exists($class)) {
|
||||||
try {
|
try {
|
||||||
$moduleobj = new $class($db);
|
$moduleobj = new $class($db);
|
||||||
@ -2387,14 +2384,14 @@ if ($dirins && $action == 'confirm_deleteright' && !empty($module) && GETPOST('p
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$permissions = $moduleobj->rights;
|
$permissions = $moduleobj->rights;
|
||||||
$key = (int) GETPOST('permskey', 'int')-1;
|
$key = (int) GETPOST('permskey', 'int')-1;
|
||||||
//get permission want to delete from permissions array
|
//get permission want to delete from permissions array
|
||||||
$x1 = $permissions[$key][1];
|
$x1 = $permissions[$key][1];
|
||||||
$x2 = $permissions[$key][4];
|
$x2 = $permissions[$key][4];
|
||||||
$x3 = $permissions[$key][5];
|
$x3 = $permissions[$key][5];
|
||||||
//prepare right want to delete
|
//prepare right want to delete
|
||||||
$rightTodelete = "
|
$rightTodelete = "
|
||||||
\$this->rights[\$r][0] = \$this->numero . sprintf('%02d', \$r + 1);
|
\$this->rights[\$r][0] = \$this->numero . sprintf('%02d', \$r + 1);
|
||||||
\$this->rights[\$r][1] = '$x1';
|
\$this->rights[\$r][1] = '$x1';
|
||||||
\$this->rights[\$r][4] = '$x2';
|
\$this->rights[\$r][4] = '$x2';
|
||||||
@ -2402,9 +2399,11 @@ if ($dirins && $action == 'confirm_deleteright' && !empty($module) && GETPOST('p
|
|||||||
\$r++;
|
\$r++;
|
||||||
";
|
";
|
||||||
|
|
||||||
|
$moduledescriptorfile = $dirins.'/'.strtolower($module).'/core/modules/mod'.$module.'.class.php';
|
||||||
|
|
||||||
|
// TODO ALI The delete must be done by rewriting all content between /* BEGIN MODULEBUILDER PERMISSIONS */ and /* END MODULEBUILDER PERMISSIONS */
|
||||||
|
$check = dolReplaceInFile($moduledescriptorfile, array($rightTodelete => "\n\t\t"));
|
||||||
|
|
||||||
$moduledescriptorfile = $dirins.'/'.strtolower($module).'/core/modules/mod'.$module.'.class.php';
|
|
||||||
$check = dolReplaceInFile($moduledescriptorfile, array($rightTodelete => "\n\t\t"));
|
|
||||||
if ($check > 0) {
|
if ($check > 0) {
|
||||||
//check if all permissions of object was deleted
|
//check if all permissions of object was deleted
|
||||||
$permsForObj = array();
|
$permsForObj = array();
|
||||||
@ -2424,13 +2423,20 @@ if ($dirins && $action == 'confirm_deleteright' && !empty($module) && GETPOST('p
|
|||||||
if ($result) {
|
if ($result) {
|
||||||
setEventMessages($result, null, 'errors');
|
setEventMessages($result, null, 'errors');
|
||||||
}
|
}
|
||||||
header("Location: ".DOL_URL_ROOT.'/modulebuilder/index.php?tab=permissions&module='.$module);
|
|
||||||
setEventMessages($langs->trans('PermissionDeletedSuccesfuly'), null);
|
setEventMessages($langs->trans('PermissionDeletedSuccesfuly'), null);
|
||||||
setEventMessages($langs->trans('WarningModuleNeedRefrech', $langs->transnoentities($module)), null, 'warnings');
|
setEventMessages($langs->trans('WarningModuleNeedRefrech', $langs->transnoentities($module)), null, 'warnings');
|
||||||
|
|
||||||
|
header("Location: ".DOL_URL_ROOT.'/modulebuilder/index.php?tab=permissions&module='.$module);
|
||||||
exit;
|
exit;
|
||||||
} else {
|
} else {
|
||||||
header("Location: ".DOL_URL_ROOT.'/modulebuilder/index.php?tab=permissions&module='.$module);
|
|
||||||
setEventMessages($langs->trans('PermissionDeletedSuccesfuly'), null);
|
setEventMessages($langs->trans('PermissionDeletedSuccesfuly'), null);
|
||||||
|
|
||||||
|
clearstatcache(true);
|
||||||
|
if (function_exists('opcache_invalidate')) {
|
||||||
|
opcache_reset(); // remove the include cache hell !
|
||||||
|
}
|
||||||
|
|
||||||
|
header("Location: ".DOL_URL_ROOT.'/modulebuilder/index.php?tab=permissions&module='.$module);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2647,6 +2653,8 @@ if ($dirins && $action == 'addmenu' && empty($cancel)) {
|
|||||||
$dirins = $listofmodules[strtolower($module)]['moduledescriptorrootpath'];
|
$dirins = $listofmodules[strtolower($module)]['moduledescriptorrootpath'];
|
||||||
$destdir = $dirins.'/'.strtolower($module);
|
$destdir = $dirins.'/'.strtolower($module);
|
||||||
$listofobject = dol_dir_list($destdir.'/class', 'files', 0, '\.class\.php$');
|
$listofobject = dol_dir_list($destdir.'/class', 'files', 0, '\.class\.php$');
|
||||||
|
|
||||||
|
// Get list of existing objets
|
||||||
$objects = array();
|
$objects = array();
|
||||||
foreach ($listofobject as $fileobj) {
|
foreach ($listofobject as $fileobj) {
|
||||||
if (preg_match('/^api_/', $fileobj['name'])) {
|
if (preg_match('/^api_/', $fileobj['name'])) {
|
||||||
@ -2660,7 +2668,7 @@ if ($dirins && $action == 'addmenu' && empty($cancel)) {
|
|||||||
$reg = array();
|
$reg = array();
|
||||||
if (preg_match('/class\s+([^\s]*)\s+extends\s+CommonObject/ims', $tmpcontent, $reg)) {
|
if (preg_match('/class\s+([^\s]*)\s+extends\s+CommonObject/ims', $tmpcontent, $reg)) {
|
||||||
$objectnameloop = $reg[1];
|
$objectnameloop = $reg[1];
|
||||||
$objects[] = $objectnameloop;
|
$objects[$fileobj['fullname']] = $objectnameloop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3355,15 +3363,15 @@ if ($module == 'initmodule') {
|
|||||||
$pathtochangelog = $modulelowercase.'/ChangeLog.md';
|
$pathtochangelog = $modulelowercase.'/ChangeLog.md';
|
||||||
|
|
||||||
if ($action != 'editfile' || empty($file)) {
|
if ($action != 'editfile' || empty($file)) {
|
||||||
print dol_get_fiche_head($head2, $tab, '', -1, '', 0, '', '', $MAXTABFOROBJECT, 'formodulesuffix'); // Description - level 2
|
$morehtmlright = '';
|
||||||
|
if (realpath($dirread.'/'.$modulelowercase) != $dirread.'/'.$modulelowercase) {
|
||||||
|
$morehtmlright = '<div style="padding: 12px 9px 12px">'.$form->textwithpicto('', '<span class="opacitymedium">'.$langs->trans("RealPathOfModule").' :</span> <strong class="wordbreak">'.realpath($dirread.'/'.$modulelowercase).'</strong>').'</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
print dol_get_fiche_head($head2, $tab, '', -1, '', 0, $morehtmlright, '', $MAXTABFOROBJECT, 'formodulesuffix'); // Description - level 2
|
||||||
|
|
||||||
print '<span class="opacitymedium">'.$langs->trans("ModuleBuilderDesc".$tab).'</span>';
|
print '<span class="opacitymedium">'.$langs->trans("ModuleBuilderDesc".$tab).'</span>';
|
||||||
$infoonmodulepath = '';
|
print '<br><br>';
|
||||||
if (realpath($dirread.'/'.$modulelowercase) != $dirread.'/'.$modulelowercase) {
|
|
||||||
$infoonmodulepath = '<span class="opacitymedium">'.$langs->trans("RealPathOfModule").' :</span> <strong class="wordbreak">'.realpath($dirread.'/'.$modulelowercase).'</strong><br>';
|
|
||||||
print ' '.$infoonmodulepath;
|
|
||||||
}
|
|
||||||
print '<br>';
|
|
||||||
|
|
||||||
print '<table>';
|
print '<table>';
|
||||||
|
|
||||||
@ -3401,7 +3409,8 @@ if ($module == 'initmodule') {
|
|||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
print $moduleobj->numero;
|
print $moduleobj->numero;
|
||||||
print '<span class="opacitymedium">';
|
print '<span class="opacitymedium">';
|
||||||
print ' (<a href="'.DOL_URL_ROOT.'/admin/system/modules.php?mainmenu=home&leftmenu=admintools_info" target="_blank" rel="noopener noreferrer">'.$langs->trans("SeeIDsInUse").'</a>';
|
print ' (';
|
||||||
|
print dolButtonToOpenUrlInDialogPopup('popup_modules_id', $langs->transnoentitiesnoconv("SeeIDsInUse"), $langs->transnoentitiesnoconv("SeeIDsInUse"), '/admin/system/modules.php?mainmenu=home&leftmenu=admintools_info', '', '');
|
||||||
print ' - <a href="https://wiki.dolibarr.org/index.php/List_of_modules_id" target="_blank" rel="noopener noreferrer external">'.$langs->trans("SeeReservedIDsRangeHere").'</a>)';
|
print ' - <a href="https://wiki.dolibarr.org/index.php/List_of_modules_id" target="_blank" rel="noopener noreferrer external">'.$langs->trans("SeeReservedIDsRangeHere").'</a>)';
|
||||||
print '</span>';
|
print '</span>';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
@ -3838,7 +3847,6 @@ if ($module == 'initmodule') {
|
|||||||
$urloflist = dol_buildpath('/'.$pathtolist, 1);
|
$urloflist = dol_buildpath('/'.$pathtolist, 1);
|
||||||
$urlofcard = dol_buildpath('/'.$pathtocard, 1);
|
$urlofcard = dol_buildpath('/'.$pathtocard, 1);
|
||||||
|
|
||||||
$file = file_get_contents($realpathtoapi);
|
|
||||||
$objs = array();
|
$objs = array();
|
||||||
|
|
||||||
print '<!-- section for object -->';
|
print '<!-- section for object -->';
|
||||||
@ -3860,15 +3868,20 @@ if ($module == 'initmodule') {
|
|||||||
// API file
|
// API file
|
||||||
print '<br>';
|
print '<br>';
|
||||||
print '<span class="fa fa-file-o"></span> '.$langs->trans("ApiClassFile").' : <strong class="wordbreak">'.(dol_is_file($realpathtoapi) ? '' : '<strike><span class="opacitymedium">').preg_replace('/^'.strtolower($module).'\//', '', $pathtoapi).(dol_is_file($realpathtoapi)?'':'</span></strike>').'</strong>';
|
print '<span class="fa fa-file-o"></span> '.$langs->trans("ApiClassFile").' : <strong class="wordbreak">'.(dol_is_file($realpathtoapi) ? '' : '<strike><span class="opacitymedium">').preg_replace('/^'.strtolower($module).'\//', '', $pathtoapi).(dol_is_file($realpathtoapi)?'':'</span></strike>').'</strong>';
|
||||||
if (dol_is_file($realpathtoapi) && preg_match('/var '.$tabobj.'\s+([^\s]*)\s/ims', $file, $objs)) {
|
if (dol_is_file($realpathtoapi)) {
|
||||||
print ' <a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?tab='.urlencode($tab).'&tabobj='.$tabobj.'&module='.$module.($forceddirread ? '@'.$dirread : '').'&action=editfile&token='.newToken().'&format=php&file='.urlencode($pathtoapi).'">'.img_picto($langs->trans("Edit"), 'edit').'</a>';
|
$file = file_get_contents($realpathtoapi);
|
||||||
print ' ';
|
if (preg_match('/var '.$tabobj.'\s+([^\s]*)\s/ims', $file, $objs)) {
|
||||||
print '<a class="reposition editfielda" href="'.$_SERVER['PHP_SELF'].'?tab='.urlencode($tab).'&tabobj='.$tabobj.'&module='.$module.($forceddirread ? '@'.$dirread : '').'&action=confirm_removefile&token='.newToken().'&file='.urlencode($pathtoapi).'">'.img_picto($langs->trans("Delete"), 'delete').'</a>';
|
print ' <a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?tab='.urlencode($tab).'&tabobj='.$tabobj.'&module='.$module.($forceddirread ? '@'.$dirread : '').'&action=editfile&token='.newToken().'&format=php&file='.urlencode($pathtoapi).'">'.img_picto($langs->trans("Edit"), 'edit').'</a>';
|
||||||
print ' ';
|
print ' ';
|
||||||
if (empty($conf->global->$const_name)) { // If module is not activated
|
print '<a class="reposition editfielda" href="'.$_SERVER['PHP_SELF'].'?tab='.urlencode($tab).'&tabobj='.$tabobj.'&module='.$module.($forceddirread ? '@'.$dirread : '').'&action=confirm_removefile&token='.newToken().'&file='.urlencode($pathtoapi).'">'.img_picto($langs->trans("Delete"), 'delete').'</a>';
|
||||||
print '<a href="#" class="classfortooltip" target="apiexplorer" title="'.$langs->trans("ModuleMustBeEnabled", $module).'"><strike>'.$langs->trans("ApiExplorer").'</strike></a>';
|
print ' ';
|
||||||
|
if (empty($conf->global->$const_name)) { // If module is not activated
|
||||||
|
print '<a href="#" class="classfortooltip" target="apiexplorer" title="'.$langs->trans("ModuleMustBeEnabled", $module).'"><strike>'.$langs->trans("ApiExplorer").'</strike></a>';
|
||||||
|
} else {
|
||||||
|
print '<a href="'.DOL_URL_ROOT.'/api/index.php/explorer/" target="apiexplorer">'.$langs->trans("ApiExplorer").'</a>';
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
print '<a href="'.DOL_URL_ROOT.'/api/index.php/explorer/" target="apiexplorer">'.$langs->trans("ApiExplorer").'</a>';
|
print '<a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?tab='.urlencode($tab).'&tabobj='.$tabobj.'&module='.$module.($forceddirread ? '@'.$dirread : '').'&action=initapi&token='.newToken().'&format=php&file='.urlencode($pathtoapi).'">'.img_picto('AddAPIsForThisObject', 'generate', 'class="paddingleft"').'</a>';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print '<a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?tab='.urlencode($tab).'&tabobj='.$tabobj.'&module='.$module.($forceddirread ? '@'.$dirread : '').'&action=initapi&token='.newToken().'&format=php&file='.urlencode($pathtoapi).'">'.img_picto('Generate', 'generate', 'class="paddingleft"').'</a>';
|
print '<a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?tab='.urlencode($tab).'&tabobj='.$tabobj.'&module='.$module.($forceddirread ? '@'.$dirread : '').'&action=initapi&token='.newToken().'&format=php&file='.urlencode($pathtoapi).'">'.img_picto('Generate', 'generate', 'class="paddingleft"').'</a>';
|
||||||
@ -4602,6 +4615,8 @@ if ($module == 'initmodule') {
|
|||||||
$dirins = $listofmodules[strtolower($module)]['moduledescriptorrootpath'];
|
$dirins = $listofmodules[strtolower($module)]['moduledescriptorrootpath'];
|
||||||
$destdir = $dirins.'/'.strtolower($module);
|
$destdir = $dirins.'/'.strtolower($module);
|
||||||
$listofobject = dol_dir_list($destdir.'/class', 'files', 0, '\.class\.php$');
|
$listofobject = dol_dir_list($destdir.'/class', 'files', 0, '\.class\.php$');
|
||||||
|
|
||||||
|
// Get list of existing objects
|
||||||
$objects = array();
|
$objects = array();
|
||||||
foreach ($listofobject as $fileobj) {
|
foreach ($listofobject as $fileobj) {
|
||||||
if (preg_match('/^api_/', $fileobj['name'])) {
|
if (preg_match('/^api_/', $fileobj['name'])) {
|
||||||
@ -4615,7 +4630,7 @@ if ($module == 'initmodule') {
|
|||||||
$reg = array();
|
$reg = array();
|
||||||
if (preg_match('/class\s+([^\s]*)\s+extends\s+CommonObject/ims', $tmpcontent, $reg)) {
|
if (preg_match('/class\s+([^\s]*)\s+extends\s+CommonObject/ims', $tmpcontent, $reg)) {
|
||||||
$objectnameloop = $reg[1];
|
$objectnameloop = $reg[1];
|
||||||
$objects[] = $objectnameloop;
|
$objects[$fileobj['fullname']] = $objectnameloop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$menus = $moduleobj->menu;
|
$menus = $moduleobj->menu;
|
||||||
@ -4861,7 +4876,7 @@ if ($module == 'initmodule') {
|
|||||||
|
|
||||||
$perms = $moduleobj->rights;
|
$perms = $moduleobj->rights;
|
||||||
|
|
||||||
// Scan for object class files
|
// Get list of existing objects
|
||||||
$dir = $dirread.'/'.$modulelowercase.'/class';
|
$dir = $dirread.'/'.$modulelowercase.'/class';
|
||||||
$listofobject = dol_dir_list($dir, 'files', 0, '\.class\.php$');
|
$listofobject = dol_dir_list($dir, 'files', 0, '\.class\.php$');
|
||||||
$objects = array('myobject');
|
$objects = array('myobject');
|
||||||
@ -4869,12 +4884,13 @@ if ($module == 'initmodule') {
|
|||||||
foreach ($listofobject as $fileobj) {
|
foreach ($listofobject as $fileobj) {
|
||||||
$tmpcontent = file_get_contents($fileobj['fullname']);
|
$tmpcontent = file_get_contents($fileobj['fullname']);
|
||||||
if (preg_match('/class\s+([^\s]*)\s+extends\s+CommonObject/ims', $tmpcontent, $reg)) {
|
if (preg_match('/class\s+([^\s]*)\s+extends\s+CommonObject/ims', $tmpcontent, $reg)) {
|
||||||
$objects[] = $reg[1];
|
$objects[$fileobj['fullname']] = $reg[1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// declared select list for actions and labels permissions
|
// declared select list for actions and labels permissions
|
||||||
$crud = array('Read','Write','Delete');
|
$crud = array('read'=>'CRUDRead', 'write'=>'CRUDCreateWrite', 'delete'=>'Delete');
|
||||||
$labels = array("Read objects of $module","Create/Update objects of $module","Delete objects of $module");
|
$labels = array("Read objects of ".$module, "Create/Update objects of ".$module, "Delete objects of ".$module);
|
||||||
|
|
||||||
$action = GETPOST('action', 'alpha');
|
$action = GETPOST('action', 'alpha');
|
||||||
|
|
||||||
@ -4919,18 +4935,18 @@ if ($module == 'initmodule') {
|
|||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print_liste_field_titre("ID", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder, "center");
|
print_liste_field_titre("ID", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder, "center");
|
||||||
print_liste_field_titre("Label", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder, "center");
|
print_liste_field_titre("Label", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder, "center");
|
||||||
print_liste_field_titre("Permission", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder, "center");
|
print_liste_field_titre("Object", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder, "center");
|
||||||
print_liste_field_titre("CRUD", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder, "center");
|
print_liste_field_titre("CRUD", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder, "center");
|
||||||
print_liste_field_titre("", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder, "center");
|
print_liste_field_titre("", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder, "center");
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
//form for add new right
|
//form for add new right
|
||||||
print '<tr>';
|
print '<tr class="small">';
|
||||||
print '<td><input type="text" readonly name="id" value="'.dol_escape_htmltag($moduleobj->numero.sprintf('%02d', $i + count($perms))).'"></td>';
|
print '<td><input type="text" readonly name="id" class="width75" value="'.dol_escape_htmltag($moduleobj->numero.sprintf('%02d', $i + count($perms))).'"></td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<select name="label" >';
|
print '<select name="label" >';
|
||||||
print '<option value=""></option>';
|
print '<option value=""></option>';
|
||||||
for ($i = 0; $i<3; $i++) {
|
for ($i = 0; $i < 3; $i++) {
|
||||||
print '<option value="'.dol_escape_htmltag($labels[$i]).'">'.$labels[$i].'</option>';
|
print '<option value="'.dol_escape_htmltag($labels[$i]).'">'.$labels[$i].'</option>';
|
||||||
}
|
}
|
||||||
print '</select></td>';
|
print '</select></td>';
|
||||||
@ -4946,8 +4962,8 @@ if ($module == 'initmodule') {
|
|||||||
|
|
||||||
print '<td><select class="maxwidth" name="crud">';
|
print '<td><select class="maxwidth" name="crud">';
|
||||||
print '<option value=""></option>';
|
print '<option value=""></option>';
|
||||||
for ($i = 0;$i<3;$i++) {
|
foreach ($crud as $key => $val) {
|
||||||
print '<option value="'.$crud[$i].'">'.$langs->trans($crud[$i]).'</option>';
|
print '<option value="'.$key.'">'.$langs->trans($val).'</option>';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
@ -5016,7 +5032,7 @@ if ($module == 'initmodule') {
|
|||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
|
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print $perm[0];
|
print dol_escape_htmltag($perm[0]);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
print '<td>';
|
print '<td>';
|
||||||
@ -5024,7 +5040,7 @@ if ($module == 'initmodule') {
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print $perm[4];
|
print dol_escape_htmltag($perm[4]);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
print '<td>';
|
print '<td>';
|
||||||
@ -5042,7 +5058,7 @@ if ($module == 'initmodule') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print '<tr><td colspan="4"><span class="opacitymedium">'.$langs->trans("None").'</span></td></tr>';
|
print '<tr><td colspan="5"><span class="opacitymedium">'.$langs->trans("None").'</span></td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|||||||
@ -906,6 +906,9 @@ class MyObject extends CommonObject
|
|||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -913,6 +916,7 @@ class MyObject extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref valignmiddle">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref valignmiddle">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'label')) {
|
if (property_exists($this, 'label')) {
|
||||||
$return .= ' <div class="inline-block opacitymedium valignmiddle tdoverflowmax100">'.$this->label.'</div>';
|
$return .= ' <div class="inline-block opacitymedium valignmiddle tdoverflowmax100">'.$this->label.'</div>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -882,7 +882,7 @@ class pdf_standard_myobject extends ModelePDFMyObject
|
|||||||
* @param int $showaddress 0=no, 1=yes
|
* @param int $showaddress 0=no, 1=yes
|
||||||
* @param Translate $outputlangs Object lang for output
|
* @param Translate $outputlangs Object lang for output
|
||||||
* @param Translate $outputlangsbis Object lang for output bis
|
* @param Translate $outputlangsbis Object lang for output bis
|
||||||
* @return void
|
* @return float|int
|
||||||
*/
|
*/
|
||||||
protected function _pagehead(&$pdf, $object, $showaddress, $outputlangs, $outputlangsbis = null)
|
protected function _pagehead(&$pdf, $object, $showaddress, $outputlangs, $outputlangsbis = null)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -49,6 +49,16 @@ __README__
|
|||||||
__DATA_SPECIFICATION__
|
__DATA_SPECIFICATION__
|
||||||
|
|
||||||
|
|
||||||
|
== MATRIX OF PERMISSIONS
|
||||||
|
|
||||||
|
__DATA_PERMISSIONS__
|
||||||
|
|
||||||
|
|
||||||
|
== OTHER
|
||||||
|
|
||||||
|
__API_DOC__
|
||||||
|
|
||||||
|
|
||||||
== CHANGELOG
|
== CHANGELOG
|
||||||
|
|
||||||
//include::ChangeLog.md[]
|
//include::ChangeLog.md[]
|
||||||
|
|||||||
@ -86,6 +86,7 @@ $id = GETPOST('id', 'int');
|
|||||||
$ref = GETPOST('ref', 'alpha');
|
$ref = GETPOST('ref', 'alpha');
|
||||||
$action = GETPOST('action', 'aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
$cancel = GETPOST('cancel', 'aZ09');
|
$cancel = GETPOST('cancel', 'aZ09');
|
||||||
|
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search
|
||||||
$backtopage = GETPOST('backtopage', 'alpha');
|
$backtopage = GETPOST('backtopage', 'alpha');
|
||||||
|
|
||||||
if (GETPOST('actioncode', 'array')) {
|
if (GETPOST('actioncode', 'array')) {
|
||||||
@ -261,7 +262,7 @@ if ($object->id > 0) {
|
|||||||
$objthirdparty = $object;
|
$objthirdparty = $object;
|
||||||
$objcon = new stdClass();
|
$objcon = new stdClass();
|
||||||
|
|
||||||
$out = '&origin='.urlencode($object->element.'@'.$object->module).'&originid='.urlencode($object->id);
|
$out = '&origin='.urlencode($object->element.(property_exists($object, 'module') ? '@'.$object->module : '')).'&originid='.urlencode($object->id);
|
||||||
$urlbacktopage = $_SERVER['PHP_SELF'].'?id='.$object->id;
|
$urlbacktopage = $_SERVER['PHP_SELF'].'?id='.$object->id;
|
||||||
$out .= '&backtopage='.urlencode($urlbacktopage);
|
$out .= '&backtopage='.urlencode($urlbacktopage);
|
||||||
$permok = $user->rights->agenda->myactions->create;
|
$permok = $user->rights->agenda->myactions->create;
|
||||||
@ -303,7 +304,13 @@ if ($object->id > 0) {
|
|||||||
$param .= '&limit='.urlencode($limit);
|
$param .= '&limit='.urlencode($limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
//print load_fiche_titre($langs->trans("ActionsOnMyObject"), '', '');
|
// Try to know count of actioncomm from cache
|
||||||
|
/*require_once DOL_DOCUMENT_ROOT.'/core/lib/memory.lib.php';
|
||||||
|
$cachekey = 'count_events_myobject_'.$object->id;
|
||||||
|
$nbEvent = dol_getcache($cachekey);
|
||||||
|
|
||||||
|
print_barre_liste($langs->trans("ActionsOnMyObject").(is_numeric($nbEvent) ? '<span class="opacitymedium colorblack paddingleft">('.$nbEvent.')</span>': ''), 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', 0, -1, '', 0, $morehtmlright, '', 0, 1, 1);
|
||||||
|
*/
|
||||||
print_barre_liste($langs->trans("ActionsOnMyObject"), 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', 0, -1, '', 0, $morehtmlright, '', 0, 1, 1);
|
print_barre_liste($langs->trans("ActionsOnMyObject"), 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', 0, -1, '', 0, $morehtmlright, '', 0, 1, 1);
|
||||||
|
|
||||||
// List of all actions
|
// List of all actions
|
||||||
@ -312,7 +319,7 @@ if ($object->id > 0) {
|
|||||||
$filters['search_rowid'] = $search_rowid;
|
$filters['search_rowid'] = $search_rowid;
|
||||||
|
|
||||||
// TODO Replace this with same code than into list.php
|
// TODO Replace this with same code than into list.php
|
||||||
show_actions_done($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters, $sortfield, $sortorder, $object->module);
|
show_actions_done($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters, $sortfield, $sortorder, property_exists($object, 'module') ? $object->module : '');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -269,9 +269,9 @@ $form = new Form($db);
|
|||||||
|
|
||||||
$now = dol_now();
|
$now = dol_now();
|
||||||
|
|
||||||
|
$title = $langs->trans("MyObjects");
|
||||||
//$help_url = "EN:Module_MyObject|FR:Module_MyObject_FR|ES:Módulo_MyObject";
|
//$help_url = "EN:Module_MyObject|FR:Module_MyObject_FR|ES:Módulo_MyObject";
|
||||||
$help_url = '';
|
$help_url = '';
|
||||||
$title = $langs->trans("MyObjects");
|
|
||||||
$morejs = array();
|
$morejs = array();
|
||||||
$morecss = array();
|
$morecss = array();
|
||||||
|
|
||||||
@ -473,7 +473,7 @@ if ($optioncss != '') {
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
|
||||||
// Add $param from hooks
|
// Add $param from hooks
|
||||||
$parameters = array();
|
$parameters = array();
|
||||||
$reshook = $hookmanager->executeHooks('printFieldListSearchParam', $parameters, $object); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldListSearchParam', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
||||||
$param .= $hookmanager->resPrint;
|
$param .= $hookmanager->resPrint;
|
||||||
|
|
||||||
// List of mass actions available
|
// List of mass actions available
|
||||||
@ -565,7 +565,7 @@ print '<table class="tagtable nobottomiftotal liste'.($moreforfilter ? " listwit
|
|||||||
print '<tr class="liste_titre_filter">';
|
print '<tr class="liste_titre_filter">';
|
||||||
// Action column
|
// Action column
|
||||||
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print '<td class="liste_titre maxwidthsearch center">';
|
print '<td class="liste_titre center maxwidthsearch">';
|
||||||
$searchpicto = $form->showFilterButtons('left');
|
$searchpicto = $form->showFilterButtons('left');
|
||||||
print $searchpicto;
|
print $searchpicto;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|||||||
@ -1646,6 +1646,9 @@ class Mo extends CommonObject
|
|||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -1654,6 +1657,7 @@ class Mo extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'fk_bom')) {
|
if (property_exists($this, 'fk_bom')) {
|
||||||
$return .= '<br><span class="info-box-label opacitymedium">'.$this->fk_bom.'</span>';
|
$return .= '<br><span class="info-box-label opacitymedium">'.$this->fk_bom.'</span>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1334,7 +1334,8 @@ class Partnership extends CommonObject
|
|||||||
*/
|
*/
|
||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
global $conf, $langs;
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -1342,6 +1343,7 @@ class Partnership extends CommonObject
|
|||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref valignmiddle">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref valignmiddle">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'label')) {
|
if (property_exists($this, 'label')) {
|
||||||
$return .= ' <div class="inline-block opacitymedium valignmiddle tdoverflowmax100">'.$this->label.'</div>';
|
$return .= ' <div class="inline-block opacitymedium valignmiddle tdoverflowmax100">'.$this->label.'</div>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6370,6 +6370,8 @@ class Product extends CommonObject
|
|||||||
{
|
{
|
||||||
global $langs,$conf;
|
global $langs,$conf;
|
||||||
|
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<div class="info-box-img">';
|
$return .= '<div class="info-box-img">';
|
||||||
@ -6388,6 +6390,7 @@ class Product extends CommonObject
|
|||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '<div class="info-box-content">';
|
$return .= '<div class="info-box-content">';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'label')) {
|
if (property_exists($this, 'label')) {
|
||||||
$return .= '<br><span class="info-box-label opacitymedium">'.$this->label.'</span>';
|
$return .= '<br><span class="info-box-label opacitymedium">'.$this->label.'</span>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -431,7 +431,7 @@ class Productbatch extends CommonObject
|
|||||||
* @param int $fk_product_stock id product_stock for objet
|
* @param int $fk_product_stock id product_stock for objet
|
||||||
* @param int $with_qty 1 = doesn't return line with 0 quantity
|
* @param int $with_qty 1 = doesn't return line with 0 quantity
|
||||||
* @param int $fk_product If set to a product id, get eatby and sellby from table llx_product_lot
|
* @param int $fk_product If set to a product id, get eatby and sellby from table llx_product_lot
|
||||||
* @return array <0 if KO, array of batch
|
* @return array|int <0 if KO, array of batch
|
||||||
*/
|
*/
|
||||||
public static function findAll($dbs, $fk_product_stock, $with_qty = 0, $fk_product = 0)
|
public static function findAll($dbs, $fk_product_stock, $with_qty = 0, $fk_product = 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -162,7 +162,7 @@ class PriceExpression
|
|||||||
/**
|
/**
|
||||||
* List all price expressions
|
* List all price expressions
|
||||||
*
|
*
|
||||||
* @return array Array of price expressions
|
* @return array|int Array of price expressions, <0 if ko
|
||||||
*/
|
*/
|
||||||
public function list_price_expression()
|
public function list_price_expression()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -311,7 +311,7 @@ class PriceGlobalVariable
|
|||||||
/**
|
/**
|
||||||
* List all price global variables
|
* List all price global variables
|
||||||
*
|
*
|
||||||
* @return array Array of price global variables
|
* @return array|int Array of price global variables, <0 if ko
|
||||||
*/
|
*/
|
||||||
public function listGlobalVariables()
|
public function listGlobalVariables()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -127,7 +127,7 @@ class Entrepot extends CommonObject
|
|||||||
'ref' =>array('type'=>'varchar(255)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'showoncombobox'=>1, 'position'=>25, 'searchall'=>1),
|
'ref' =>array('type'=>'varchar(255)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'showoncombobox'=>1, 'position'=>25, 'searchall'=>1),
|
||||||
'description' =>array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>-2, 'position'=>35, 'searchall'=>1),
|
'description' =>array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>-2, 'position'=>35, 'searchall'=>1),
|
||||||
'lieu' =>array('type'=>'varchar(64)', 'label'=>'LocationSummary', 'enabled'=>1, 'visible'=>1, 'position'=>40, 'showoncombobox'=>2, 'searchall'=>1),
|
'lieu' =>array('type'=>'varchar(64)', 'label'=>'LocationSummary', 'enabled'=>1, 'visible'=>1, 'position'=>40, 'showoncombobox'=>2, 'searchall'=>1),
|
||||||
'fk_parent' =>array('type'=>'integer:Entrepot:product/stock/class/entrepot.class.php:1:((status:=:1) AND (entity:IN:__SHARED_ENTITIES__))', 'label'=>'ParentWarehouse', 'enabled'=>1, 'visible'=>-2, 'position'=>41),
|
'fk_parent' =>array('type'=>'integer:Entrepot:product/stock/class/entrepot.class.php:1:((statut:=:1) AND (entity:IN:__SHARED_ENTITIES__))', 'label'=>'ParentWarehouse', 'enabled'=>1, 'visible'=>-2, 'position'=>41),
|
||||||
'fk_project' =>array('type'=>'integer:Project:projet/class/project.class.php:1:(fk_statut:=:1)', 'label'=>'Project', 'enabled'=>'$conf->project->enabled', 'visible'=>-1, 'position'=>25),
|
'fk_project' =>array('type'=>'integer:Project:projet/class/project.class.php:1:(fk_statut:=:1)', 'label'=>'Project', 'enabled'=>'$conf->project->enabled', 'visible'=>-1, 'position'=>25),
|
||||||
'address' =>array('type'=>'varchar(255)', 'label'=>'Address', 'enabled'=>1, 'visible'=>-2, 'position'=>45, 'searchall'=>1),
|
'address' =>array('type'=>'varchar(255)', 'label'=>'Address', 'enabled'=>1, 'visible'=>-2, 'position'=>45, 'searchall'=>1),
|
||||||
'zip' =>array('type'=>'varchar(10)', 'label'=>'Zip', 'enabled'=>1, 'visible'=>-2, 'position'=>50, 'searchall'=>1),
|
'zip' =>array('type'=>'varchar(10)', 'label'=>'Zip', 'enabled'=>1, 'visible'=>-2, 'position'=>50, 'searchall'=>1),
|
||||||
@ -962,6 +962,7 @@ class Entrepot extends CommonObject
|
|||||||
*/
|
*/
|
||||||
public function getKanbanView($option = '', $arraydata = null)
|
public function getKanbanView($option = '', $arraydata = null)
|
||||||
{
|
{
|
||||||
|
$selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']);
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
@ -970,6 +971,7 @@ class Entrepot extends CommonObject
|
|||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '<div class="info-box-content" >';
|
$return .= '<div class="info-box-content" >';
|
||||||
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
$return .= '<span class="info-box-ref">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
|
||||||
|
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
|
||||||
if (property_exists($this, 'lieu') && (!empty($this->lieu))) {
|
if (property_exists($this, 'lieu') && (!empty($this->lieu))) {
|
||||||
$return .= '<br><span class="info-box-label opacitymedium">'.$this->lieu.'</span>';
|
$return .= '<br><span class="info-box-label opacitymedium">'.$this->lieu.'</span>';
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user