Merge branch '16.0' of git@github.com:Dolibarr/dolibarr.git into develop
This commit is contained in:
commit
06d94c9a97
@ -58,7 +58,7 @@ Requires: mysql, mysql-client
|
|||||||
%if 0%{?suse_version}
|
%if 0%{?suse_version}
|
||||||
# Voir http://en.opensuse.org/openSUSE:Packaging_Conventions_RPM_Macros
|
# Voir http://en.opensuse.org/openSUSE:Packaging_Conventions_RPM_Macros
|
||||||
Group: Productivity/Office/Management
|
Group: Productivity/Office/Management
|
||||||
Requires: apache2, apache2-mod_php5, php5 >= 5.3.0, php5-gd, php5-ldap, php5-imap, php5-mysql, php5-openssl, dejavu
|
Requires: apache2, apache2-mod_php, php >= 5.3.0, php-gd, php-ldap, php-imap, php-mysql, php-openssl, dejavu
|
||||||
Requires: mysql-community-server, mysql-community-server-client
|
Requires: mysql-community-server, mysql-community-server-client
|
||||||
BuildRequires: update-desktop-files fdupes
|
BuildRequires: update-desktop-files fdupes
|
||||||
%else
|
%else
|
||||||
|
|||||||
@ -25,7 +25,7 @@ BuildArch: noarch
|
|||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
|
|
||||||
Group: Productivity/Office/Management
|
Group: Productivity/Office/Management
|
||||||
Requires: apache2, apache2-mod_php5, php5 >= 5.3.0, php5-gd, php5-ldap, php5-imap, php5-mysql, php5-openssl, dejavu
|
Requires: apache2, apache2-mod_php, php >= 5.3.0, php-gd, php-ldap, php-imap, php-mysql, php-openssl, dejavu
|
||||||
Requires: mysql-community-server, mysql-community-server-client
|
Requires: mysql-community-server, mysql-community-server-client
|
||||||
%if 0%{?suse_version}
|
%if 0%{?suse_version}
|
||||||
BuildRequires: update-desktop-files fdupes
|
BuildRequires: update-desktop-files fdupes
|
||||||
@ -66,7 +66,6 @@ ed essere facile da usare.
|
|||||||
Programmo web, progettato per poter fornire solo ciò di
|
Programmo web, progettato per poter fornire solo ciò di
|
||||||
cui hai bisogno ed essere facile da usare.
|
cui hai bisogno ed essere facile da usare.
|
||||||
|
|
||||||
%_datadir/dolibarr/htdocs/webhook
|
|
||||||
|
|
||||||
#---- prep
|
#---- prep
|
||||||
%prep
|
%prep
|
||||||
|
|||||||
@ -481,8 +481,8 @@ class Members extends DolibarrApi
|
|||||||
* Add a subscription for a member
|
* Add a subscription for a member
|
||||||
*
|
*
|
||||||
* @param int $id ID of member
|
* @param int $id ID of member
|
||||||
* @param int $start_date Start date {@from body} {@type timestamp}
|
* @param string $start_date Start date {@from body} {@type timestamp}
|
||||||
* @param int $end_date End date {@from body} {@type timestamp}
|
* @param string $end_date End date {@from body} {@type timestamp}
|
||||||
* @param float $amount Amount (may be 0) {@from body}
|
* @param float $amount Amount (may be 0) {@from body}
|
||||||
* @param string $label Label {@from body}
|
* @param string $label Label {@from body}
|
||||||
* @return int ID of subscription
|
* @return int ID of subscription
|
||||||
|
|||||||
@ -2446,7 +2446,7 @@ if ($resql) {
|
|||||||
|
|
||||||
// Get local and virtual stock and store it into cache
|
// Get local and virtual stock and store it into cache
|
||||||
if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product])) {
|
if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product])) {
|
||||||
$generic_product->load_stock('nobatch'); // ->load_virtual_stock() is already included into load_stock()
|
$generic_product->load_stock('nobatch,warehouseopen'); // ->load_virtual_stock() is already included into load_stock()
|
||||||
$productstat_cache[$generic_commande->lines[$lig]->fk_product]['stock_reel'] = $generic_product->stock_reel;
|
$productstat_cache[$generic_commande->lines[$lig]->fk_product]['stock_reel'] = $generic_product->stock_reel;
|
||||||
$productstat_cachevirtual[$generic_commande->lines[$lig]->fk_product]['stock_reel'] = $generic_product->stock_theorique;
|
$productstat_cachevirtual[$generic_commande->lines[$lig]->fk_product]['stock_reel'] = $generic_product->stock_theorique;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -471,7 +471,7 @@ class BankAccounts extends DolibarrApi
|
|||||||
* Add a line to an account
|
* Add a line to an account
|
||||||
*
|
*
|
||||||
* @param int $id ID of account
|
* @param int $id ID of account
|
||||||
* @param int $date Payment date (timestamp) {@from body} {@type timestamp}
|
* @param string $date Payment date (timestamp) {@from body} {@type timestamp}
|
||||||
* @param string $type Payment mode (TYP,VIR,PRE,LIQ,VAD,CB,CHQ...) {@from body}
|
* @param string $type Payment mode (TYP,VIR,PRE,LIQ,VAD,CB,CHQ...) {@from body}
|
||||||
* @param string $label Label {@from body}
|
* @param string $label Label {@from body}
|
||||||
* @param float $amount Amount (may be 0) {@from body}
|
* @param float $amount Amount (may be 0) {@from body}
|
||||||
@ -480,7 +480,7 @@ class BankAccounts extends DolibarrApi
|
|||||||
* @param string $cheque_writer Name of cheque writer {@from body}
|
* @param string $cheque_writer Name of cheque writer {@from body}
|
||||||
* @param string $cheque_bank Bank of cheque writer {@from body}
|
* @param string $cheque_bank Bank of cheque writer {@from body}
|
||||||
* @param string $accountancycode Accountancy code {@from body}
|
* @param string $accountancycode Accountancy code {@from body}
|
||||||
* @param int $datev Payment date value (timestamp) {@from body} {@type timestamp}
|
* @param string $datev Payment date value (timestamp) {@from body} {@type timestamp}
|
||||||
* @param string $num_releve Bank statement numero {@from body}
|
* @param string $num_releve Bank statement numero {@from body}
|
||||||
* @return int ID of line
|
* @return int ID of line
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1452,7 +1452,6 @@ class Invoices extends DolibarrApi
|
|||||||
$multicurrency_amounts[$id] = $newvalue;
|
$multicurrency_amounts[$id] = $newvalue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Creation of payment line
|
// Creation of payment line
|
||||||
$paymentobj = new Paiement($this->db);
|
$paymentobj = new Paiement($this->db);
|
||||||
$paymentobj->datepaye = $datepaye;
|
$paymentobj->datepaye = $datepaye;
|
||||||
|
|||||||
@ -1272,6 +1272,8 @@ class FactureRec extends CommonInvoice
|
|||||||
$tmparray = dol_getdate($now);
|
$tmparray = dol_getdate($now);
|
||||||
$today = dol_mktime(23, 59, 59, $tmparray['mon'], $tmparray['mday'], $tmparray['year']); // Today is last second of current day
|
$today = dol_mktime(23, 59, 59, $tmparray['mon'], $tmparray['mday'], $tmparray['year']); // Today is last second of current day
|
||||||
|
|
||||||
|
$this->output = null;
|
||||||
|
|
||||||
dol_syslog("createRecurringInvoices restrictioninvoiceid=".$restrictioninvoiceid." forcevalidation=".$forcevalidation);
|
dol_syslog("createRecurringInvoices restrictioninvoiceid=".$restrictioninvoiceid." forcevalidation=".$forcevalidation);
|
||||||
|
|
||||||
$sql = 'SELECT rowid FROM '.MAIN_DB_PREFIX.'facture_rec';
|
$sql = 'SELECT rowid FROM '.MAIN_DB_PREFIX.'facture_rec';
|
||||||
|
|||||||
@ -353,7 +353,8 @@ class BonPrelevement extends CommonObject
|
|||||||
|
|
||||||
if ($this->fetched == 1) {
|
if ($this->fetched == 1) {
|
||||||
if ($date < $this->date_trans) {
|
if ($date < $this->date_trans) {
|
||||||
$this->error = 'DateOfMovementLowerThanDateOfFileTransmission';
|
$langs->load("errors");
|
||||||
|
$this->error = $langs->trans('ErrorDateOfMovementLowerThanDateOfFileTransmission');
|
||||||
dol_syslog("bon-prelevment::set_infocredit 1027 ".$this->error);
|
dol_syslog("bon-prelevment::set_infocredit 1027 ".$this->error);
|
||||||
return -1027;
|
return -1027;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -553,7 +553,15 @@ if (strlen($search_fax)) {
|
|||||||
if (isModEnabled('socialnetworks')) {
|
if (isModEnabled('socialnetworks')) {
|
||||||
foreach ($socialnetworks as $key => $value) {
|
foreach ($socialnetworks as $key => $value) {
|
||||||
if ($value['active'] && strlen($search_[$key])) {
|
if ($value['active'] && strlen($search_[$key])) {
|
||||||
$sql .= " AND p.socialnetworks LIKE '%\"".$key."\":\"".$search_[$key]."%'";
|
$searchkeyinjsonformat = preg_replace('/"$/', '', preg_replace('/^"/', '', json_encode($search_[$key])));
|
||||||
|
if (in_array($db->type, array('mysql', 'mysqli'))) {
|
||||||
|
$sql .= " AND p.socialnetworks REGEXP '\"".$db->escapeforlike($db->escape($key))."\":\"[^\"]*".$db->escapeforlike($db->escape($searchkeyinjsonformat))."'";
|
||||||
|
} elseif ($db->type == 'pgsql') {
|
||||||
|
$sql .= " AND p.socialnetworks ~ '\"".$db->escapeforlike($db->escape($key))."\":\"[^\"]*".$db->escapeforlike($db->escape($searchkeyinjsonformat))."'";
|
||||||
|
} else {
|
||||||
|
// Works with all database but not reliable because search only for social network code starting with earched value
|
||||||
|
$sql .= " AND p.socialnetworks LIKE '%\"".$db->escapeforlike($db->escape($key))."\":\"".$db->escapeforlike($db->escape($searchkeyinjsonformat))."%'";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -608,6 +616,7 @@ if ($view == "recent") {
|
|||||||
} else {
|
} else {
|
||||||
$sql .= $db->order($sortfield, $sortorder);
|
$sql .= $db->order($sortfield, $sortorder);
|
||||||
}
|
}
|
||||||
|
//print $sql;
|
||||||
|
|
||||||
// Count total nb of records
|
// Count total nb of records
|
||||||
$nbtotalofrecords = '';
|
$nbtotalofrecords = '';
|
||||||
|
|||||||
@ -90,7 +90,6 @@ if (((isModEnabled('product') && $user->hasRight('product', 'read')) || (isModEn
|
|||||||
if (isModEnabled('mrp') && $user->hasRight('mrp', 'read') && empty($conf->global->MAIN_SEARCHFORM_MRP_DISABLED)) {
|
if (isModEnabled('mrp') && $user->hasRight('mrp', 'read') && empty($conf->global->MAIN_SEARCHFORM_MRP_DISABLED)) {
|
||||||
$arrayresult['searchintomo'] = array('position'=>35, 'shortcut'=>'', 'img'=>'object_mrp', 'label'=>$langs->trans("SearchIntoMO", $search_boxvalue), 'text'=>img_picto('', 'object_mrp', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoMO", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/mrp/mo_list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : ''));
|
$arrayresult['searchintomo'] = array('position'=>35, 'shortcut'=>'', 'img'=>'object_mrp', 'label'=>$langs->trans("SearchIntoMO", $search_boxvalue), 'text'=>img_picto('', 'object_mrp', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoMO", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/mrp/mo_list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : ''));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isModEnabled('project') && empty($conf->global->MAIN_SEARCHFORM_PROJECT_DISABLED) && $user->hasRight('projet', 'lire')) {
|
if (isModEnabled('project') && empty($conf->global->MAIN_SEARCHFORM_PROJECT_DISABLED) && $user->hasRight('projet', 'lire')) {
|
||||||
$arrayresult['searchintoprojects'] = array('position'=>40, 'shortcut'=>'Q', 'img'=>'object_project', 'label'=>$langs->trans("SearchIntoProjects", $search_boxvalue), 'text'=>img_picto('', 'object_project', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoProjects", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/projet/list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : ''));
|
$arrayresult['searchintoprojects'] = array('position'=>40, 'shortcut'=>'Q', 'img'=>'object_project', 'label'=>$langs->trans("SearchIntoProjects", $search_boxvalue), 'text'=>img_picto('', 'object_project', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoProjects", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/projet/list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : ''));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8251,6 +8251,7 @@ class Form
|
|||||||
if(! data.id) return null;';
|
if(! data.id) return null;';
|
||||||
|
|
||||||
if ($callurlonselect) {
|
if ($callurlonselect) {
|
||||||
|
// We forge the url with 'sall='
|
||||||
$outdelayed .= '
|
$outdelayed .= '
|
||||||
|
|
||||||
var urlBase = data.url;
|
var urlBase = data.url;
|
||||||
|
|||||||
@ -458,17 +458,27 @@ class ImportCsv extends ModeleImports
|
|||||||
$param_array = array('', $newval, 0, $arrayrecord[0]['val']); // Param to fetch parent from account, in chart.
|
$param_array = array('', $newval, 0, $arrayrecord[0]['val']); // Param to fetch parent from account, in chart.
|
||||||
}
|
}
|
||||||
|
|
||||||
call_user_func_array(array($classinstance, $method), $param_array);
|
$result = call_user_func_array(array($classinstance, $method), $param_array);
|
||||||
|
|
||||||
|
// If duplicate record found
|
||||||
|
if (!($classinstance->id != '') && $result == -2) {
|
||||||
|
$this->errors[$error]['lib'] = $langs->trans('ErrorMultipleRecordFoundFromRef', $newval);
|
||||||
|
$this->errors[$error]['type'] = 'FOREIGNKEY';
|
||||||
|
$errorforthistable++;
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
|
||||||
// If not found, try the fetch from label
|
// If not found, try the fetch from label
|
||||||
if (!($classinstance->id != '') && $objimport->array_import_convertvalue[0][$val]['rule'] == 'fetchidfromcodeorlabel') {
|
if (!($classinstance->id != '') && $objimport->array_import_convertvalue[0][$val]['rule'] == 'fetchidfromcodeorlabel') {
|
||||||
$param_array = array('', '', $newval);
|
$param_array = array('', '', $newval);
|
||||||
call_user_func_array(array($classinstance, $method), $param_array);
|
call_user_func_array(array($classinstance, $method), $param_array);
|
||||||
}
|
}
|
||||||
$this->cacheconvert[$file.'_'.$class.'_'.$method.'_'][$newval] = $classinstance->id;
|
$this->cacheconvert[$file.'_'.$class.'_'.$method.'_'][$newval] = $classinstance->id;
|
||||||
|
|
||||||
//print 'We have made a '.$class.'->'.$method.' to get id from code '.$newval.'. ';
|
//print 'We have made a '.$class.'->'.$method.' to get id from code '.$newval.'. ';
|
||||||
if ($classinstance->id != '') { // id may be 0, it is a found value
|
if ($classinstance->id != '') { // id may be 0, it is a found value
|
||||||
$newval = $classinstance->id;
|
$newval = $classinstance->id;
|
||||||
} else {
|
} elseif (! $error) {
|
||||||
if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) {
|
if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) {
|
||||||
$this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', num2Alpha($key - 1), $newval, 'code', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict']));
|
$this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', num2Alpha($key - 1), $newval, 'code', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict']));
|
||||||
} elseif (!empty($objimport->array_import_convertvalue[0][$val]['element'])) {
|
} elseif (!empty($objimport->array_import_convertvalue[0][$val]['element'])) {
|
||||||
@ -729,9 +739,13 @@ class ImportCsv extends ModeleImports
|
|||||||
if (isModEnabled("socialnetworks") && strpos($fieldname, "socialnetworks") !== false) {
|
if (isModEnabled("socialnetworks") && strpos($fieldname, "socialnetworks") !== false) {
|
||||||
if (!in_array("socialnetworks", $listfields)) {
|
if (!in_array("socialnetworks", $listfields)) {
|
||||||
$listfields[] = "socialnetworks";
|
$listfields[] = "socialnetworks";
|
||||||
|
$socialkey = array_search("socialnetworks", $listfields); // Return position of 'socialnetworks' key in array
|
||||||
|
$listvalues[$socialkey] = '';
|
||||||
}
|
}
|
||||||
|
//var_dump($newval); var_dump($arrayrecord[($key - 1)]['type']);
|
||||||
if (!empty($newval) && $arrayrecord[($key - 1)]['type'] > 0) {
|
if (!empty($newval) && $arrayrecord[($key - 1)]['type'] > 0) {
|
||||||
$socialkey = array_search("socialnetworks", $listfields);
|
$socialkey = array_search("socialnetworks", $listfields); // Return position of 'socialnetworks' key in array
|
||||||
|
//var_dump('sk='.$socialkey); // socialkey=19
|
||||||
$socialnetwork = explode("_", $fieldname)[1];
|
$socialnetwork = explode("_", $fieldname)[1];
|
||||||
if (empty($listvalues[$socialkey]) || $listvalues[$socialkey] == "null") {
|
if (empty($listvalues[$socialkey]) || $listvalues[$socialkey] == "null") {
|
||||||
$json = new stdClass();
|
$json = new stdClass();
|
||||||
@ -833,7 +847,6 @@ class ImportCsv extends ModeleImports
|
|||||||
|
|
||||||
if (empty($lastinsertid)) { // No insert done yet for a parent table
|
if (empty($lastinsertid)) { // No insert done yet for a parent table
|
||||||
$sqlSelect = "SELECT ".$fname." FROM ".$tablename;
|
$sqlSelect = "SELECT ".$fname." FROM ".$tablename;
|
||||||
|
|
||||||
$data = array_combine($listfields, $listvalues);
|
$data = array_combine($listfields, $listvalues);
|
||||||
$where = array(); // filters to forge SQL request
|
$where = array(); // filters to forge SQL request
|
||||||
$filters = array(); // filters to forge output error message
|
$filters = array(); // filters to forge output error message
|
||||||
|
|||||||
@ -502,17 +502,28 @@ class ImportXlsx extends ModeleImports
|
|||||||
}*/
|
}*/
|
||||||
$param_array = array('', $newval, 0, $arrayrecord[0]['val']); // Param to fetch parent from account, in chart.
|
$param_array = array('', $newval, 0, $arrayrecord[0]['val']); // Param to fetch parent from account, in chart.
|
||||||
}
|
}
|
||||||
call_user_func_array(array($classinstance, $method), $param_array);
|
|
||||||
|
$result = call_user_func_array(array($classinstance, $method), $param_array);
|
||||||
|
|
||||||
|
// If duplicate record found
|
||||||
|
if (!($classinstance->id != '') && $result == -2) {
|
||||||
|
$this->errors[$error]['lib'] = $langs->trans('ErrorMultipleRecordFoundFromRef', $newval);
|
||||||
|
$this->errors[$error]['type'] = 'FOREIGNKEY';
|
||||||
|
$errorforthistable++;
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
|
||||||
// If not found, try the fetch from label
|
// If not found, try the fetch from label
|
||||||
if (!($classinstance->id != '') && $objimport->array_import_convertvalue[0][$val]['rule'] == 'fetchidfromcodeorlabel') {
|
if (!($classinstance->id != '') && $objimport->array_import_convertvalue[0][$val]['rule'] == 'fetchidfromcodeorlabel') {
|
||||||
$param_array = array('', '', $newval);
|
$param_array = array('', '', $newval);
|
||||||
call_user_func_array(array($classinstance, $method), $param_array);
|
call_user_func_array(array($classinstance, $method), $param_array);
|
||||||
}
|
}
|
||||||
$this->cacheconvert[$file . '_' . $class . '_' . $method . '_'][$newval] = $classinstance->id;
|
$this->cacheconvert[$file . '_' . $class . '_' . $method . '_'][$newval] = $classinstance->id;
|
||||||
|
|
||||||
//print 'We have made a '.$class.'->'.$method.' to get id from code '.$newval.'. ';
|
//print 'We have made a '.$class.'->'.$method.' to get id from code '.$newval.'. ';
|
||||||
if ($classinstance->id != '') { // id may be 0, it is a found value
|
if ($classinstance->id != '') { // id may be 0, it is a found value
|
||||||
$newval = $classinstance->id;
|
$newval = $classinstance->id;
|
||||||
} else {
|
} elseif (! $error) {
|
||||||
if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) {
|
if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) {
|
||||||
$this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', $key, $newval, 'code', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict']));
|
$this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', $key, $newval, 'code', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict']));
|
||||||
} elseif (!empty($objimport->array_import_convertvalue[0][$val]['element'])) {
|
} elseif (!empty($objimport->array_import_convertvalue[0][$val]['element'])) {
|
||||||
@ -770,12 +781,14 @@ class ImportXlsx extends ModeleImports
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Define $listfields and $listvalues to build SQL request
|
// Define $listfields and $listvalues to build SQL request
|
||||||
if ($conf->socialnetworks->enabled && strpos($fieldname, "socialnetworks") !== false) {
|
if (isModEnabled("socialnetworks") && strpos($fieldname, "socialnetworks") !== false) {
|
||||||
if (!in_array("socialnetworks", $listfields)) {
|
if (!in_array("socialnetworks", $listfields)) {
|
||||||
$listfields[] = "socialnetworks";
|
$listfields[] = "socialnetworks";
|
||||||
|
$socialkey = array_search("socialnetworks", $listfields); // Return position of 'socialnetworks' key in array. Example socialkey=19
|
||||||
|
$listvalues[$socialkey] = '';
|
||||||
}
|
}
|
||||||
if (!empty($newval) && $arrayrecord[($key)]['type'] > 0) {
|
if (!empty($newval) && $arrayrecord[($key)]['type'] > 0) {
|
||||||
$socialkey = array_search("socialnetworks", $listfields);
|
$socialkey = array_search("socialnetworks", $listfields); // Return position of 'socialnetworks' key in array. Example socialkey=19
|
||||||
$socialnetwork = explode("_", $fieldname)[1];
|
$socialnetwork = explode("_", $fieldname)[1];
|
||||||
if (empty($listvalues[$socialkey]) || $listvalues[$socialkey] == "null") {
|
if (empty($listvalues[$socialkey]) || $listvalues[$socialkey] == "null") {
|
||||||
$json = new stdClass();
|
$json = new stdClass();
|
||||||
@ -797,7 +810,7 @@ class ImportXlsx extends ModeleImports
|
|||||||
} elseif (empty($newval) && $arrayrecord[($key)]['type'] == 0) {
|
} elseif (empty($newval) && $arrayrecord[($key)]['type'] == 0) {
|
||||||
$listvalues[] = "''";
|
$listvalues[] = "''";
|
||||||
} else {
|
} else {
|
||||||
$listvalues[] = "'" . $this->db->escape($newval) . "'";
|
$listvalues[] = "'".$this->db->escape($newval)."'";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -810,7 +823,7 @@ class ImportXlsx extends ModeleImports
|
|||||||
if (!empty($listfields) && is_array($objimport->array_import_fieldshidden[0])) {
|
if (!empty($listfields) && is_array($objimport->array_import_fieldshidden[0])) {
|
||||||
// Loop on each hidden fields to add them into listfields/listvalues
|
// Loop on each hidden fields to add them into listfields/listvalues
|
||||||
foreach ($objimport->array_import_fieldshidden[0] as $key => $val) {
|
foreach ($objimport->array_import_fieldshidden[0] as $key => $val) {
|
||||||
if (!preg_match('/^' . preg_quote($alias, '/') . '\./', $key)) {
|
if (!preg_match('/^'.preg_quote($alias, '/').'\./', $key)) {
|
||||||
continue; // Not a field of current table
|
continue; // Not a field of current table
|
||||||
}
|
}
|
||||||
if ($val == 'user->id') {
|
if ($val == 'user->id') {
|
||||||
@ -882,11 +895,13 @@ class ImportXlsx extends ModeleImports
|
|||||||
$sqlSelect = "SELECT ".$fname." FROM " . $tablename;
|
$sqlSelect = "SELECT ".$fname." FROM " . $tablename;
|
||||||
|
|
||||||
$data = array_combine($listfields, $listvalues);
|
$data = array_combine($listfields, $listvalues);
|
||||||
$filters = array();
|
|
||||||
|
$where = array(); // filters to forge SQL request
|
||||||
|
$filters = array(); // filters to forge output error message
|
||||||
foreach ($updatekeys as $key) {
|
foreach ($updatekeys as $key) {
|
||||||
$col = $objimport->array_import_updatekeys[0][$key];
|
$col = $objimport->array_import_updatekeys[0][$key];
|
||||||
$key = preg_replace('/^.*\./i', '', $key);
|
$key = preg_replace('/^.*\./i', '', $key);
|
||||||
if ($conf->socialnetworks->enabled && strpos($key, "socialnetworks") !== false) {
|
if (isModEnabled("socialnetworks") && strpos($key, "socialnetworks") !== false) {
|
||||||
$tmp = explode("_", $key);
|
$tmp = explode("_", $key);
|
||||||
$key = $tmp[0];
|
$key = $tmp[0];
|
||||||
$socialnetwork = $tmp[1];
|
$socialnetwork = $tmp[1];
|
||||||
|
|||||||
@ -451,8 +451,8 @@ class DataPolicyCron
|
|||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
foreach ($arrayofparameters as $key => $params) {
|
foreach ($arrayofparameters as $key => $params) {
|
||||||
if ($conf->global->$key != '' && is_numeric($conf->global->$key) && (int) $conf->global->$key > 0) {
|
if (getDolGlobalInt($key) > 0) {
|
||||||
$sql = sprintf($params['sql'], (int) $conf->entity, (int) $conf->global->$key, (int) $conf->global->$key);
|
$sql = sprintf($params['sql'], (int) $conf->entity, (int) getDolGlobalInt($key), (int) getDolGlobalInt($key));
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
|
|
||||||
|
|||||||
@ -21,25 +21,26 @@
|
|||||||
--
|
--
|
||||||
|
|
||||||
-- Bank Thirdparty
|
-- Bank Thirdparty
|
||||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'banque','thirdparty','',0,null,null,'(YourSEPAMandate)',1,'$conf->societe->enabled && $conf->banque->enabled && $conf->prelevement->enabled',0,'__(YourSEPAMandate)__','__(Hello)__,<br><br>\n\n__(FindYourSEPAMandate)__ :<br>\n__MYCOMPANY_NAME__<br>\n__MYCOMPANY_FULLADDRESS__<br><br>\n__(Sincerely)__<br>\n__USER_SIGNATURE__',null, 0);
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'banque','thirdparty','',0,null,null,'(YourSEPAMandate)',1,'isModEnabled("societe") && isModEnabled("banque") && isModEnabled("prelevement")',0,'__(YourSEPAMandate)__','__(Hello)__,<br><br>\n\n__(FindYourSEPAMandate)__ :<br>\n__MYCOMPANY_NAME__<br>\n__MYCOMPANY_FULLADDRESS__<br><br>\n__(Sincerely)__<br>\n__USER_SIGNATURE__',null, 0);
|
||||||
|
|
||||||
-- Members
|
-- Members
|
||||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'adherent','member','',0,null,null,'(SendingEmailOnAutoSubscription)' ,10,'$conf->adherent->enabled',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(YourMembershipRequestWasReceived)__','__(Hello)__ __MEMBER_FULLNAME__,<br><br>\n\n__(ThisIsContentOfYourMembershipRequestWasReceived)__<br>\n<br>__ONLINE_PAYMENT_TEXT_AND_URL__<br>\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'adherent','member','',0,null,null,'(SendingEmailOnAutoSubscription)' ,10, 'isModEnabled("adherent")',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(YourMembershipRequestWasReceived)__','__(Hello)__ __MEMBER_FULLNAME__,<br><br>\n\n__(ThisIsContentOfYourMembershipRequestWasReceived)__<br>\n<br>__ONLINE_PAYMENT_TEXT_AND_URL__<br>\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
||||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'adherent','member','',0,null,null,'(SendingEmailOnMemberValidation)' ,20,'$conf->adherent->enabled',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(YourMembershipWasValidated)__', '__(Hello)__ __MEMBER_FULLNAME__,<br><br>\n\n__(ThisIsContentOfYourMembershipWasValidated)__<br>__(FirstName)__ : __MEMBER_FIRSTNAME__<br>__(LastName)__ : __MEMBER_LASTNAME__<br>__(ID)__ : __MEMBER_ID__<br>\n<br>__ONLINE_PAYMENT_TEXT_AND_URL__<br>\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'adherent','member','',0,null,null,'(SendingEmailOnMemberValidation)' ,20, 'isModEnabled("adherent")',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(YourMembershipWasValidated)__', '__(Hello)__ __MEMBER_FULLNAME__,<br><br>\n\n__(ThisIsContentOfYourMembershipWasValidated)__<br>__(FirstName)__ : __MEMBER_FIRSTNAME__<br>__(LastName)__ : __MEMBER_LASTNAME__<br>__(ID)__ : __MEMBER_ID__<br>\n<br>__ONLINE_PAYMENT_TEXT_AND_URL__<br>\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
||||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'adherent','member','',0,null,null,'(SendingEmailOnNewSubscription)' ,30,'$conf->adherent->enabled',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(YourSubscriptionWasRecorded)__', '__(Hello)__ __MEMBER_FULLNAME__,<br><br>\n\n__(ThisIsContentOfYourSubscriptionWasRecorded)__<br>\n\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 1);
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'adherent','member','',0,null,null,'(SendingEmailOnNewSubscription)' ,30, 'isModEnabled("adherent")',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(YourSubscriptionWasRecorded)__', '__(Hello)__ __MEMBER_FULLNAME__,<br><br>\n\n__(ThisIsContentOfYourSubscriptionWasRecorded)__<br>\n\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 1);
|
||||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'adherent','member','',0,null,null,'(SendingReminderForExpiredSubscription)',40,'$conf->adherent->enabled',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(SubscriptionReminderEmail)__', '__(Hello)__ __MEMBER_FULLNAME__,<br><br>\n\n__(ThisIsContentOfSubscriptionReminderEmail)__<br>\n<br>__ONLINE_PAYMENT_TEXT_AND_URL__<br>\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'adherent','member','',0,null,null,'(SendingReminderForExpiredSubscription)',40, 'isModEnabled("adherent")',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(SubscriptionReminderEmail)__', '__(Hello)__ __MEMBER_FULLNAME__,<br><br>\n\n__(ThisIsContentOfSubscriptionReminderEmail)__<br>\n<br>__ONLINE_PAYMENT_TEXT_AND_URL__<br>\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
||||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'adherent','member','',0,null,null,'(SendingEmailOnCancelation)' ,50,'$conf->adherent->enabled',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(YourMembershipWasCanceled)__', '__(Hello)__ __MEMBER_FULLNAME__,<br><br>\n\n__(YourMembershipWasCanceled)__<br>\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'adherent','member','',0,null,null,'(SendingEmailOnCancelation)' ,50, 'isModEnabled("adherent")',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(YourMembershipWasCanceled)__', '__(Hello)__ __MEMBER_FULLNAME__,<br><br>\n\n__(YourMembershipWasCanceled)__<br>\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
||||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'adherent','member','',0,null,null,'(SendingAnEMailToMember)' ,60,'$conf->adherent->enabled',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(CardContent)__', '__(Hello)__,<br><br>\n\n__(ThisIsContentOfYourCard)__<br>\n__(ID)__ : __ID__<br>\n__(Civility)__ : __MEMBER_CIVILITY__<br>\n__(Firstname)__ : __MEMBER_FIRSTNAME__<br>\n__(Lastname)__ : __MEMBER_LASTNAME__<br>\n__(Fullname)__ : __MEMBER_FULLNAME__<br>\n__(Company)__ : __MEMBER_COMPANY__<br>\n__(Address)__ : __MEMBER_ADDRESS__<br>\n__(Zip)__ : __MEMBER_ZIP__<br>\n__(Town)__ : __MEMBER_TOWN__<br>\n__(Country)__ : __MEMBER_COUNTRY__<br>\n__(Email)__ : __MEMBER_EMAIL__<br>\n__(Birthday)__ : __MEMBER_BIRTH__<br>\n__(Photo)__ : __MEMBER_PHOTO__<br>\n__(Login)__ : __MEMBER_LOGIN__<br>\n__(Phone)__ : __MEMBER_PHONE__<br>\n__(PhonePerso)__ : __MEMBER_PHONEPRO__<br>\n__(PhoneMobile)__ : __MEMBER_PHONEMOBILE__<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'adherent','member','',0,null,null,'(SendingAnEMailToMember)' ,60, 'isModEnabled("adherent")',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(CardContent)__', '__(Hello)__,<br><br>\n\n__(ThisIsContentOfYourCard)__<br>\n__(ID)__ : __ID__<br>\n__(Civility)__ : __MEMBER_CIVILITY__<br>\n__(Firstname)__ : __MEMBER_FIRSTNAME__<br>\n__(Lastname)__ : __MEMBER_LASTNAME__<br>\n__(Fullname)__ : __MEMBER_FULLNAME__<br>\n__(Company)__ : __MEMBER_COMPANY__<br>\n__(Address)__ : __MEMBER_ADDRESS__<br>\n__(Zip)__ : __MEMBER_ZIP__<br>\n__(Town)__ : __MEMBER_TOWN__<br>\n__(Country)__ : __MEMBER_COUNTRY__<br>\n__(Email)__ : __MEMBER_EMAIL__<br>\n__(Birthday)__ : __MEMBER_BIRTH__<br>\n__(Photo)__ : __MEMBER_PHOTO__<br>\n__(Login)__ : __MEMBER_LOGIN__<br>\n__(Phone)__ : __MEMBER_PHONE__<br>\n__(PhonePerso)__ : __MEMBER_PHONEPRO__<br>\n__(PhoneMobile)__ : __MEMBER_PHONEMOBILE__<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
||||||
|
|
||||||
-- Recruiting
|
-- Recruiting
|
||||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'recruitment','recruitmentcandidature_send','',0,null,null,'(AnswerCandidature)' ,100,'$conf->recruitment->enabled',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(YourCandidature)__', '__(Hello)__ __CANDIDATE_FULLNAME__,<br><br>\n\n__(YourCandidatureAnswerMessage)__<br>__ONLINE_INTERVIEW_SCHEDULER_TEXT_AND_URL__\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'recruitment','recruitmentcandidature_send','',0,null,null,'(AnswerCandidature)' ,100,'isModEnabled("recruitment")',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(YourCandidature)__', '__(Hello)__ __CANDIDATE_FULLNAME__,<br><br>\n\n__(YourCandidatureAnswerMessage)__<br>__ONLINE_INTERVIEW_SCHEDULER_TEXT_AND_URL__\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
||||||
|
|
||||||
-- Event organization
|
-- Event organization
|
||||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'conferenceorbooth', '', 0, null, null, '(EventOrganizationEmailAskConf)', 10, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailAskConf)__', '__(Hello)__,<br /><br />__(OrganizationEventConfRequestWasReceived)__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'conferenceorbooth', '', 0, null, null, '(EventOrganizationEmailAskConf)', 10, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailAskConf)__', '__(Hello)__,<br /><br />__(OrganizationEventConfRequestWasReceived)__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'conferenceorbooth', '', 0, null, null, '(EventOrganizationEmailAskBooth)', 20, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailAskBooth)__', '__(Hello)__,<br /><br />__(OrganizationEventBoothRequestWasReceived)__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'conferenceorbooth', '', 0, null, null, '(EventOrganizationEmailAskBooth)', 20, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailAskBooth)__', '__(Hello)__,<br /><br />__(OrganizationEventBoothRequestWasReceived)__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
-- TODO Add message for registration only to event __ONLINE_PAYMENT_TEXT_AND_URL__
|
-- TODO Add message for registration only to event __ONLINE_PAYMENT_TEXT_AND_URL__
|
||||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'conferenceorbooth', '', 0, null, null, '(EventOrganizationEmailSubsBooth)', 30, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailBoothPayment)__', '__(Hello)__,<br /><br />__(OrganizationEventPaymentOfBoothWasReceived)__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'conferenceorbooth', '', 0, null, null, '(EventOrganizationEmailBoothPayment)', 30, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailBoothPayment)__', '__(Hello)__,<br /><br />__(OrganizationEventPaymentOfBoothWasReceived)__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'conferenceorbooth', '', 0, null, null, '(EventOrganizationEmailSubsEvent)', 40, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailRegistrationPayment)__', '__(Hello)__,<br /><br />__(OrganizationEventPaymentOfRegistrationWasReceived)__<br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'conferenceorbooth', '', 0, null, null, '(EventOrganizationEmailRegistrationPayment)', 40, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailRegistrationPayment)__', '__(Hello)__,<br /><br />__(OrganizationEventPaymentOfRegistrationWasReceived)__<br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
--
|
||||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'conferenceorbooth', '', 0, null, null, '(EventOrganizationMassEmailAttendees)', 50, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationMassEmailAttendees)__', '__(Hello)__,<br /><br />__(OrganizationEventBulkMailToAttendees)__<br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'conferenceorbooth', '', 0, null, null, '(EventOrganizationMassEmailAttendees)', 50, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationMassEmailAttendees)__', '__(Hello)__,<br /><br />__(OrganizationEventBulkMailToAttendees)__<br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'conferenceorbooth', '', 0, null, null, '(EventOrganizationMassEmailSpeakers)', 60, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationMassEmailSpeakers)__', '__(Hello)__,<br /><br />__(OrganizationEventBulkMailToSpeakers)__<br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'conferenceorbooth', '', 0, null, null, '(EventOrganizationMassEmailSpeakers)', 60, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationMassEmailSpeakers)__', '__(Hello)__,<br /><br />__(OrganizationEventBulkMailToSpeakers)__<br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
|
||||||
|
|||||||
@ -737,3 +737,34 @@ ALTER TABLE llx_loan_schedule ADD UNIQUE INDEX uk_loan_schedule_ref (fk_loan, da
|
|||||||
|
|
||||||
-- We need when upgrade 15 to 16 with Dolibarr v17+ for upgrade2 function migrate_user_photospath2()
|
-- We need when upgrade 15 to 16 with Dolibarr v17+ for upgrade2 function migrate_user_photospath2()
|
||||||
ALTER TABLE llx_user CHANGE COLUMN note note_private text;
|
ALTER TABLE llx_user CHANGE COLUMN note note_private text;
|
||||||
|
|
||||||
|
|
||||||
|
-- Bank Thirdparty
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'banque','thirdparty','',0,null,null,'(YourSEPAMandate)',1,'isModEnabled("societe") && isModEnabled("banque") && isModEnabled("prelevement")',0,'__(YourSEPAMandate)__','__(Hello)__,<br><br>\n\n__(FindYourSEPAMandate)__ :<br>\n__MYCOMPANY_NAME__<br>\n__MYCOMPANY_FULLADDRESS__<br><br>\n__(Sincerely)__<br>\n__USER_SIGNATURE__',null, 0);
|
||||||
|
|
||||||
|
-- Members
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'adherent','member','',0,null,null,'(SendingEmailOnAutoSubscription)' ,10, 'isModEnabled("adherent")',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(YourMembershipRequestWasReceived)__','__(Hello)__ __MEMBER_FULLNAME__,<br><br>\n\n__(ThisIsContentOfYourMembershipRequestWasReceived)__<br>\n<br>__ONLINE_PAYMENT_TEXT_AND_URL__<br>\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'adherent','member','',0,null,null,'(SendingEmailOnMemberValidation)' ,20, 'isModEnabled("adherent")',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(YourMembershipWasValidated)__', '__(Hello)__ __MEMBER_FULLNAME__,<br><br>\n\n__(ThisIsContentOfYourMembershipWasValidated)__<br>__(FirstName)__ : __MEMBER_FIRSTNAME__<br>__(LastName)__ : __MEMBER_LASTNAME__<br>__(ID)__ : __MEMBER_ID__<br>\n<br>__ONLINE_PAYMENT_TEXT_AND_URL__<br>\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'adherent','member','',0,null,null,'(SendingEmailOnNewSubscription)' ,30, 'isModEnabled("adherent")',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(YourSubscriptionWasRecorded)__', '__(Hello)__ __MEMBER_FULLNAME__,<br><br>\n\n__(ThisIsContentOfYourSubscriptionWasRecorded)__<br>\n\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 1);
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'adherent','member','',0,null,null,'(SendingReminderForExpiredSubscription)',40, 'isModEnabled("adherent")',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(SubscriptionReminderEmail)__', '__(Hello)__ __MEMBER_FULLNAME__,<br><br>\n\n__(ThisIsContentOfSubscriptionReminderEmail)__<br>\n<br>__ONLINE_PAYMENT_TEXT_AND_URL__<br>\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'adherent','member','',0,null,null,'(SendingEmailOnCancelation)' ,50, 'isModEnabled("adherent")',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(YourMembershipWasCanceled)__', '__(Hello)__ __MEMBER_FULLNAME__,<br><br>\n\n__(YourMembershipWasCanceled)__<br>\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'adherent','member','',0,null,null,'(SendingAnEMailToMember)' ,60, 'isModEnabled("adherent")',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(CardContent)__', '__(Hello)__,<br><br>\n\n__(ThisIsContentOfYourCard)__<br>\n__(ID)__ : __ID__<br>\n__(Civility)__ : __MEMBER_CIVILITY__<br>\n__(Firstname)__ : __MEMBER_FIRSTNAME__<br>\n__(Lastname)__ : __MEMBER_LASTNAME__<br>\n__(Fullname)__ : __MEMBER_FULLNAME__<br>\n__(Company)__ : __MEMBER_COMPANY__<br>\n__(Address)__ : __MEMBER_ADDRESS__<br>\n__(Zip)__ : __MEMBER_ZIP__<br>\n__(Town)__ : __MEMBER_TOWN__<br>\n__(Country)__ : __MEMBER_COUNTRY__<br>\n__(Email)__ : __MEMBER_EMAIL__<br>\n__(Birthday)__ : __MEMBER_BIRTH__<br>\n__(Photo)__ : __MEMBER_PHOTO__<br>\n__(Login)__ : __MEMBER_LOGIN__<br>\n__(Phone)__ : __MEMBER_PHONE__<br>\n__(PhonePerso)__ : __MEMBER_PHONEPRO__<br>\n__(PhoneMobile)__ : __MEMBER_PHONEMOBILE__<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
||||||
|
|
||||||
|
-- Recruiting
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, enabled, active, topic, content, content_lines, joinfiles) VALUES (0, 'recruitment','recruitmentcandidature_send','',0,null,null,'(AnswerCandidature)' ,100,'isModEnabled("recruitment")',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(YourCandidature)__', '__(Hello)__ __CANDIDATE_FULLNAME__,<br><br>\n\n__(YourCandidatureAnswerMessage)__<br>__ONLINE_INTERVIEW_SCHEDULER_TEXT_AND_URL__\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
||||||
|
|
||||||
|
-- Event organization
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'conferenceorbooth', '', 0, null, null, '(EventOrganizationEmailAskConf)', 10, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailAskConf)__', '__(Hello)__,<br /><br />__(OrganizationEventConfRequestWasReceived)__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'conferenceorbooth', '', 0, null, null, '(EventOrganizationEmailAskBooth)', 20, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailAskBooth)__', '__(Hello)__,<br /><br />__(OrganizationEventBoothRequestWasReceived)__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
-- TODO Add message for registration only to event __ONLINE_PAYMENT_TEXT_AND_URL__
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'conferenceorbooth', '', 0, null, null, '(EventOrganizationEmailBoothPayment)', 30, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailBoothPayment)__', '__(Hello)__,<br /><br />__(OrganizationEventPaymentOfBoothWasReceived)__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'conferenceorbooth', '', 0, null, null, '(EventOrganizationEmailRegistrationPayment)', 40, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailRegistrationPayment)__', '__(Hello)__,<br /><br />__(OrganizationEventPaymentOfRegistrationWasReceived)__<br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
--
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'conferenceorbooth', '', 0, null, null, '(EventOrganizationMassEmailAttendees)', 50, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationMassEmailAttendees)__', '__(Hello)__,<br /><br />__(OrganizationEventBulkMailToAttendees)__<br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'conferenceorbooth', '', 0, null, null, '(EventOrganizationMassEmailSpeakers)', 60, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationMassEmailSpeakers)__', '__(Hello)__,<br /><br />__(OrganizationEventBulkMailToSpeakers)__<br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
|
||||||
|
-- Partnership
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, label, lang, position, topic, joinfiles, content) VALUES (0, 'partnership', 'partnership_send', '(SendingEmailOnPartnershipWillSoonBeCanceled)', '', 100, '[__[MAIN_INFO_SOCIETE_NOM]__] - __(YourPartnershipWillSoonBeCanceledTopic)__', 0, '<body>\n <p>__(Hello)__,<br><br>\n__(YourPartnershipWillSoonBeCanceledContent)__</p>\n<br />\n\n<br />\n\n __(Sincerely)__ <br />\n __[MAIN_INFO_SOCIETE_NOM]__ <br />\n </body>\n');
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, label, lang, position, topic, joinfiles, content) VALUES (0, 'partnership', 'partnership_send', '(SendingEmailOnPartnershipCanceled)', '', 100, '[__[MAIN_INFO_SOCIETE_NOM]__] - __(YourPartnershipCanceledTopic)__', 0, '<body>\n <p>__(Hello)__,<br><br>\n__(YourPartnershipCanceledContent)__</p>\n<br />\n\n<br />\n\n __(Sincerely)__ <br />\n __[MAIN_INFO_SOCIETE_NOM]__ <br />\n </body>\n');
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, label, lang, position, topic, joinfiles, content) VALUES (0, 'partnership', 'partnership_send', '(SendingEmailOnPartnershipRefused)', '', 100, '[__[MAIN_INFO_SOCIETE_NOM]__] - __(YourPartnershipRefusedTopic)__', 0, '<body>\n <p>__(Hello)__,<br><br>\n__(YourPartnershipRefusedContent)__</p>\n<br />\n\n<br />\n\n __(Sincerely)__ <br />\n __[MAIN_INFO_SOCIETE_NOM]__ <br />\n </body>\n');
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, label, lang, position, topic, joinfiles, content) VALUES (0, 'partnership', 'partnership_send', '(SendingEmailOnPartnershipAccepted)', '', 100, '[__[MAIN_INFO_SOCIETE_NOM]__] - __(YourPartnershipAcceptedTopic)__', 0, '<body>\n <p>__(Hello)__,<br><br>\n__(YourPartnershipAcceptedContent)__</p>\n<br />\n\n<br />\n\n __(Sincerely)__ <br />\n __[MAIN_INFO_SOCIETE_NOM]__ <br />\n </body>\n');
|
||||||
|
|||||||
@ -97,6 +97,7 @@ ErrorWrongValueForField=Field <b>%s</b>: '<b>%s</b>' does not match regex rule <
|
|||||||
ErrorHtmlInjectionForField=Field <b>%s</b>: The value '<b>%s</b>' contains a malicious data not allowed
|
ErrorHtmlInjectionForField=Field <b>%s</b>: The value '<b>%s</b>' contains a malicious data not allowed
|
||||||
ErrorFieldValueNotIn=Field <b>%s</b>: '<b>%s</b>' is not a value found in field <b>%s</b> of <b>%s</b>
|
ErrorFieldValueNotIn=Field <b>%s</b>: '<b>%s</b>' is not a value found in field <b>%s</b> of <b>%s</b>
|
||||||
ErrorFieldRefNotIn=Field <b>%s</b>: '<b>%s</b>' is not a <b>%s</b> existing ref
|
ErrorFieldRefNotIn=Field <b>%s</b>: '<b>%s</b>' is not a <b>%s</b> existing ref
|
||||||
|
ErrorMultipleRecordFoundFromRef=Several record found when searching from ref <b>%s</b>. No way to know which ID to use.
|
||||||
ErrorsOnXLines=%s errors found
|
ErrorsOnXLines=%s errors found
|
||||||
ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus)
|
ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus)
|
||||||
ErrorNumRefModel=A reference exists into database (%s) and is not compatible with this numbering rule. Remove record or renamed reference to activate this module.
|
ErrorNumRefModel=A reference exists into database (%s) and is not compatible with this numbering rule. Remove record or renamed reference to activate this module.
|
||||||
@ -299,6 +300,7 @@ ErrorCharPlusNotSupportedByImapForSearch=IMAP search is not able to search into
|
|||||||
ErrorTableNotFound=Table <b>%s</b> not found
|
ErrorTableNotFound=Table <b>%s</b> not found
|
||||||
ErrorValueForTooLow=Value for <b>%s</b> is too low
|
ErrorValueForTooLow=Value for <b>%s</b> is too low
|
||||||
ErrorValueCantBeNull=Value for <b>%s</b> can't be null
|
ErrorValueCantBeNull=Value for <b>%s</b> can't be null
|
||||||
|
ErrorDateOfMovementLowerThanDateOfFileTransmission=The date of the bank transaction can't be lower than the date of the file transmission
|
||||||
|
|
||||||
# Warnings
|
# Warnings
|
||||||
WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup.
|
WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup.
|
||||||
|
|||||||
@ -399,7 +399,7 @@ ActionAvailableOnVariantProductOnly=Action only available on the variant of prod
|
|||||||
ProductsPricePerCustomer=Product prices per customers
|
ProductsPricePerCustomer=Product prices per customers
|
||||||
ProductSupplierExtraFields=Additional Attributes (Supplier Prices)
|
ProductSupplierExtraFields=Additional Attributes (Supplier Prices)
|
||||||
DeleteLinkedProduct=Delete the child product linked to the combination
|
DeleteLinkedProduct=Delete the child product linked to the combination
|
||||||
AmountUsedToUpdateWAP=Amount to use to update the Weighted Average Price
|
AmountUsedToUpdateWAP=Unit amount to use to update the Weighted Average Price
|
||||||
PMPValue=Weighted average price
|
PMPValue=Weighted average price
|
||||||
PMPValueShort=WAP
|
PMPValueShort=WAP
|
||||||
mandatoryperiod=Mandatory periods
|
mandatoryperiod=Mandatory periods
|
||||||
|
|||||||
@ -84,7 +84,7 @@ if (!$sortorder) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Initialize array of search criterias
|
// Initialize array of search criterias
|
||||||
$search_all = GETPOST('search_all', 'alphanohtml');
|
$search_all = GETPOST('search_all', 'alphanohtml') ? GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml');
|
||||||
$search = array();
|
$search = array();
|
||||||
foreach ($object->fields as $key => $val) {
|
foreach ($object->fields as $key => $val) {
|
||||||
if (GETPOST('search_'.$key, 'alpha') !== '') {
|
if (GETPOST('search_'.$key, 'alpha') !== '') {
|
||||||
@ -230,8 +230,8 @@ $sql .= " FROM ".MAIN_DB_PREFIX.$object->table_element." as t";
|
|||||||
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 (t.rowid = ef.fk_object)";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (t.rowid = ef.fk_object)";
|
||||||
}
|
}
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."mrp_production lineparent ON t.fk_parent_line = lineparent.rowid";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."mrp_production as lineparent ON t.fk_parent_line = lineparent.rowid";
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."mrp_mo moparent ON lineparent.fk_mo = moparent.rowid";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."mrp_mo as moparent ON lineparent.fk_mo = moparent.rowid";
|
||||||
// Add table from hooks
|
// Add table from hooks
|
||||||
$parameters = array();
|
$parameters = array();
|
||||||
$reshook = $hookmanager->executeHooks('printFieldListFrom', $parameters, $object); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldListFrom', $parameters, $object); // Note that $action and $object may have been modified by hook
|
||||||
@ -266,17 +266,17 @@ foreach ($search as $key => $val) {
|
|||||||
$mode_search = 2;
|
$mode_search = 2;
|
||||||
}
|
}
|
||||||
if ($search[$key] != '') {
|
if ($search[$key] != '') {
|
||||||
$sql .= natural_search($key, $search[$key], (($key == 'status') ? 2 : $mode_search));
|
$sql .= natural_search("t.".$db->escape($key), $search[$key], (($key == 'status') ? 2 : $mode_search));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (preg_match('/(_dtstart|_dtend)$/', $key) && $search[$key] != '') {
|
if (preg_match('/(_dtstart|_dtend)$/', $key) && $search[$key] != '') {
|
||||||
$columnName = preg_replace('/(_dtstart|_dtend)$/', '', $key);
|
$columnName = preg_replace('/(_dtstart|_dtend)$/', '', $key);
|
||||||
if (preg_match('/^(date|timestamp|datetime)/', $object->fields[$columnName]['type'])) {
|
if (preg_match('/^(date|timestamp|datetime)/', $object->fields[$columnName]['type'])) {
|
||||||
if (preg_match('/_dtstart$/', $key)) {
|
if (preg_match('/_dtstart$/', $key)) {
|
||||||
$sql .= " AND t.".$columnName." >= '".$db->idate($search[$key])."'";
|
$sql .= " AND t.".$db->escape($columnName)." >= '".$db->idate($search[$key])."'";
|
||||||
}
|
}
|
||||||
if (preg_match('/_dtend$/', $key)) {
|
if (preg_match('/_dtend$/', $key)) {
|
||||||
$sql .= " AND t." . $columnName . " <= '" . $db->idate($search[$key]) . "'";
|
$sql .= " AND t.".$db->escape($columnName)." <= '".$db->idate($search[$key])."'";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -814,6 +814,8 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
|
|
||||||
// Lines to consume
|
// Lines to consume
|
||||||
|
|
||||||
|
$bomcostupdated = 0; // We will recalculate the unitary cost to produce a product using the real "products to consume into MO"
|
||||||
|
|
||||||
if (!empty($object->lines)) {
|
if (!empty($object->lines)) {
|
||||||
$nblinetoconsume = 0;
|
$nblinetoconsume = 0;
|
||||||
foreach ($object->lines as $line) {
|
foreach ($object->lines as $line) {
|
||||||
@ -832,7 +834,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
$linecost = price2num($tmpproduct->pmp, 'MT');
|
$linecost = price2num($tmpproduct->pmp, 'MT');
|
||||||
|
|
||||||
if ($object->qty > 0) {
|
if ($object->qty > 0) {
|
||||||
// add free consume line cost to bomcost
|
// add free consume line cost to $bomcostupdated
|
||||||
$costprice = price2num((!empty($tmpproduct->cost_price)) ? $tmpproduct->cost_price : $tmpproduct->pmp);
|
$costprice = price2num((!empty($tmpproduct->cost_price)) ? $tmpproduct->cost_price : $tmpproduct->pmp);
|
||||||
if (empty($costprice)) {
|
if (empty($costprice)) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php';
|
||||||
@ -843,12 +845,11 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
$costprice = 0;
|
$costprice = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$linecost = price2num(($line->qty * $costprice) / $object->qty, 'MT');
|
$linecost = price2num(($line->qty * $costprice) / $object->qty, 'MT'); // price for line for all quantities
|
||||||
$bomcost += $linecost;
|
$bomcostupdated += price2num(($line->qty * $costprice) / $object->qty, 'MU'); // same but with full accuracy
|
||||||
}
|
}
|
||||||
|
|
||||||
$bomcost = price2num($bomcost, 'MU');
|
$bomcostupdated = price2num($bomcostupdated, 'MU');
|
||||||
|
|
||||||
$arrayoflines = $object->fetchLinesLinked('consumed', $line->id);
|
$arrayoflines = $object->fetchLinesLinked('consumed', $line->id);
|
||||||
$alreadyconsumed = 0;
|
$alreadyconsumed = 0;
|
||||||
foreach ($arrayoflines as $line2) {
|
foreach ($arrayoflines as $line2) {
|
||||||
@ -1136,7 +1137,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
print '<td>'.$langs->trans("Product").'</td>';
|
print '<td>'.$langs->trans("Product").'</td>';
|
||||||
print '<td class="right">'.$langs->trans("Qty").'</td>';
|
print '<td class="right">'.$langs->trans("Qty").'</td>';
|
||||||
if ($permissiontoupdatecost) {
|
if ($permissiontoupdatecost) {
|
||||||
if (empty($bomcost)) {
|
if (empty($bomcostupdated)) {
|
||||||
print '<td class="right">'.$form->textwithpicto($langs->trans("UnitCost"), $langs->trans("AmountUsedToUpdateWAP")).'</td>';
|
print '<td class="right">'.$form->textwithpicto($langs->trans("UnitCost"), $langs->trans("AmountUsedToUpdateWAP")).'</td>';
|
||||||
} else {
|
} else {
|
||||||
print '<td class="right">'.$form->textwithpicto($langs->trans("ManufacturingPrice"), $langs->trans("AmountUsedToUpdateWAP")).'</td>';
|
print '<td class="right">'.$form->textwithpicto($langs->trans("ManufacturingPrice"), $langs->trans("AmountUsedToUpdateWAP")).'</td>';
|
||||||
@ -1230,17 +1231,25 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
if ($permissiontoupdatecost) {
|
if ($permissiontoupdatecost) {
|
||||||
// Defined $manufacturingcost
|
// Defined $manufacturingcost
|
||||||
$manufacturingcost = 0;
|
$manufacturingcost = 0;
|
||||||
if ($object->mrptype == 0) { // If MO is a "Manufacture" type (and not "Disassemble"
|
$manufacturingcostsrc = '';
|
||||||
|
if ($object->mrptype == 0) { // If MO is a "Manufacture" type (and not "Disassemble")
|
||||||
|
$manufacturingcost = $bomcostupdated;
|
||||||
|
$manufacturingcostsrc = $langs->trans("CalculatedFromProductsToConsume");
|
||||||
|
if (empty($manufacturingcost)) {
|
||||||
$manufacturingcost = $bomcost;
|
$manufacturingcost = $bomcost;
|
||||||
|
$manufacturingcostsrc = $langs->trans("ValueFromBom");
|
||||||
|
}
|
||||||
if (empty($manufacturingcost)) {
|
if (empty($manufacturingcost)) {
|
||||||
$manufacturingcost = price2num($tmpproduct->cost_price, 'MU');
|
$manufacturingcost = price2num($tmpproduct->cost_price, 'MU');
|
||||||
|
$manufacturingcostsrc = $langs->trans("CostPrice");
|
||||||
}
|
}
|
||||||
if (empty($manufacturingcost)) {
|
if (empty($manufacturingcost)) {
|
||||||
$manufacturingcost = price2num($tmpproduct->pmp, 'MU');
|
$manufacturingcost = price2num($tmpproduct->pmp, 'MU');
|
||||||
|
$manufacturingcostsrc = $langs->trans("PMPValue");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<td class="right nowraponall">';
|
print '<td class="right nowraponall" title="'.dol_escape_htmltag($manufacturingcostsrc).'">';
|
||||||
if ($manufacturingcost) {
|
if ($manufacturingcost) {
|
||||||
print price($manufacturingcost);
|
print price($manufacturingcost);
|
||||||
}
|
}
|
||||||
@ -1344,19 +1353,27 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
if ($permissiontoupdatecost) {
|
if ($permissiontoupdatecost) {
|
||||||
// Defined $manufacturingcost
|
// Defined $manufacturingcost
|
||||||
$manufacturingcost = 0;
|
$manufacturingcost = 0;
|
||||||
if ($object->mrptype == 0) { // If MO is a "Manufacture" type (and not "Disassemble"
|
$manufacturingcostsrc = '';
|
||||||
|
if ($object->mrptype == 0) { // If MO is a "Manufacture" type (and not "Disassemble")
|
||||||
|
$manufacturingcost = $bomcostupdated;
|
||||||
|
$manufacturingcostsrc = $langs->trans("CalculatedFromProductsToConsume");
|
||||||
|
if (empty($manufacturingcost)) {
|
||||||
$manufacturingcost = $bomcost;
|
$manufacturingcost = $bomcost;
|
||||||
|
$manufacturingcostsrc = $langs->trans("ValueFromBom");
|
||||||
|
}
|
||||||
if (empty($manufacturingcost)) {
|
if (empty($manufacturingcost)) {
|
||||||
$manufacturingcost = price2num($tmpproduct->cost_price, 'MU');
|
$manufacturingcost = price2num($tmpproduct->cost_price, 'MU');
|
||||||
|
$manufacturingcostsrc = $langs->trans("CostPrice");
|
||||||
}
|
}
|
||||||
if (empty($manufacturingcost)) {
|
if (empty($manufacturingcost)) {
|
||||||
$manufacturingcost = price2num($tmpproduct->pmp, 'MU');
|
$manufacturingcost = price2num($tmpproduct->pmp, 'MU');
|
||||||
|
$manufacturingcostsrc = $langs->trans("PMPValue");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($tmpproduct->type == Product::TYPE_PRODUCT || !empty($conf->global->STOCK_SUPPORTS_SERVICES)) {
|
if ($tmpproduct->type == Product::TYPE_PRODUCT || !empty($conf->global->STOCK_SUPPORTS_SERVICES)) {
|
||||||
$preselected = (GETPOSTISSET('pricetoproduce-'.$line->id.'-'.$i) ? GETPOST('pricetoproduce-'.$line->id.'-'.$i) : ($manufacturingcost ? price($manufacturingcost) : ''));
|
$preselected = (GETPOSTISSET('pricetoproduce-'.$line->id.'-'.$i) ? GETPOST('pricetoproduce-'.$line->id.'-'.$i) : ($manufacturingcost ? price($manufacturingcost) : ''));
|
||||||
print '<td class="right"><input type="text" class="width50 right" name="pricetoproduce-'.$line->id.'-'.$i.'" value="'.$preselected.'"></td>';
|
print '<td class="right"><input type="text" class="width75 right" name="pricetoproduce-'.$line->id.'-'.$i.'" value="'.$preselected.'"></td>';
|
||||||
} else {
|
} else {
|
||||||
print '<td><input type="hidden" class="width50 right" name="pricetoproduce-'.$line->id.'-'.$i.'" value="'.($manufacturingcost ? $manufacturingcost : '').'"></td>';
|
print '<td><input type="hidden" class="width50 right" name="pricetoproduce-'.$line->id.'-'.$i.'" value="'.($manufacturingcost ? $manufacturingcost : '').'"></td>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -109,7 +109,7 @@ if ($object->element == 'product') {
|
|||||||
if (empty($ident) && !empty($conf->global->MAIN_DEFAULT_WAREHOUSE)) {
|
if (empty($ident) && !empty($conf->global->MAIN_DEFAULT_WAREHOUSE)) {
|
||||||
$ident = $conf->global->MAIN_DEFAULT_WAREHOUSE;
|
$ident = $conf->global->MAIN_DEFAULT_WAREHOUSE;
|
||||||
}
|
}
|
||||||
print img_picto('', 'stock').$formproduct->selectWarehouses($ident, 'id_entrepot', 'warehouseopen,warehouseinternal', 1, 0, 0, '', 0, 0, null, 'minwidth100');
|
print img_picto('', 'stock', 'class="pictofixedwidth"').$formproduct->selectWarehouses($ident, 'id_entrepot', 'warehouseopen,warehouseinternal', 1, 0, 0, '', 0, 0, null, 'minwidth100 maxwidth300 widthcentpercentminusx');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
if ($object->element == 'stock') {
|
if ($object->element == 'stock') {
|
||||||
@ -155,10 +155,11 @@ if (ismodEnabled('productbatch') &&
|
|||||||
print '<input type="text" name="batch_number_bis" size="40" disabled="disabled" value="'.(GETPOST('batch_number') ?GETPOST('batch_number') : $pdluo->batch).'">';
|
print '<input type="text" name="batch_number_bis" size="40" disabled="disabled" value="'.(GETPOST('batch_number') ?GETPOST('batch_number') : $pdluo->batch).'">';
|
||||||
print '<input type="hidden" name="batch_number" value="'.(GETPOST('batch_number') ?GETPOST('batch_number') : $pdluo->batch).'">';
|
print '<input type="hidden" name="batch_number" value="'.(GETPOST('batch_number') ?GETPOST('batch_number') : $pdluo->batch).'">';
|
||||||
} else {
|
} else {
|
||||||
print '<input type="text" name="batch_number" class="minwidth300" value="'.(GETPOST('batch_number') ? GETPOST('batch_number') : $pdluo->batch).'">';
|
print img_picto('', 'barcode', 'class="pictofixedwidth"').'<input type="text" name="batch_number" class="minwidth300" value="'.(GETPOST('batch_number') ? GETPOST('batch_number') : $pdluo->batch).'">';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
if (empty($conf->global->PRODUCT_DISABLE_SELLBY)) {
|
if (empty($conf->global->PRODUCT_DISABLE_SELLBY)) {
|
||||||
print '<td>'.$langs->trans("SellByDate").'</td><td>';
|
print '<td>'.$langs->trans("SellByDate").'</td><td>';
|
||||||
|
|||||||
@ -104,7 +104,7 @@ if (isModEnabled('productbatch') &&
|
|||||||
print '<input type="text" name="batch_number_bis" size="40" disabled="disabled" value="'.(GETPOST('batch_number') ?GETPOST('batch_number') : $pdluo->batch).'">';
|
print '<input type="text" name="batch_number_bis" size="40" disabled="disabled" value="'.(GETPOST('batch_number') ?GETPOST('batch_number') : $pdluo->batch).'">';
|
||||||
print '<input type="hidden" name="batch_number" value="'.(GETPOST('batch_number') ?GETPOST('batch_number') : $pdluo->batch).'">';
|
print '<input type="hidden" name="batch_number" value="'.(GETPOST('batch_number') ?GETPOST('batch_number') : $pdluo->batch).'">';
|
||||||
} else {
|
} else {
|
||||||
print '<input type="text" name="batch_number" class="minwidth300" value="'.(GETPOST('batch_number') ? GETPOST('batch_number') : $pdluo->batch).'">';
|
print img_picto('', 'barcode', 'class="pictofixedwidth"').'<input type="text" name="batch_number" class="minwidth300 widthcentpercentminusx maxwidth300" value="'.(GETPOST('batch_number') ? GETPOST('batch_number') : $pdluo->batch).'">';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|||||||
@ -246,6 +246,7 @@ class Tickets extends DolibarrApi
|
|||||||
$socid = DolibarrApiAccess::$user->socid;
|
$socid = DolibarrApiAccess::$user->socid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$search_sale = null;
|
||||||
// If the internal user must only see his customers, force searching by him
|
// If the internal user must only see his customers, force searching by him
|
||||||
$search_sale = 0;
|
$search_sale = 0;
|
||||||
if (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) {
|
if (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user