Merge branch '16.0' of git@github.com:Dolibarr/dolibarr.git into develop
This commit is contained in:
commit
6fb9a4713c
@ -28,8 +28,8 @@ Following changes may create regressions for some external modules, but were nec
|
||||
For users:
|
||||
---------------
|
||||
|
||||
NEW: PHP 8.1 compatibility:
|
||||
Warning!! Application works correctly with PHP8 and 8.1 but you will experience a lot of PHP warnings into the PHP server
|
||||
NEW: PHP 8.0 and 8.1 compatibility (with mysql):
|
||||
Warning!! Application works correctly with PHP 8.0 and 8.1 but you will experience a lot of PHP warnings into the PHP server
|
||||
log files (depending on your PHP setup). Removal of all PHP warnings on server side is planned for v17.
|
||||
NEW: Support for recurring purchase invoices.
|
||||
NEW: #20292 Include German public holidays
|
||||
|
||||
@ -169,6 +169,16 @@ class BookKeeping extends CommonObject
|
||||
*/
|
||||
public $piece_num;
|
||||
|
||||
/**
|
||||
* @var integer|string date of movement validated & lock
|
||||
*/
|
||||
public $date_validation;
|
||||
|
||||
/**
|
||||
* @var integer|string date of movement who are noticed like exported
|
||||
*/
|
||||
public $date_export;
|
||||
|
||||
/**
|
||||
* @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png
|
||||
*/
|
||||
@ -788,8 +798,7 @@ class BookKeeping extends CommonObject
|
||||
$this->piece_num = $obj->piece_num;
|
||||
$this->date_creation = $this->db->jdate($obj->date_creation);
|
||||
$this->date_export = $this->db->jdate($obj->date_export);
|
||||
$this->date_validation = $this->db->jdate($obj->date_validated);
|
||||
$this->date_validation = $this->db->jdate($obj->date_validation);
|
||||
$this->date_validation = isset($obj->date_validated) ? $this->db->jdate($obj->date_validated) : '';
|
||||
}
|
||||
$this->db->free($resql);
|
||||
|
||||
|
||||
@ -294,9 +294,7 @@ if ($action == 'writebookkeeping') {
|
||||
|
||||
$companystatic->id = $tabcompany[$key]['id'];
|
||||
$companystatic->name = $tabcompany[$key]['name'];
|
||||
$companystatic->code_compta = $tabcompany[$key]['code_compta'];
|
||||
$companystatic->code_compta_fournisseur = $tabcompany[$key]['code_compta_fournisseur'];
|
||||
$companystatic->code_client = $tabcompany[$key]['code_client'];
|
||||
$companystatic->code_fournisseur = $tabcompany[$key]['code_fournisseur'];
|
||||
$companystatic->fournisseur = 1;
|
||||
|
||||
@ -636,9 +634,7 @@ if ($action == 'exportcsv') { // ISO and not UTF8 !
|
||||
foreach ($tabfac as $key => $val) {
|
||||
$companystatic->id = $tabcompany[$key]['id'];
|
||||
$companystatic->name = $tabcompany[$key]['name'];
|
||||
$companystatic->code_compta = $tabcompany[$key]['code_compta'];
|
||||
$companystatic->code_compta_fournisseur = $tabcompany[$key]['code_compta_fournisseur'];
|
||||
$companystatic->code_client = $tabcompany[$key]['code_client'];
|
||||
$companystatic->code_fournisseur = $tabcompany[$key]['code_fournisseur'];
|
||||
$companystatic->fournisseur = 1;
|
||||
|
||||
@ -767,7 +763,7 @@ if (empty($action) || $action == 'view') {
|
||||
$periodlink = '';
|
||||
$exportlink = '';
|
||||
$builddate = dol_now();
|
||||
$description .= $langs->trans("DescJournalOnlyBindedVisible").'<br>';
|
||||
$description = $langs->trans("DescJournalOnlyBindedVisible").'<br>';
|
||||
if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
|
||||
$description .= $langs->trans("DepositsAreNotIncluded");
|
||||
} else {
|
||||
@ -847,9 +843,7 @@ if (empty($action) || $action == 'view') {
|
||||
foreach ($tabfac as $key => $val) {
|
||||
$companystatic->id = $tabcompany[$key]['id'];
|
||||
$companystatic->name = $tabcompany[$key]['name'];
|
||||
$companystatic->code_compta = $tabcompany[$key]['code_compta'];
|
||||
$companystatic->code_compta_fournisseur = $tabcompany[$key]['code_compta_fournisseur'];
|
||||
$companystatic->code_client = $tabcompany[$key]['code_client'];
|
||||
$companystatic->code_fournisseur = $tabcompany[$key]['code_fournisseur'];
|
||||
$companystatic->fournisseur = 1;
|
||||
|
||||
|
||||
@ -311,9 +311,7 @@ if ($action == 'writebookkeeping') {
|
||||
$companystatic->id = $tabcompany[$key]['id'];
|
||||
$companystatic->name = $tabcompany[$key]['name'];
|
||||
$companystatic->code_compta = $tabcompany[$key]['code_compta'];
|
||||
$companystatic->code_compta_fournisseur = $tabcompany[$key]['code_compta_fournisseur'];
|
||||
$companystatic->code_client = $tabcompany[$key]['code_client'];
|
||||
$companystatic->code_fournisseur = $tabcompany[$key]['code_fournisseur'];
|
||||
$companystatic->client = 3;
|
||||
|
||||
$invoicestatic->id = $key;
|
||||
@ -601,9 +599,7 @@ if ($action == 'exportcsv') { // ISO and not UTF8 !
|
||||
$companystatic->id = $tabcompany[$key]['id'];
|
||||
$companystatic->name = $tabcompany[$key]['name'];
|
||||
$companystatic->code_compta = $tabcompany[$key]['code_compta'];
|
||||
$companystatic->code_compta_fournisseur = $tabcompany[$key]['code_compta_fournisseur'];
|
||||
$companystatic->code_client = $tabcompany[$key]['code_client'];
|
||||
$companystatic->code_fournisseur = $tabcompany[$key]['code_fournisseur'];
|
||||
$companystatic->client = 3;
|
||||
|
||||
$invoicestatic->id = $key;
|
||||
@ -791,9 +787,7 @@ if (empty($action) || $action == 'view') {
|
||||
$companystatic->id = $tabcompany[$key]['id'];
|
||||
$companystatic->name = $tabcompany[$key]['name'];
|
||||
$companystatic->code_compta = $tabcompany[$key]['code_compta'];
|
||||
$companystatic->code_compta_fournisseur = $tabcompany[$key]['code_compta_fournisseur'];
|
||||
$companystatic->code_client = $tabcompany[$key]['code_client'];
|
||||
$companystatic->code_fournisseur = $tabcompany[$key]['code_fournisseur'];
|
||||
$companystatic->client = 3;
|
||||
|
||||
$invoicestatic->id = $key;
|
||||
|
||||
@ -163,6 +163,7 @@ class DolibarrApi
|
||||
unset($object->statuts_short);
|
||||
unset($object->statuts_logo);
|
||||
unset($object->statuts_long);
|
||||
|
||||
//unset($object->labelStatus);
|
||||
//unset($object->labelStatusShort);
|
||||
|
||||
@ -184,6 +185,7 @@ class DolibarrApi
|
||||
unset($object->picto);
|
||||
|
||||
unset($object->fieldsforcombobox);
|
||||
unset($object->regeximgext);
|
||||
|
||||
unset($object->skip_update_total);
|
||||
unset($object->context);
|
||||
@ -259,6 +261,11 @@ class DolibarrApi
|
||||
if (!empty($object->thirdparty) && is_object($object->thirdparty)) {
|
||||
$this->_cleanObjectDatas($object->thirdparty);
|
||||
}
|
||||
|
||||
if (!empty($object->product) && is_object($object->product)) {
|
||||
$this->_cleanObjectDatas($object->product);
|
||||
}
|
||||
|
||||
return $object;
|
||||
}
|
||||
|
||||
|
||||
@ -1320,12 +1320,19 @@ class BOM extends CommonObject
|
||||
*/
|
||||
public function calculateCosts()
|
||||
{
|
||||
global $conf;
|
||||
global $conf, $hookmanager;
|
||||
|
||||
include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
||||
$this->unit_cost = 0;
|
||||
$this->total_cost = 0;
|
||||
|
||||
$parameters=array();
|
||||
$reshook = $hookmanager->executeHooks('calculateCostsBom', $parameters, $this); // Note that $action and $object may have been modified by hook
|
||||
|
||||
if ($reshook > 0) {
|
||||
return $hookmanager->resPrint;
|
||||
}
|
||||
|
||||
if (is_array($this->lines) && count($this->lines)) {
|
||||
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php';
|
||||
$productFournisseur = new ProductFournisseur($this->db);
|
||||
|
||||
@ -1262,7 +1262,7 @@ class Propal extends CommonObject
|
||||
break;
|
||||
}
|
||||
// Defined the new fk_parent_line
|
||||
if ($result > 0) {
|
||||
if ($result > 0 && $line->product_type == 9) {
|
||||
$fk_parent_line = $result;
|
||||
}
|
||||
}
|
||||
|
||||
@ -435,7 +435,7 @@ if (empty($reshook)) {
|
||||
}
|
||||
|
||||
// Defined the new fk_parent_line
|
||||
if ($result > 0) {
|
||||
if ($result > 0 && $lines[$i]->product_type == 9) {
|
||||
$fk_parent_line = $result;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1073,7 +1073,7 @@ class Commande extends CommonOrder
|
||||
return -1;
|
||||
}
|
||||
// Defined the new fk_parent_line
|
||||
if ($result > 0) {
|
||||
if ($result > 0 && $line->product_type == 9) {
|
||||
$fk_parent_line = $result;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1251,7 +1251,7 @@ if (empty($reshook)) {
|
||||
$object->lines[] = $line; // insert new line in current object
|
||||
|
||||
// Defined the new fk_parent_line
|
||||
if ($result > 0) {
|
||||
if ($result > 0 && $line->product_type == 9) {
|
||||
$fk_parent_line = $result;
|
||||
}
|
||||
}
|
||||
@ -1772,7 +1772,7 @@ if (empty($reshook)) {
|
||||
}
|
||||
|
||||
// Defined the new fk_parent_line
|
||||
if ($result > 0) {
|
||||
if ($result > 0 && $lines[$i]->product_type == 9) {
|
||||
$fk_parent_line = $result;
|
||||
}
|
||||
}
|
||||
|
||||
@ -872,7 +872,7 @@ class Facture extends CommonInvoice
|
||||
);
|
||||
|
||||
// Defined the new fk_parent_line
|
||||
if ($result > 0) {
|
||||
if ($result > 0 && $newinvoiceline->product_type == 9) {
|
||||
$fk_parent_line = $result;
|
||||
}
|
||||
}
|
||||
|
||||
@ -454,9 +454,6 @@ class BonPrelevement extends CommonObject
|
||||
dol_syslog(get_class($this)."::set_infocredit AddPaymentToBank Error ".$this->error);
|
||||
}
|
||||
}
|
||||
//var_dump($paiement->amounts);
|
||||
//var_dump($thirdpartyid);
|
||||
//var_dump($cursoramounts);
|
||||
}
|
||||
|
||||
// Update withdrawal line
|
||||
@ -1057,9 +1054,9 @@ class BonPrelevement extends CommonObject
|
||||
$this->emetteur_iban = $account->iban;
|
||||
$this->emetteur_bic = $account->bic;
|
||||
|
||||
$this->emetteur_ics = ($type == 'bank-transfer' ? $account->ics_transfer : $account->ics);
|
||||
$this->emetteur_ics = ($type == 'bank-transfer' ? $account->ics_transfer : $account->ics);
|
||||
|
||||
$this->raison_sociale = $account->proprio;
|
||||
$this->raison_sociale = $account->proprio;
|
||||
}
|
||||
|
||||
$this->factures = $factures_prev_id;
|
||||
@ -2208,7 +2205,8 @@ class BonPrelevement extends CommonObject
|
||||
$XML_SEPA_INFO .= ' </CdtrSchmeId>'.$CrLf;*/
|
||||
}
|
||||
} else {
|
||||
fputs($this->file, 'INCORRECT EMETTEUR '.$XML_SEPA_INFO.$CrLf);
|
||||
fputs($this->file, 'INCORRECT EMETTEUR '.$this->raison_sociale.$CrLf);
|
||||
$XML_SEPA_INFO = '';
|
||||
}
|
||||
return $XML_SEPA_INFO;
|
||||
}
|
||||
|
||||
@ -270,8 +270,8 @@ if ($result) {
|
||||
$i = 0;
|
||||
while ($i < $num) {
|
||||
$obj = $db->fetch_object($result);
|
||||
$cum_ht[$obj->dm] = !empty($obj->amount) ? $obj->amount : 0;
|
||||
$cum[$obj->dm] = $obj->amount_ttc;
|
||||
$cum_ht[$obj->dm] = empty($obj->amount) ? 0 : $obj->amount;
|
||||
$cum[$obj->dm] = empty($obj->amount_ttc) ? 0 : $obj->amount_ttc;
|
||||
if ($obj->amount_ttc) {
|
||||
$minyearmonth = ($minyearmonth ? min($minyearmonth, $obj->dm) : $obj->dm);
|
||||
$maxyearmonth = max($maxyearmonth, $obj->dm);
|
||||
@ -303,7 +303,11 @@ if ($modecompta == 'RECETTES-DEPENSES') {
|
||||
$i = 0;
|
||||
while ($i < $num) {
|
||||
$obj = $db->fetch_object($result);
|
||||
$cum[$obj->dm] += $obj->amount_ttc;
|
||||
if (empty($cum[$obj->dm])) {
|
||||
$cum[$obj->dm] = $obj->amount_ttc;
|
||||
} else {
|
||||
$cum[$obj->dm] += $obj->amount_ttc;
|
||||
}
|
||||
if ($obj->amount_ttc) {
|
||||
$minyearmonth = ($minyearmonth ?min($minyearmonth, $obj->dm) : $obj->dm);
|
||||
$maxyearmonth = max($maxyearmonth, $obj->dm);
|
||||
@ -405,12 +409,6 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) {
|
||||
$case = dol_print_date(dol_mktime(1, 1, 1, $mois_modulo, 1, $annee_decalage), "%Y-%m");
|
||||
$caseprev = dol_print_date(dol_mktime(1, 1, 1, $mois_modulo, 1, $annee_decalage - 1), "%Y-%m");
|
||||
|
||||
$total_ht[$annee]=0;
|
||||
$total[$annee]=0;
|
||||
$cum_ht[$case]=0;
|
||||
$cum[$case]=0;
|
||||
|
||||
|
||||
if ($annee >= $year_start) { // We ignore $annee < $year_start, we loop on it to be able to make delta, nothing is output.
|
||||
if ($modecompta == 'CREANCES-DETTES') {
|
||||
// Value turnover of month w/o VAT
|
||||
@ -453,7 +451,7 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) {
|
||||
print "</td>";
|
||||
|
||||
// Percentage of month
|
||||
print '<td class="borderrightlight right">';
|
||||
print '<td class="borderrightlight right"><span class="opacitymedium">';
|
||||
//var_dump($annee.' '.$year_end.' '.$mois.' '.$month_end);
|
||||
if ($annee < $year_end || ($annee == $year_end && $mois <= $month_end)) {
|
||||
if ($annee_decalage > $minyear && $case <= $casenow) {
|
||||
@ -483,7 +481,7 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) {
|
||||
}
|
||||
}
|
||||
}
|
||||
print '</td>';
|
||||
print '</span></td>';
|
||||
|
||||
if ($annee_decalage < $year_end || ($annee_decalage == $year_end && $mois > 12 && $annee < $year_end)) {
|
||||
print '<td width="15"> </td>';
|
||||
|
||||
@ -274,6 +274,9 @@ function getDefaultDatesForTransfer()
|
||||
{
|
||||
global $db, $conf;
|
||||
|
||||
$pastmonth = 0;
|
||||
$pastmonthyear = 0;
|
||||
|
||||
// Period by default on transfer (0: previous month | 1: current month | 2: fiscal year)
|
||||
$periodbydefaultontransfer = (empty($conf->global->ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER) ? 0 : $conf->global->ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER);
|
||||
if ($periodbydefaultontransfer == 2) {
|
||||
|
||||
@ -2992,10 +2992,10 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity,
|
||||
// Wrapping for import module
|
||||
$accessallowed = $user->rights->import->run;
|
||||
$original_file = $conf->import->dir_temp.'/'.$original_file;
|
||||
} elseif ($modulepart == 'recruitment' && !empty($conf->recruitment->dir_temp)) {
|
||||
// Wrapping for recruitment module
|
||||
$accessallowed = $user->rights->$modulepart->recruitmentjobposition->read;
|
||||
$original_file = $conf->recruitment->dir_output .'/'. $original_file;
|
||||
} elseif ($modulepart == 'recruitment' && !empty($conf->recruitment->dir_output)) {
|
||||
// Wrapping for recruitment module
|
||||
$accessallowed = $user->rights->recruitment->recruitmentjobposition->read;
|
||||
$original_file = $conf->recruitment->dir_output.'/'.$original_file;
|
||||
} elseif ($modulepart == 'editor' && !empty($conf->fckeditor->dir_output)) {
|
||||
// Wrapping for wysiwyg editor
|
||||
$accessallowed = 1;
|
||||
|
||||
@ -2655,7 +2655,7 @@ function getModuleDirForApiClass($moduleobject)
|
||||
$moduledirforclass = 'fichinter';
|
||||
} elseif ($moduleobject == 'mos') {
|
||||
$moduledirforclass = 'mrp';
|
||||
} elseif (in_array($moduleobject, array('products', 'expensereports', 'users', 'tickets', 'boms'))) {
|
||||
} elseif (in_array($moduleobject, array('products', 'expensereports', 'users', 'tickets', 'boms', 'receptions'))) {
|
||||
$moduledirforclass = preg_replace('/s$/', '', $moduleobject);
|
||||
}
|
||||
|
||||
|
||||
@ -1195,7 +1195,7 @@ class pdf_crabe extends ModelePDFFactures
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
|
||||
global $langs;
|
||||
|
||||
$langs->loadLangs(array('payment', 'paybox'));
|
||||
$langs->loadLangs(array('payment', 'paybox', 'stripe'));
|
||||
$servicename = $langs->transnoentities('Online');
|
||||
$paiement_url = getOnlinePaymentUrl('', 'invoice', $object->ref, '', '', '');
|
||||
$linktopay = $langs->trans("ToOfferALinkForOnlinePayment", $servicename).' <a href="'.$paiement_url.'">'.$outputlangs->transnoentities("ClickHere").'</a>';
|
||||
|
||||
@ -217,11 +217,11 @@ class Expedition extends CommonObject
|
||||
$this->statuts[2] = 'StatusSendingProcessed';
|
||||
|
||||
// List of short language codes for status
|
||||
$this->statutshorts = array();
|
||||
$this->statutshorts[-1] = 'StatusSendingCanceledShort';
|
||||
$this->statutshorts[0] = 'StatusSendingDraftShort';
|
||||
$this->statutshorts[1] = 'StatusSendingValidatedShort';
|
||||
$this->statutshorts[2] = 'StatusSendingProcessedShort';
|
||||
$this->statuts_short = array();
|
||||
$this->statuts_short[-1] = 'StatusSendingCanceledShort';
|
||||
$this->statuts_short[0] = 'StatusSendingDraftShort';
|
||||
$this->statuts_short[1] = 'StatusSendingValidatedShort';
|
||||
$this->statuts_short[2] = 'StatusSendingProcessedShort';
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1884,7 +1884,7 @@ class Expedition extends CommonObject
|
||||
global $langs;
|
||||
|
||||
$labelStatus = $langs->transnoentitiesnoconv($this->statuts[$status]);
|
||||
$labelStatusShort = $langs->transnoentitiesnoconv($this->statutshorts[$status]);
|
||||
$labelStatusShort = $langs->transnoentitiesnoconv($this->statuts_short[$status]);
|
||||
|
||||
$statusType = 'status'.$status;
|
||||
if ($status == self::STATUS_VALIDATED) {
|
||||
|
||||
@ -751,7 +751,7 @@ class CommandeFournisseur extends CommonOrder
|
||||
// phpcs:enable
|
||||
global $conf, $langs, $hookmanager;
|
||||
|
||||
if (empty($this->statuts) || empty($this->statutshort)) {
|
||||
if (empty($this->statuts) || empty($this->statuts_short)) {
|
||||
$langs->load('orders');
|
||||
|
||||
$this->statuts[0] = 'StatusSupplierOrderDraft';
|
||||
@ -769,15 +769,15 @@ class CommandeFournisseur extends CommonOrder
|
||||
$this->statuts[9] = 'StatusSupplierOrderRefused';
|
||||
|
||||
// List of language codes for status
|
||||
$this->statutshort[0] = 'StatusSupplierOrderDraftShort';
|
||||
$this->statutshort[1] = 'StatusSupplierOrderValidatedShort';
|
||||
$this->statutshort[2] = 'StatusSupplierOrderApprovedShort';
|
||||
$this->statutshort[3] = 'StatusSupplierOrderOnProcessShort';
|
||||
$this->statutshort[4] = 'StatusSupplierOrderReceivedPartiallyShort';
|
||||
$this->statutshort[5] = 'StatusSupplierOrderReceivedAllShort';
|
||||
$this->statutshort[6] = 'StatusSupplierOrderCanceledShort';
|
||||
$this->statutshort[7] = 'StatusSupplierOrderCanceledShort';
|
||||
$this->statutshort[9] = 'StatusSupplierOrderRefusedShort';
|
||||
$this->statuts_short[0] = 'StatusSupplierOrderDraftShort';
|
||||
$this->statuts_short[1] = 'StatusSupplierOrderValidatedShort';
|
||||
$this->statuts_short[2] = 'StatusSupplierOrderApprovedShort';
|
||||
$this->statuts_short[3] = 'StatusSupplierOrderOnProcessShort';
|
||||
$this->statuts_short[4] = 'StatusSupplierOrderReceivedPartiallyShort';
|
||||
$this->statuts_short[5] = 'StatusSupplierOrderReceivedAllShort';
|
||||
$this->statuts_short[6] = 'StatusSupplierOrderCanceledShort';
|
||||
$this->statuts_short[7] = 'StatusSupplierOrderCanceledShort';
|
||||
$this->statuts_short[9] = 'StatusSupplierOrderRefusedShort';
|
||||
}
|
||||
|
||||
$statustrans = array(
|
||||
@ -806,7 +806,7 @@ class CommandeFournisseur extends CommonOrder
|
||||
}
|
||||
|
||||
$statusLong = $langs->transnoentitiesnoconv($this->statuts[$status]).$billedtext;
|
||||
$statusShort = $langs->transnoentitiesnoconv($this->statutshort[$status]);
|
||||
$statusShort = $langs->transnoentitiesnoconv($this->statuts_short[$status]);
|
||||
|
||||
$parameters = array('status' => $status, 'mode' => $mode, 'billed' => $billed);
|
||||
$reshook = $hookmanager->executeHooks('LibStatut', $parameters, $this); // Note that $action and $object may have been modified by hook
|
||||
|
||||
@ -131,9 +131,9 @@ class CommandeFournisseurDispatch extends CommonObjectLine
|
||||
$this->statuts[0] = 'Received';
|
||||
$this->statuts[1] = 'Verified';
|
||||
$this->statuts[2] = 'Denied';
|
||||
$this->statutshort[0] = 'Received';
|
||||
$this->statutshort[1] = 'Verified';
|
||||
$this->statutshort[2] = 'Denied';
|
||||
$this->statuts_short[0] = 'Received';
|
||||
$this->statuts_short[1] = 'Verified';
|
||||
$this->statuts_short[2] = 'Denied';
|
||||
}
|
||||
|
||||
|
||||
@ -580,7 +580,7 @@ class CommandeFournisseurDispatch extends CommonObjectLine
|
||||
if ($mode == 0) {
|
||||
return $langs->trans($this->statuts[$status]);
|
||||
} elseif ($mode == 1) {
|
||||
return $langs->trans($this->statutshort[$status]);
|
||||
return $langs->trans($this->statuts_short[$status]);
|
||||
} elseif ($mode == 2) {
|
||||
return $langs->trans($this->statuts[$status]);
|
||||
} elseif ($mode == 3) {
|
||||
@ -601,11 +601,11 @@ class CommandeFournisseurDispatch extends CommonObjectLine
|
||||
}
|
||||
} elseif ($mode == 5) {
|
||||
if ($status == 0) {
|
||||
return '<span class="hideonsmartphone">'.$langs->trans($this->statutshort[$status]).' </span>'.img_picto($langs->trans($this->statuts[$status]), 'statut0');
|
||||
return '<span class="hideonsmartphone">'.$langs->trans($this->statuts_short[$status]).' </span>'.img_picto($langs->trans($this->statuts[$status]), 'statut0');
|
||||
} elseif ($status == 1) {
|
||||
return '<span class="hideonsmartphone">'.$langs->trans($this->statutshort[$status]).' </span>'.img_picto($langs->trans($this->statuts[$status]), 'statut4');
|
||||
return '<span class="hideonsmartphone">'.$langs->trans($this->statuts_short[$status]).' </span>'.img_picto($langs->trans($this->statuts[$status]), 'statut4');
|
||||
} elseif ($status == 2) {
|
||||
return '<span class="hideonsmartphone">'.$langs->trans($this->statutshort[$status]).' </span>'.img_picto($langs->trans($this->statuts[$status]), 'statut8');
|
||||
return '<span class="hideonsmartphone">'.$langs->trans($this->statuts_short[$status]).' </span>'.img_picto($langs->trans($this->statuts[$status]), 'statut8');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1027,6 +1027,9 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
$disable = 'disabled';
|
||||
}
|
||||
|
||||
// input hidden with fk_product of line
|
||||
print '<input type="hidden" name="product-'.$line->id.'-'.$i.'" value="'.$line->fk_product.'">';
|
||||
|
||||
// Qty
|
||||
print '<td class="right"><input type="text" class="width50 right" id="qtytoconsume-'.$line->id.'-'.$i.'" name="qty-'.$line->id.'-'.$i.'" value="'.$preselected.'" '.$disable.'></td>';
|
||||
|
||||
|
||||
@ -4830,7 +4830,7 @@ class Product extends CommonObject
|
||||
$sql .= " AND pa.fk_product_fils <> ".((int) $id); // This should not happens, it is to avoid infinite loop if it happens
|
||||
$sql.= " ORDER BY pa.rang";
|
||||
|
||||
dol_syslog(get_class($this).'::getChildsArbo id='.$id.' level='.$level. ' parents='.$parents, LOG_DEBUG);
|
||||
dol_syslog(get_class($this).'::getChildsArbo id='.$id.' level='.$level. ' parents='.implode(',', $parents), LOG_DEBUG);
|
||||
|
||||
if ($level == 1) {
|
||||
$alreadyfound = array($id=>1); // We init array of found object to start of tree, so if we found it later (should not happened), we stop immediatly
|
||||
|
||||
@ -71,8 +71,8 @@ if (!$user->rights->projet->lire) {
|
||||
$diroutputmassaction = $conf->project->dir_output.'/temp/massgeneration/'.$user->id;
|
||||
|
||||
$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit;
|
||||
$sortfield = GETPOST("sortfield", "aZ09comma");
|
||||
$sortorder = GETPOST("sortorder", 'aZ09comma');
|
||||
$sortfield = GETPOST('sortfield', 'aZ09comma');
|
||||
$sortorder = GETPOST('sortorder', 'aZ09comma');
|
||||
$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
|
||||
if (empty($page) || $page < 0 || GETPOST('button_search', 'alpha') || GETPOST('button_removefilter', 'alpha')) {
|
||||
// If $page is not defined, or '' or -1 or if we click on clear filters
|
||||
@ -229,7 +229,8 @@ $arrayfields = dol_sort_array($arrayfields, 'position');
|
||||
*/
|
||||
|
||||
if (GETPOST('cancel', 'alpha')) {
|
||||
$action = 'list'; $massaction = '';
|
||||
$action = 'list';
|
||||
$massaction = '';
|
||||
}
|
||||
if (!GETPOST('confirmmassaction', 'alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') {
|
||||
$massaction = '';
|
||||
@ -356,13 +357,22 @@ if (empty($reshook)) {
|
||||
* View
|
||||
*/
|
||||
|
||||
$companystatic = new Societe($db);
|
||||
$form = new Form($db);
|
||||
|
||||
$companystatic = new Societe($db);
|
||||
$formother = new FormOther($db);
|
||||
$formproject = new FormProjets($db);
|
||||
|
||||
$help_url = "EN:Module_Projects|FR:Module_Projets|ES:Módulo_Proyectos";
|
||||
$title = $langs->trans("Projects");
|
||||
$title = $langs->trans("LeadsOrProjects");
|
||||
if (empty($conf->global->PROJECT_USE_OPPORTUNITIES)) {
|
||||
$title = $langs->trans("Projects");
|
||||
}
|
||||
if (isset($conf->global->PROJECT_USE_OPPORTUNITIES) && $conf->global->PROJECT_USE_OPPORTUNITIES == 2) { // 2 = leads only
|
||||
$title = $langs->trans("Leads");
|
||||
}
|
||||
$morejs = array();
|
||||
$morecss = array();
|
||||
|
||||
|
||||
// Get list of project id allowed to user (in a string list separated by comma)
|
||||
@ -1190,8 +1200,12 @@ $totalarray = array(
|
||||
'nbfield' => 0,
|
||||
'val' => array(),
|
||||
);
|
||||
while ($i < min($num, $limit)) {
|
||||
$imaxinloop = ($limit ? min($num, $limit) : $num);
|
||||
while ($i < $imaxinloop) {
|
||||
$obj = $db->fetch_object($resql);
|
||||
if (empty($obj)) {
|
||||
break; // Should not happen
|
||||
}
|
||||
|
||||
$object->id = $obj->id;
|
||||
$object->user_author_id = $obj->fk_user_creat;
|
||||
@ -1648,14 +1662,26 @@ while ($i < min($num, $limit)) {
|
||||
// Show total line
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php';
|
||||
|
||||
// If no record found
|
||||
if ($num == 0) {
|
||||
$colspan = 1;
|
||||
foreach ($arrayfields as $key => $val) {
|
||||
if (!empty($val['checked'])) {
|
||||
$colspan++;
|
||||
}
|
||||
}
|
||||
print '<tr><td colspan="'.$colspan.'"><span class="opacitymedium">'.$langs->trans("NoRecordFound").'</span></td></tr>';
|
||||
}
|
||||
|
||||
$db->free($resql);
|
||||
|
||||
$parameters = array('sql' => $sql);
|
||||
$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters); // Note that $action and $object may have been modified by hook
|
||||
$parameters = array('arrayfields'=>$arrayfields, 'sql' => $sql);
|
||||
$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
||||
print $hookmanager->resPrint;
|
||||
|
||||
print "</table>\n";
|
||||
print '</div>';
|
||||
|
||||
print "</form>\n";
|
||||
|
||||
// End of page
|
||||
|
||||
@ -149,11 +149,11 @@ class Reception extends CommonObject
|
||||
$this->statuts[2] = 'StatusReceptionProcessed';
|
||||
|
||||
// List of short language codes for status
|
||||
$this->statutshorts = array();
|
||||
$this->statutshorts[-1] = 'StatusReceptionCanceledShort';
|
||||
$this->statutshorts[0] = 'StatusReceptionDraftShort';
|
||||
$this->statutshorts[1] = 'StatusReceptionValidatedShort';
|
||||
$this->statutshorts[2] = 'StatusReceptionProcessedShort';
|
||||
$this->statuts_short = array();
|
||||
$this->statuts_short[-1] = 'StatusReceptionCanceledShort';
|
||||
$this->statuts_short[0] = 'StatusReceptionDraftShort';
|
||||
$this->statuts_short[1] = 'StatusReceptionValidatedShort';
|
||||
$this->statuts_short[2] = 'StatusReceptionProcessedShort';
|
||||
}
|
||||
|
||||
/**
|
||||
@ -456,8 +456,8 @@ class Reception extends CommonObject
|
||||
$this->brouillon = 1;
|
||||
}
|
||||
|
||||
$file = $conf->reception->dir_output."/".get_exdir($this->id, 2, 0, 0, $this, 'reception')."/".$this->id.".pdf";
|
||||
$this->pdf_filename = $file;
|
||||
//$file = $conf->reception->dir_output."/".get_exdir(0, 0, 0, 1, $this, 'reception')."/".$this->id.".pdf";
|
||||
//$this->pdf_filename = $file;
|
||||
|
||||
// Tracking url
|
||||
$this->getUrlTrackingStatus($obj->tracking_number);
|
||||
@ -1177,6 +1177,8 @@ class Reception extends CommonObject
|
||||
$line = new CommandeFournisseurDispatch($this->db);
|
||||
|
||||
$line->fetch($obj->rowid);
|
||||
|
||||
// TODO Remove or keep this ?
|
||||
$line->fetch_product();
|
||||
|
||||
$sql_commfourndet = 'SELECT qty, ref, label, description, tva_tx, vat_src_code, subprice, multicurrency_subprice, remise_percent';
|
||||
@ -1304,7 +1306,7 @@ class Reception extends CommonObject
|
||||
global $langs;
|
||||
|
||||
$labelStatus = $langs->transnoentitiesnoconv($this->statuts[$status]);
|
||||
$labelStatusShort = $langs->transnoentitiesnoconv($this->statutshorts[$status]);
|
||||
$labelStatusShort = $langs->transnoentitiesnoconv($this->statuts_short[$status]);
|
||||
|
||||
$statusType = 'status'.$status;
|
||||
if ($status == self::STATUS_VALIDATED) {
|
||||
|
||||
@ -744,6 +744,9 @@ class User extends CommonObject
|
||||
// If module is abc@module, we check permission user->rights->module->abc->permlevel1
|
||||
$tmp = explode('@', $rightsPath, 2);
|
||||
if (!empty($tmp[1])) {
|
||||
if (strpos($module, '@') !== false) {
|
||||
$module = $tmp[1];
|
||||
}
|
||||
$rightsPath = $tmp[1];
|
||||
$permlevel2 = $permlevel1;
|
||||
$permlevel1 = $tmp[0];
|
||||
|
||||
Loading…
Reference in New Issue
Block a user