Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop
This commit is contained in:
commit
803b0eb3bd
@ -86,13 +86,14 @@ class Members extends DolibarrApi
|
|||||||
* @param int $limit Limit for list
|
* @param int $limit Limit for list
|
||||||
* @param int $page Page number
|
* @param int $page Page number
|
||||||
* @param string $typeid ID of the type of member
|
* @param string $typeid ID of the type of member
|
||||||
|
* @param int $category Use this param to filter list by category
|
||||||
* @param string $sqlfilters Other criteria to filter answers separated by a comma.
|
* @param string $sqlfilters Other criteria to filter answers separated by a comma.
|
||||||
* Example: "(t.ref:like:'SO-%') and ((t.date_creation:<:'20160101') or (t.nature:is:NULL))"
|
* Example: "(t.ref:like:'SO-%') and ((t.date_creation:<:'20160101') or (t.nature:is:NULL))"
|
||||||
* @return array Array of member objects
|
* @return array Array of member objects
|
||||||
*
|
*
|
||||||
* @throws RestException
|
* @throws RestException
|
||||||
*/
|
*/
|
||||||
public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $typeid = '', $sqlfilters = '')
|
public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $typeid = '', $category = 0, $sqlfilters = '')
|
||||||
{
|
{
|
||||||
global $db, $conf;
|
global $db, $conf;
|
||||||
|
|
||||||
@ -104,11 +105,19 @@ class Members extends DolibarrApi
|
|||||||
|
|
||||||
$sql = "SELECT t.rowid";
|
$sql = "SELECT t.rowid";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."adherent as t";
|
$sql .= " FROM ".MAIN_DB_PREFIX."adherent as t";
|
||||||
|
if ($category > 0) {
|
||||||
|
$sql .= ", ".MAIN_DB_PREFIX."categorie_member as c";
|
||||||
|
}
|
||||||
$sql .= ' WHERE t.entity IN ('.getEntity('adherent').')';
|
$sql .= ' WHERE t.entity IN ('.getEntity('adherent').')';
|
||||||
if (!empty($typeid))
|
if (!empty($typeid))
|
||||||
{
|
{
|
||||||
$sql .= ' AND t.fk_adherent_type='.$typeid;
|
$sql .= ' AND t.fk_adherent_type='.$typeid;
|
||||||
}
|
}
|
||||||
|
// Select members of given category
|
||||||
|
if ($category > 0) {
|
||||||
|
$sql .= " AND c.fk_categorie = ".$db->escape($category);
|
||||||
|
$sql .= " AND c.fk_member = t.rowid ";
|
||||||
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters)
|
if ($sqlfilters)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -57,12 +57,13 @@ class BankAccounts extends DolibarrApi
|
|||||||
* @param string $sortorder Sort order
|
* @param string $sortorder Sort order
|
||||||
* @param int $limit Limit for list
|
* @param int $limit Limit for list
|
||||||
* @param int $page Page number
|
* @param int $page Page number
|
||||||
|
* @param int $category Use this param to filter list by category
|
||||||
* @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.import_key:<:'20160101')"
|
* @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.import_key:<:'20160101')"
|
||||||
* @return array List of account objects
|
* @return array List of account objects
|
||||||
*
|
*
|
||||||
* @throws RestException
|
* @throws RestException
|
||||||
*/
|
*/
|
||||||
public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $sqlfilters = '')
|
public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $category = 0, $sqlfilters = '')
|
||||||
{
|
{
|
||||||
$list = array();
|
$list = array();
|
||||||
|
|
||||||
@ -71,7 +72,14 @@ class BankAccounts extends DolibarrApi
|
|||||||
}
|
}
|
||||||
|
|
||||||
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."bank_account as t";
|
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."bank_account as t";
|
||||||
|
if ($category > 0) {
|
||||||
|
$sql .= ", ".MAIN_DB_PREFIX."categorie_account as c";
|
||||||
|
}
|
||||||
$sql .= ' WHERE t.entity IN ('.getEntity('bank_account').')';
|
$sql .= ' WHERE t.entity IN ('.getEntity('bank_account').')';
|
||||||
|
// Select accounts of given category
|
||||||
|
if ($category > 0) {
|
||||||
|
$sql .= " AND c.fk_categorie = ".$db->escape($category)." AND c.fk_account = t.rowid ";
|
||||||
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters)
|
if ($sqlfilters)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -75,6 +75,8 @@ if ($action == 'add' && !empty($permissiontoadd))
|
|||||||
$value = 60 * 60 * GETPOST($key.'hour', 'int') + 60 * GETPOST($key.'min', 'int');
|
$value = 60 * 60 * GETPOST($key.'hour', 'int') + 60 * GETPOST($key.'min', 'int');
|
||||||
} elseif (preg_match('/^(integer|price|real|double)/', $object->fields[$key]['type'])) {
|
} elseif (preg_match('/^(integer|price|real|double)/', $object->fields[$key]['type'])) {
|
||||||
$value = price2num(GETPOST($key, 'none')); // To fix decimal separator according to lang setup
|
$value = price2num(GETPOST($key, 'none')); // To fix decimal separator according to lang setup
|
||||||
|
} elseif ($object->fields[$key]['type'] == 'boolean') {
|
||||||
|
$value = (GETPOST($key) == 'on' ? 1 : 0);
|
||||||
} else {
|
} else {
|
||||||
$value = GETPOST($key, 'alphanohtml');
|
$value = GETPOST($key, 'alphanohtml');
|
||||||
}
|
}
|
||||||
@ -156,6 +158,8 @@ if ($action == 'update' && !empty($permissiontoadd))
|
|||||||
}
|
}
|
||||||
} elseif (preg_match('/^(integer|price|real|double)/', $object->fields[$key]['type'])) {
|
} elseif (preg_match('/^(integer|price|real|double)/', $object->fields[$key]['type'])) {
|
||||||
$value = price2num(GETPOST($key, 'none')); // To fix decimal separator according to lang setup
|
$value = price2num(GETPOST($key, 'none')); // To fix decimal separator according to lang setup
|
||||||
|
} elseif ($object->fields[$key]['type'] == 'boolean') {
|
||||||
|
$value = (GETPOST($key) == 'on' ? 1 : 0);
|
||||||
} else {
|
} else {
|
||||||
$value = GETPOST($key, 'alpha');
|
$value = GETPOST($key, 'alpha');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
|
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
|
||||||
* Copyright (C) 2016 Charlie Benke <charlie@patas-monkey.com>
|
* Copyright (C) 2016 Charlie Benke <charlie@patas-monkey.com>
|
||||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||||
|
* Copyright (C) 2020 Josep Lluís Amador <joseplluis@lliuretic.cat>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -386,6 +387,12 @@ abstract class CommonDocGenerator
|
|||||||
$sumcreditnote = $object->getSumCreditNotesUsed();
|
$sumcreditnote = $object->getSumCreditNotesUsed();
|
||||||
$already_payed_all = $sumpayed + $sumdeposit + $sumcreditnote;
|
$already_payed_all = $sumpayed + $sumdeposit + $sumcreditnote;
|
||||||
$remain_to_pay = $sumpayed - $sumdeposit - $sumcreditnote;
|
$remain_to_pay = $sumpayed - $sumdeposit - $sumcreditnote;
|
||||||
|
|
||||||
|
if ($object->fk_account > 0) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT .'/compta/bank/class/account.class.php';
|
||||||
|
$bank_account = new Account($this->db);
|
||||||
|
$bank_account->fetch($object->fk_account);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$date = ($object->element == 'contrat' ? $object->date_contrat : $object->date);
|
$date = ($object->element == 'contrat' ? $object->date_contrat : $object->date);
|
||||||
@ -414,6 +421,9 @@ abstract class CommonDocGenerator
|
|||||||
$array_key.'_payment_term_code'=>$object->cond_reglement_code,
|
$array_key.'_payment_term_code'=>$object->cond_reglement_code,
|
||||||
$array_key.'_payment_term'=>($outputlangs->transnoentitiesnoconv('PaymentCondition'.$object->cond_reglement_code) != 'PaymentCondition'.$object->cond_reglement_code ? $outputlangs->transnoentitiesnoconv('PaymentCondition'.$object->cond_reglement_code) : ($object->cond_reglement_doc ? $object->cond_reglement_doc : $object->cond_reglement)),
|
$array_key.'_payment_term'=>($outputlangs->transnoentitiesnoconv('PaymentCondition'.$object->cond_reglement_code) != 'PaymentCondition'.$object->cond_reglement_code ? $outputlangs->transnoentitiesnoconv('PaymentCondition'.$object->cond_reglement_code) : ($object->cond_reglement_doc ? $object->cond_reglement_doc : $object->cond_reglement)),
|
||||||
|
|
||||||
|
$array_key.'_bank_iban'=>$bank_account->iban,
|
||||||
|
$array_key.'_bank_bic'=>$bank_account->bic,
|
||||||
|
|
||||||
$array_key.'_total_ht_locale'=>price($object->total_ht, 0, $outputlangs),
|
$array_key.'_total_ht_locale'=>price($object->total_ht, 0, $outputlangs),
|
||||||
$array_key.'_total_vat_locale'=>(!empty($object->total_vat) ?price($object->total_vat, 0, $outputlangs) : price($object->total_tva, 0, $outputlangs)),
|
$array_key.'_total_vat_locale'=>(!empty($object->total_vat) ?price($object->total_vat, 0, $outputlangs) : price($object->total_tva, 0, $outputlangs)),
|
||||||
$array_key.'_total_localtax1_locale'=>price($object->total_localtax1, 0, $outputlangs),
|
$array_key.'_total_localtax1_locale'=>price($object->total_localtax1, 0, $outputlangs),
|
||||||
|
|||||||
@ -34,7 +34,6 @@ if (!class_exists('FormCompany')) {
|
|||||||
* Classe permettant la generation du formulaire d'un nouveau ticket.
|
* Classe permettant la generation du formulaire d'un nouveau ticket.
|
||||||
*
|
*
|
||||||
* @package Ticket
|
* @package Ticket
|
||||||
|
|
||||||
* \remarks Utilisation: $formticket = new FormTicket($db)
|
* \remarks Utilisation: $formticket = new FormTicket($db)
|
||||||
* \remarks $formticket->proprietes=1 ou chaine ou tableau de valeurs
|
* \remarks $formticket->proprietes=1 ou chaine ou tableau de valeurs
|
||||||
* \remarks $formticket->show_form() affiche le formulaire
|
* \remarks $formticket->show_form() affiche le formulaire
|
||||||
|
|||||||
@ -363,6 +363,8 @@ class RssParser
|
|||||||
if (!empty($rss->channel['link'])) $this->_link = (string) $rss->channel['link'];
|
if (!empty($rss->channel['link'])) $this->_link = (string) $rss->channel['link'];
|
||||||
if (!empty($rss->channel['title'])) $this->_title = (string) $rss->channel['title'];
|
if (!empty($rss->channel['title'])) $this->_title = (string) $rss->channel['title'];
|
||||||
//if (!empty($rss->channel['rss_description'])) $this->_description = (string) $rss->channel['rss_description'];
|
//if (!empty($rss->channel['rss_description'])) $this->_description = (string) $rss->channel['rss_description'];
|
||||||
|
|
||||||
|
$this->_imageurl = $this->getAtomImageUrl($rss->channel);
|
||||||
}
|
}
|
||||||
if (!empty($conf->global->EXTERNALRSS_USE_SIMPLEXML)) {
|
if (!empty($conf->global->EXTERNALRSS_USE_SIMPLEXML)) {
|
||||||
$tmprss = xml2php($rss); $items = $tmprss['entry'];
|
$tmprss = xml2php($rss); $items = $tmprss['entry'];
|
||||||
@ -414,18 +416,18 @@ class RssParser
|
|||||||
{
|
{
|
||||||
if (!empty($conf->global->EXTERNALRSS_USE_SIMPLEXML))
|
if (!empty($conf->global->EXTERNALRSS_USE_SIMPLEXML))
|
||||||
{
|
{
|
||||||
$itemLink = (isset($item['link']['href']) ? (string) $item['link']['href'] : '');
|
$itemLink = (isset($item['link']) ? (string) $item['link'] : '');
|
||||||
$itemTitle = (string) $item['title'];
|
$itemTitle = (string) $item['title'];
|
||||||
$itemDescription = (string) $item['summary'];
|
$itemDescription = $this->getAtomItemDescription($item);
|
||||||
$itemPubDate = (string) $item['created'];
|
$itemPubDate = (string) $item['created'];
|
||||||
$itemId = (string) $item['id'];
|
$itemId = (string) $item['id'];
|
||||||
$itemAuthor = (string) ($item['author'] ? $item['author'] : $item['author_name']);
|
$itemAuthor = (string) ($item['author'] ? $item['author'] : $item['author_name']);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$itemLink = (isset($item['link']['href']) ? (string) $item['link']['href'] : '');
|
$itemLink = (isset($item['link']) ? (string) $item['link'] : '');
|
||||||
$itemTitle = (string) $item['title'];
|
$itemTitle = (string) $item['title'];
|
||||||
$itemDescription = (string) $item['summary'];
|
$itemDescription = $this->getAtomItemDescription($item);
|
||||||
$itemPubDate = (string) $item['created'];
|
$itemPubDate = (string) $item['created'];
|
||||||
$itemId = (string) $item['id'];
|
$itemId = (string) $item['id'];
|
||||||
$itemAuthor = (string) ($item['author'] ? $item['author'] : $item['author_name']);
|
$itemAuthor = (string) ($item['author'] ? $item['author'] : $item['author_name']);
|
||||||
@ -568,7 +570,12 @@ class RssParser
|
|||||||
{
|
{
|
||||||
$link_el = 'link';
|
$link_el = 'link';
|
||||||
}
|
}
|
||||||
else {
|
elseif (!isset($attrs['rel']))
|
||||||
|
{
|
||||||
|
$link_el = 'link';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
$link_el = 'link_'.$attrs['rel'];
|
$link_el = 'link_'.$attrs['rel'];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -734,6 +741,77 @@ class RssParser
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a description/summary for one item from a ATOM feed
|
||||||
|
*
|
||||||
|
* @param array $item A parsed item of a ATOM feed
|
||||||
|
* @param int $maxlength (optional) The maximum length for the description
|
||||||
|
* @return string A summary description
|
||||||
|
*/
|
||||||
|
private function getAtomItemDescription(array $item, $maxlength = 500)
|
||||||
|
{
|
||||||
|
$result = "";
|
||||||
|
|
||||||
|
if (isset($item['summary']))
|
||||||
|
{
|
||||||
|
$result = $item['summary'];
|
||||||
|
}
|
||||||
|
elseif (isset($item['atom_content']))
|
||||||
|
{
|
||||||
|
$result = $item['atom_content'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove all HTML elements that can possible break the maximum size of a tooltip,
|
||||||
|
// like headings, image, video etc. and allow only simple style elements
|
||||||
|
$result = strip_tags($result, "<br><p><ul><ol><li>");
|
||||||
|
|
||||||
|
$result = str_replace("\n", "", $result);
|
||||||
|
|
||||||
|
if (strlen($result) > $maxlength)
|
||||||
|
{
|
||||||
|
$result = substr($result, 0, $maxlength);
|
||||||
|
$result .= "...";
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a URL to a image of the given ATOM feed
|
||||||
|
*
|
||||||
|
* @param array $feed The ATOM feed that possible contain a link to a logo or icon
|
||||||
|
* @return string A URL to a image from a ATOM feed when found, otherwise a empty string
|
||||||
|
*/
|
||||||
|
private function getAtomImageUrl(array $feed)
|
||||||
|
{
|
||||||
|
if (isset($feed['icon']))
|
||||||
|
{
|
||||||
|
return $feed['logo'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($feed['icon']))
|
||||||
|
{
|
||||||
|
return $feed['logo'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($feed['webfeeds:logo']))
|
||||||
|
{
|
||||||
|
return $feed['webfeeds:logo'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($feed['webfeeds:icon']))
|
||||||
|
{
|
||||||
|
return $feed['webfeeds:icon'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($feed['webfeeds:wordmark']))
|
||||||
|
{
|
||||||
|
return $feed['webfeeds:wordmark'];
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -376,7 +376,7 @@ class pdf_sponge extends ModelePDFFactures
|
|||||||
if (!empty($conf->global->MAIN_DISABLE_PDF_COMPRESSION)) $pdf->SetCompression(false);
|
if (!empty($conf->global->MAIN_DISABLE_PDF_COMPRESSION)) $pdf->SetCompression(false);
|
||||||
|
|
||||||
// Set certificate
|
// Set certificate
|
||||||
$cert=empty($user->conf->CERTIFICATE_CRT) ? '' : $user->conf->CERTIFICATE_CRT;
|
$cert = empty($user->conf->CERTIFICATE_CRT) ? '' : $user->conf->CERTIFICATE_CRT;
|
||||||
// If use has no certificate, we try to take the company one
|
// If use has no certificate, we try to take the company one
|
||||||
if (!$cert) {
|
if (!$cert) {
|
||||||
$cert = empty($conf->global->CERTIFICATE_CRT) ? '' : $conf->global->CERTIFICATE_CRT;
|
$cert = empty($conf->global->CERTIFICATE_CRT) ? '' : $conf->global->CERTIFICATE_CRT;
|
||||||
|
|||||||
@ -113,3 +113,5 @@ CantDisableYourself=You can't disable your own user record
|
|||||||
ForceUserExpenseValidator=Force expense report validator
|
ForceUserExpenseValidator=Force expense report validator
|
||||||
ForceUserHolidayValidator=Force leave request validator
|
ForceUserHolidayValidator=Force leave request validator
|
||||||
ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour.
|
ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour.
|
||||||
|
UserPersonalEmail=Personal email
|
||||||
|
UserPersonalMobile=Personal mobile phone
|
||||||
|
|||||||
@ -70,8 +70,8 @@ if ($cancel) $action ='';
|
|||||||
if ($action == 'add_prod' && ($user->rights->produit->creer || $user->rights->service->creer))
|
if ($action == 'add_prod' && ($user->rights->produit->creer || $user->rights->service->creer))
|
||||||
{
|
{
|
||||||
$error=0;
|
$error=0;
|
||||||
var_dump(GETPOST("max_prod", 'int'));
|
$maxprod = GETPOST("max_prod", 'int');
|
||||||
for ($i=0; $i < GETPOST("max_prod", 'int'); $i++)
|
for ($i=0; $i < $maxprod; $i++)
|
||||||
{
|
{
|
||||||
$qty = price2num(GETPOST("prod_qty_".$i, 'alpha'), 'MS');
|
$qty = price2num(GETPOST("prod_qty_".$i, 'alpha'), 'MS');
|
||||||
if ($qty > 0)
|
if ($qty > 0)
|
||||||
|
|||||||
@ -87,12 +87,13 @@ class Warehouses extends DolibarrApi
|
|||||||
* @param string $sortorder Sort order
|
* @param string $sortorder Sort order
|
||||||
* @param int $limit Limit for list
|
* @param int $limit Limit for list
|
||||||
* @param int $page Page number
|
* @param int $page Page number
|
||||||
|
* @param int $category Use this param to filter list by category
|
||||||
* @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.label:like:'WH-%') and (t.date_creation:<:'20160101')"
|
* @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.label:like:'WH-%') and (t.date_creation:<:'20160101')"
|
||||||
* @return array Array of warehouse objects
|
* @return array Array of warehouse objects
|
||||||
*
|
*
|
||||||
* @throws RestException
|
* @throws RestException
|
||||||
*/
|
*/
|
||||||
public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $sqlfilters = '')
|
public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $category = 0, $sqlfilters = '')
|
||||||
{
|
{
|
||||||
global $db, $conf;
|
global $db, $conf;
|
||||||
|
|
||||||
@ -104,7 +105,15 @@ class Warehouses extends DolibarrApi
|
|||||||
|
|
||||||
$sql = "SELECT t.rowid";
|
$sql = "SELECT t.rowid";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."entrepot as t";
|
$sql .= " FROM ".MAIN_DB_PREFIX."entrepot as t";
|
||||||
|
if ($category > 0) {
|
||||||
|
$sql .= ", ".MAIN_DB_PREFIX."categorie_societe as c";
|
||||||
|
}
|
||||||
$sql .= ' WHERE t.entity IN ('.getEntity('stock').')';
|
$sql .= ' WHERE t.entity IN ('.getEntity('stock').')';
|
||||||
|
// Select warehouses of given category
|
||||||
|
if ($category > 0) {
|
||||||
|
$sql .= " AND c.fk_categorie = ".$db->escape($category);
|
||||||
|
$sql .= " AND c.fk_warehouse = t.rowid ";
|
||||||
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters)
|
if ($sqlfilters)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -95,10 +95,11 @@ class Projects extends DolibarrApi
|
|||||||
* @param int $limit Limit for list
|
* @param int $limit Limit for list
|
||||||
* @param int $page Page number
|
* @param int $page Page number
|
||||||
* @param string $thirdparty_ids Thirdparty ids to filter projects of (example '1' or '1,2,3') {@pattern /^[0-9,]*$/i}
|
* @param string $thirdparty_ids Thirdparty ids to filter projects of (example '1' or '1,2,3') {@pattern /^[0-9,]*$/i}
|
||||||
|
* @param int $category Use this param to filter list by category
|
||||||
* @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')"
|
* @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')"
|
||||||
* @return array Array of project objects
|
* @return array Array of project objects
|
||||||
*/
|
*/
|
||||||
public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $thirdparty_ids = '', $sqlfilters = '')
|
public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $thirdparty_ids = '', $category = 0, $sqlfilters = '')
|
||||||
{
|
{
|
||||||
global $db, $conf;
|
global $db, $conf;
|
||||||
|
|
||||||
@ -114,7 +115,9 @@ class Projects extends DolibarrApi
|
|||||||
$sql = "SELECT t.rowid";
|
$sql = "SELECT t.rowid";
|
||||||
if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects)
|
if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects)
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."projet as t";
|
$sql .= " FROM ".MAIN_DB_PREFIX."projet as t";
|
||||||
|
if ($category > 0) {
|
||||||
|
$sql .= ", ".MAIN_DB_PREFIX."categorie_project as c";
|
||||||
|
}
|
||||||
if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale
|
if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale
|
||||||
|
|
||||||
$sql .= ' WHERE t.entity IN ('.getEntity('project').')';
|
$sql .= ' WHERE t.entity IN ('.getEntity('project').')';
|
||||||
@ -126,6 +129,10 @@ class Projects extends DolibarrApi
|
|||||||
{
|
{
|
||||||
$sql .= " AND sc.fk_user = ".$search_sale;
|
$sql .= " AND sc.fk_user = ".$search_sale;
|
||||||
}
|
}
|
||||||
|
// Select projects of given category
|
||||||
|
if ($category > 0) {
|
||||||
|
$sql .= " AND c.fk_categorie = ".$db->escape($category)." AND c.fk_project = t.rowid ";
|
||||||
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters)
|
if ($sqlfilters)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -108,13 +108,14 @@ class Contacts extends DolibarrApi
|
|||||||
* @param int $limit Limit for list
|
* @param int $limit Limit for list
|
||||||
* @param int $page Page number
|
* @param int $page Page number
|
||||||
* @param string $thirdparty_ids Thirdparty ids to filter contacts of (example '1' or '1,2,3') {@pattern /^[0-9,]*$/i}
|
* @param string $thirdparty_ids Thirdparty ids to filter contacts of (example '1' or '1,2,3') {@pattern /^[0-9,]*$/i}
|
||||||
|
* @param int $category Use this param to filter list by category
|
||||||
* @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')"
|
* @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')"
|
||||||
* @param int $includecount Count and return also number of elements the contact is used as a link for
|
* @param int $includecount Count and return also number of elements the contact is used as a link for
|
||||||
* @return array Array of contact objects
|
* @return array Array of contact objects
|
||||||
*
|
*
|
||||||
* @throws RestException
|
* @throws RestException
|
||||||
*/
|
*/
|
||||||
public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $thirdparty_ids = '', $sqlfilters = '', $includecount = 0)
|
public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $thirdparty_ids = '', $category = 0, $sqlfilters = '', $includecount = 0)
|
||||||
{
|
{
|
||||||
global $db, $conf;
|
global $db, $conf;
|
||||||
|
|
||||||
@ -135,6 +136,9 @@ class Contacts extends DolibarrApi
|
|||||||
|
|
||||||
$sql = "SELECT t.rowid";
|
$sql = "SELECT t.rowid";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."socpeople as t";
|
$sql .= " FROM ".MAIN_DB_PREFIX."socpeople as t";
|
||||||
|
if ($category > 0) {
|
||||||
|
$sql .= ", ".MAIN_DB_PREFIX."categorie_contact as c";
|
||||||
|
}
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople_extrafields as te ON te.fk_object = t.rowid";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople_extrafields as te ON te.fk_object = t.rowid";
|
||||||
if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) {
|
if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) {
|
||||||
// We need this table joined to the select in order to filter by sale
|
// We need this table joined to the select in order to filter by sale
|
||||||
@ -153,6 +157,13 @@ class Contacts extends DolibarrApi
|
|||||||
{
|
{
|
||||||
$sql .= " AND sc.fk_user = ".$search_sale;
|
$sql .= " AND sc.fk_user = ".$search_sale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Select contacts of given category
|
||||||
|
if ($category > 0) {
|
||||||
|
$sql .= " AND c.fk_categorie = ".$db->escape($category);
|
||||||
|
$sql .= " AND c.fk_socpeople = t.rowid ";
|
||||||
|
}
|
||||||
|
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters)
|
if ($sqlfilters)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -107,10 +107,11 @@ class Thirdparties extends DolibarrApi
|
|||||||
* Set to 2 to show only prospects
|
* Set to 2 to show only prospects
|
||||||
* Set to 3 to show only those are not customer neither prospect
|
* Set to 3 to show only those are not customer neither prospect
|
||||||
* Set to 4 to show only suppliers
|
* Set to 4 to show only suppliers
|
||||||
|
* @param int $category Use this param to filter list by category
|
||||||
* @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.nom:like:'TheCompany%') and (t.date_creation:<:'20160101')"
|
* @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.nom:like:'TheCompany%') and (t.date_creation:<:'20160101')"
|
||||||
* @return array Array of thirdparty objects
|
* @return array Array of thirdparty objects
|
||||||
*/
|
*/
|
||||||
public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $mode = 0, $sqlfilters = '')
|
public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $mode = 0, $category = 0, $sqlfilters = '')
|
||||||
{
|
{
|
||||||
global $db;
|
global $db;
|
||||||
|
|
||||||
@ -126,15 +127,27 @@ class Thirdparties extends DolibarrApi
|
|||||||
$sql = "SELECT t.rowid";
|
$sql = "SELECT t.rowid";
|
||||||
if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects)
|
if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects)
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."societe as t";
|
$sql .= " FROM ".MAIN_DB_PREFIX."societe as t";
|
||||||
|
if ($category > 0) {
|
||||||
|
if ($mode != 4) $sql .= ", ".MAIN_DB_PREFIX."categorie_societe as c";
|
||||||
|
if (!in_array($mode, array(1,2,3))) $sql .= ", ".MAIN_DB_PREFIX."categorie_fournisseur as cc";
|
||||||
|
}
|
||||||
if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale
|
if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale
|
||||||
$sql .= ", ".MAIN_DB_PREFIX."c_stcomm as st";
|
$sql .= ", ".MAIN_DB_PREFIX."c_stcomm as st";
|
||||||
$sql .= " WHERE t.fk_stcomm = st.id";
|
$sql .= " WHERE t.entity IN ('.getEntity('societe').')";
|
||||||
|
$sql .= " AND t.fk_stcomm = st.id";
|
||||||
|
|
||||||
if ($mode == 1) $sql .= " AND t.client IN (1, 3)";
|
if ($mode == 1) $sql .= " AND t.client IN (1, 3)";
|
||||||
if ($mode == 2) $sql .= " AND t.client IN (2, 3)";
|
if ($mode == 2) $sql .= " AND t.client IN (2, 3)";
|
||||||
if ($mode == 3) $sql .= " AND t.client IN (0)";
|
if ($mode == 3) $sql .= " AND t.client IN (0)";
|
||||||
if ($mode == 4) $sql .= " AND t.fournisseur IN (1)";
|
if ($mode == 4) $sql .= " AND t.fournisseur IN (1)";
|
||||||
$sql .= ' AND t.entity IN ('.getEntity('societe').')';
|
|
||||||
|
// Select thirdparties of given category
|
||||||
|
if ($category > 0) {
|
||||||
|
if (!empty($mode) && $mode != 4) { $sql .= " AND c.fk_categorie = ".$db->escape($category)." AND c.fk_soc = t.rowid"; }
|
||||||
|
elseif (!empty($mode) && $mode == 4) { $sql .= " AND cc.fk_categorie = ".$db->escape($category)." AND cc.fk_soc = t.rowid"; }
|
||||||
|
else { $sql .= " AND ((c.fk_categorie = ".$db->escape($category)." AND c.fk_soc = t.rowid) OR (cc.fk_categorie = ".$db->escape($category)." AND cc.fk_soc = t.rowid))"; }
|
||||||
|
}
|
||||||
|
|
||||||
if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql .= " AND t.rowid = sc.fk_soc";
|
if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql .= " AND t.rowid = sc.fk_soc";
|
||||||
//if ($email != NULL) $sql.= " AND s.email = \"".$email."\"";
|
//if ($email != NULL) $sql.= " AND s.email = \"".$email."\"";
|
||||||
if ($socids) $sql .= " AND t.rowid IN (".$socids.")";
|
if ($socids) $sql .= " AND t.rowid IN (".$socids.")";
|
||||||
|
|||||||
@ -145,6 +145,22 @@ if ($action == 'update' && !$cancel)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// update personal email
|
||||||
|
if ($action == 'setpersonal_email')
|
||||||
|
{
|
||||||
|
$object->personal_email = GETPOST('personal_email');
|
||||||
|
$result = $object->update($user);
|
||||||
|
if ($result < 0) setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
}
|
||||||
|
|
||||||
|
// update personal mobile
|
||||||
|
if ($action == 'setpersonal_mobile')
|
||||||
|
{
|
||||||
|
$object->personal_mobile = GETPOST('personal_mobile');
|
||||||
|
$result = $object->update($user);
|
||||||
|
if ($result < 0) setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* View
|
* View
|
||||||
@ -197,6 +213,22 @@ if ($action != 'edit' && $action != 'create') // If not bank account yet, $acco
|
|||||||
print '<td>'.$object->login.'</td>';
|
print '<td>'.$object->login.'</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
|
print '<tr class="nowrap">';
|
||||||
|
print '<td>';
|
||||||
|
print $form->editfieldkey("UserPersonalEmail", 'personal_email', $object->personal_email, $object, $user->rights->user->user->creer);
|
||||||
|
print '</td><td>';
|
||||||
|
print $form->editfieldval("UserPersonalEmail", 'personal_email', $object->personal_email, $object, $user->rights->user->user->creer, 'email', ($object->personal_email != '' ? dol_print_email($object->personal_email) : ''));
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
print '<tr class="nowrap">';
|
||||||
|
print '<td>';
|
||||||
|
print $form->editfieldkey("UserPersonalMobile", 'personal_mobile', $object->personal_mobile, $object, $user->rights->user->user->creer);
|
||||||
|
print '</td><td>';
|
||||||
|
print $form->editfieldval("UserPersonalMobile", 'personal_mobile', $object->personal_mobile, $object, $user->rights->user->user->creer, 'string', ($object->personal_mobile != '' ? dol_print_phone($object->personal_mobile) : ''));
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
print '</div><div class="fichehalfright"><div class="ficheaddleft">';
|
print '</div><div class="fichehalfright"><div class="ficheaddleft">';
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
/* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||||
|
/* Copyright (C) 2030 Thibault FOUCART <support@ptibogxiv.net>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -62,10 +63,11 @@ class Users extends DolibarrApi
|
|||||||
* @param int $limit Limit for list
|
* @param int $limit Limit for list
|
||||||
* @param int $page Page number
|
* @param int $page Page number
|
||||||
* @param string $user_ids User ids filter field. Example: '1' or '1,2,3' {@pattern /^[0-9,]*$/i}
|
* @param string $user_ids User ids filter field. Example: '1' or '1,2,3' {@pattern /^[0-9,]*$/i}
|
||||||
|
* @param int $category Use this param to filter list by category
|
||||||
* @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')"
|
* @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')"
|
||||||
* @return array Array of User objects
|
* @return array Array of User objects
|
||||||
*/
|
*/
|
||||||
public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $user_ids = 0, $sqlfilters = '')
|
public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $user_ids = 0, $category = 0, $sqlfilters = '')
|
||||||
{
|
{
|
||||||
global $db, $conf;
|
global $db, $conf;
|
||||||
|
|
||||||
@ -80,8 +82,18 @@ class Users extends DolibarrApi
|
|||||||
|
|
||||||
$sql = "SELECT t.rowid";
|
$sql = "SELECT t.rowid";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."user as t";
|
$sql .= " FROM ".MAIN_DB_PREFIX."user as t";
|
||||||
|
if ($category > 0) {
|
||||||
|
$sql .= ", ".MAIN_DB_PREFIX."categorie_user as c";
|
||||||
|
}
|
||||||
$sql .= ' WHERE t.entity IN ('.getEntity('user').')';
|
$sql .= ' WHERE t.entity IN ('.getEntity('user').')';
|
||||||
if ($user_ids) $sql .= " AND t.rowid IN (".$user_ids.")";
|
if ($user_ids) $sql .= " AND t.rowid IN (".$user_ids.")";
|
||||||
|
|
||||||
|
// Select products of given category
|
||||||
|
if ($category > 0) {
|
||||||
|
$sql .= " AND c.fk_categorie = ".$db->escape($category);
|
||||||
|
$sql .= " AND c.fk_user = t.rowid ";
|
||||||
|
}
|
||||||
|
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters)
|
if ($sqlfilters)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -102,7 +102,7 @@ if ($rss) {
|
|||||||
$MAXNEWS = 20;
|
$MAXNEWS = 20;
|
||||||
$arrayofblogs = $websitepage->fetchAll($website->id, 'DESC', 'date_creation', $MAXNEWS, 0, $filters);
|
$arrayofblogs = $websitepage->fetchAll($website->id, 'DESC', 'date_creation', $MAXNEWS, 0, $filters);
|
||||||
$eventarray = array();
|
$eventarray = array();
|
||||||
foreach($arrayofblogs as $blog) {
|
foreach ($arrayofblogs as $blog) {
|
||||||
$blog->fullpageurl = $website->virtualhost.'/'.$blog->pageurl.'.php';
|
$blog->fullpageurl = $website->virtualhost.'/'.$blog->pageurl.'.php';
|
||||||
$eventarray[] = $blog;
|
$eventarray[] = $blog;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user