| @@ -237,7 +237,7 @@ discard block | ||
| 237 | 237 | 'skip_batch' => &$skip_batch, | 
| 238 | 238 | 'id_product_batch' => &$id_product_batch | 
| 239 | 239 | ); | 
| 240 | -			$reshook = $hookmanager->executeHooks('stockMovementCreate', $parameters, $this, $action);    // Note that $action and $object may have been modified by some hooks | |
| 240 | +			$reshook = $hookmanager->executeHooks('stockMovementCreate', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks | |
| 241 | 241 | |
| 242 | 242 |  			if ($reshook < 0) { | 
| 243 | 243 |  				if (!empty($hookmanager->resPrint)) { | 
| @@ -578,7 +578,7 @@ discard block | ||
| 578 | 578 | // Update stock quantity | 
| 579 | 579 |  			if (!$error) { | 
| 580 | 580 |  				if ($alreadyarecord > 0) { | 
| 581 | - $sql = "UPDATE ".$this->db->prefix()."product_stock SET reel = " . ((float) $oldqtywarehouse + (float) $qty); | |
| 581 | + $sql = "UPDATE ".$this->db->prefix()."product_stock SET reel = ".((float) $oldqtywarehouse + (float) $qty); | |
| 582 | 582 | $sql .= " WHERE fk_entrepot = ".((int) $entrepot_id)." AND fk_product = ".((int) $fk_product); | 
| 583 | 583 |  				} else { | 
| 584 | 584 | $sql = "INSERT INTO ".$this->db->prefix()."product_stock"; | 
| @@ -726,8 +726,8 @@ discard block | ||
| 726 | 726 | $this->price = $obj->price; | 
| 727 | 727 | $this->fk_user_author = $obj->fk_user_author; | 
| 728 | 728 | $this->label = $obj->label; | 
| 729 | - $this->fk_origin = $obj->origin_id; // For backward compatibility | |
| 730 | - $this->origintype = $obj->origin_type; // For backward compatibility | |
| 729 | + $this->fk_origin = $obj->origin_id; // For backward compatibility | |
| 730 | + $this->origintype = $obj->origin_type; // For backward compatibility | |
| 731 | 731 | $this->origin_id = $obj->origin_id; | 
| 732 | 732 | $this->origin_type = $obj->origin_type; | 
| 733 | 733 | $this->inventorycode = $obj->inventorycode; | 
| @@ -962,8 +962,8 @@ discard block | ||
| 962 | 962 |  			} else {					// product_batch record not found | 
| 963 | 963 | $pdluo->fk_product_stock = $vfk_product_stock; | 
| 964 | 964 | $pdluo->qty = $qty; | 
| 965 | - $pdluo->eatby = empty($dluo['eatby']) ? '' : $dluo['eatby']; // No more used. Now eatby date is store in table of lot, no more into prouct_batch table. | |
| 966 | - $pdluo->sellby = empty($dluo['sellby']) ? '' : $dluo['sellby']; // No more used. Now sellby date is store in table of lot, no more into prouct_batch table. | |
| 965 | + $pdluo->eatby = empty($dluo['eatby']) ? '' : $dluo['eatby']; // No more used. Now eatby date is store in table of lot, no more into prouct_batch table. | |
| 966 | + $pdluo->sellby = empty($dluo['sellby']) ? '' : $dluo['sellby']; // No more used. Now sellby date is store in table of lot, no more into prouct_batch table. | |
| 967 | 967 | $pdluo->batch = $vbatchnumber; | 
| 968 | 968 | |
| 969 | 969 | $result = $pdluo->create($user, 1); | 
| @@ -1160,8 +1160,8 @@ discard block | ||
| 1160 | 1160 | $label .= '<div width="100%">'; | 
| 1161 | 1161 |  		$label .= '<b>'.$langs->trans('Ref').':</b> '.$this->id; | 
| 1162 | 1162 |  		$label .= '<br><b>'.$langs->trans('Label').':</b> '.$this->label; | 
| 1163 | - $qtylabel = (($this->qty > 0) ? '<span class="stockmovemententry">+' : '<span class="stockmovementexit">') . $this->qty . '</span>'; | |
| 1164 | -		$label .= '<br><b>'.$langs->trans('Qty').':</b> ' . $qtylabel; | |
| 1163 | + $qtylabel = (($this->qty > 0) ? '<span class="stockmovemententry">+' : '<span class="stockmovementexit">').$this->qty.'</span>'; | |
| 1164 | +		$label .= '<br><b>'.$langs->trans('Qty').':</b> '.$qtylabel; | |
| 1165 | 1165 |  		if ($this->batch) { | 
| 1166 | 1166 |  			$label .= '<br><b>'.$langs->trans('Batch').':</b> '.$this->batch; | 
| 1167 | 1167 | } | 
| @@ -1289,8 +1289,8 @@ discard block | ||
| 1289 | 1289 | $sql = "SELECT sum(pb.qty) as cpt"; | 
| 1290 | 1290 | $sql .= " FROM ".$this->db->prefix()."product_batch as pb"; | 
| 1291 | 1291 | $sql .= " INNER JOIN ".$this->db->prefix()."product_stock as ps ON ps.rowid = pb.fk_product_stock"; | 
| 1292 | - $sql .= " WHERE ps.fk_product = " . ((int) $fk_product); | |
| 1293 | - $sql .= " AND pb.batch = '" . $this->db->escape($batch) . "'"; | |
| 1292 | + $sql .= " WHERE ps.fk_product = ".((int) $fk_product); | |
| 1293 | + $sql .= " AND pb.batch = '".$this->db->escape($batch)."'"; | |
| 1294 | 1294 | |
| 1295 | 1295 | $result = $this->db->query($sql); | 
| 1296 | 1296 |  		if ($result) { | 
| @@ -1314,7 +1314,7 @@ discard block | ||
| 1314 | 1314 | */ | 
| 1315 | 1315 | public function reverseMouvement() | 
| 1316 | 1316 |  	{ | 
| 1317 | - $formattedDate = "REVERTMV" .dol_print_date($this->datem, '%Y%m%d%His'); | |
| 1317 | + $formattedDate = "REVERTMV".dol_print_date($this->datem, '%Y%m%d%His'); | |
| 1318 | 1318 |  		if ($this->label == 'Annulation movement ID'.$this->id) { | 
| 1319 | 1319 | return -1; | 
| 1320 | 1320 | } | 
| @@ -1350,11 +1350,11 @@ discard block | ||
| 1350 | 1350 |  	{ | 
| 1351 | 1351 | $date = ''; | 
| 1352 | 1352 | |
| 1353 | - $sql = "SELECT MAX(datem) as datem"; | |
| 1353 | + $sql = "SELECT MAX(datem) as datem"; | |
| 1354 | 1354 | $sql .= " FROM ".MAIN_DB_PREFIX."stock_mouvement"; | 
| 1355 | - $sql .= " WHERE fk_product = " . ((int) $fk_product); | |
| 1356 | - $sql .= " AND fk_entrepot = " .((int) $fk_entrepot); | |
| 1357 | - $sql .= " AND batch = '" . $this->db->escape($batch) . "'"; | |
| 1355 | + $sql .= " WHERE fk_product = ".((int) $fk_product); | |
| 1356 | + $sql .= " AND fk_entrepot = ".((int) $fk_entrepot); | |
| 1357 | + $sql .= " AND batch = '".$this->db->escape($batch)."'"; | |
| 1358 | 1358 | |
| 1359 | 1359 | $result = $this->db->query($sql); | 
| 1360 | 1360 |  		if ($result) { | 
| @@ -78,7 +78,7 @@ discard block | ||
| 78 | 78 | |
| 79 | 79 | // Default sort order (if not yet defined by previous GETPOST) | 
| 80 | 80 |  if (!$sortfield) { | 
| 81 | - reset($object->fields); // Reset is required to avoid key() to return null. | |
| 81 | + reset($object->fields); // Reset is required to avoid key() to return null. | |
| 82 | 82 | $sortfield = "t.".key($object->fields); // Set here default search field. By default 1st field in definition. | 
| 83 | 83 | } | 
| 84 | 84 |  if (!$sortorder) { | 
| @@ -386,7 +386,7 @@ discard block | ||
| 386 | 386 | // Output page | 
| 387 | 387 | // -------------------------------------------------------------------- | 
| 388 | 388 | |
| 389 | -llxHeader('', $title, $help_url, '', 0, 0, $morejs, $morecss, '', 'bodyforlist mod-bookcal page-list_availabilities');	// Can use also classforhorizontalscrolloftabs instead of bodyforlist for no horizontal scroll | |
| 389 | +llxHeader('', $title, $help_url, '', 0, 0, $morejs, $morecss, '', 'bodyforlist mod-bookcal page-list_availabilities'); // Can use also classforhorizontalscrolloftabs instead of bodyforlist for no horizontal scroll | |
| 390 | 390 | |
| 391 | 391 | // Example : Adding jquery code | 
| 392 | 392 | // print '<script type="text/javascript"> | 
| @@ -517,7 +517,7 @@ discard block | ||
| 517 | 517 | } | 
| 518 | 518 | |
| 519 | 519 | $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; | 
| 520 | -$htmlofselectarray = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN'));  // This also change content of $arrayfields with user setup | |
| 520 | +$htmlofselectarray = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')); // This also change content of $arrayfields with user setup | |
| 521 | 521 | $selectedfields = ($mode != 'kanban' ? $htmlofselectarray : ''); | 
| 522 | 522 |  $selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : ''); | 
| 523 | 523 | |
| @@ -611,7 +611,7 @@ discard block | ||
| 611 | 611 |  	} elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $key != 'rowid' && $val['label'] != 'TechnicalID' && empty($val['arrayofkeyval'])) { | 
| 612 | 612 | $cssforfield .= ($cssforfield ? ' ' : '').'right'; | 
| 613 | 613 | } | 
| 614 | -	$cssforfield = preg_replace('/small\s*/', '', $cssforfield);	// the 'small' css must not be used for the title label | |
| 614 | +	$cssforfield = preg_replace('/small\s*/', '', $cssforfield); // the 'small' css must not be used for the title label | |
| 615 | 615 |  	if (!empty($arrayfields['t.'.$key]['checked'])) { | 
| 616 | 616 | print getTitleFieldOfList($arrayfields['t.'.$key]['label'], 0, $_SERVER['PHP_SELF'], 't.'.$key, '', $param, ($cssforfield ? 'class="'.$cssforfield.'"' : ''), $sortfield, $sortorder, ($cssforfield ? $cssforfield.' ' : ''), 0, (empty($val['helplist']) ? '' : $val['helplist']))."\n"; | 
| 617 | 617 | $totalarray['nbfield']++; | 
| @@ -66,7 +66,7 @@ discard block | ||
| 66 | 66 | $object = new Calendar($db); | 
| 67 | 67 | $extrafields = new ExtraFields($db); | 
| 68 | 68 | $diroutputmassaction = $conf->bookcal->dir_output.'/temp/massgeneration/'.$user->id; | 
| 69 | -$hookmanager->initHooks(array($contextpage)); // Note that conf->hooks_modules contains array of activated contexes | |
| 69 | +$hookmanager->initHooks(array($contextpage)); // Note that conf->hooks_modules contains array of activated contexes | |
| 70 | 70 | |
| 71 | 71 | // Fetch optionals attributes and labels | 
| 72 | 72 | $extrafields->fetch_name_optionals_label($object->table_element); | 
| @@ -76,7 +76,7 @@ discard block | ||
| 76 | 76 | |
| 77 | 77 | // Default sort order (if not yet defined by previous GETPOST) | 
| 78 | 78 |  if (!$sortfield) { | 
| 79 | - reset($object->fields); // Reset is required to avoid key() to return null. | |
| 79 | + reset($object->fields); // Reset is required to avoid key() to return null. | |
| 80 | 80 | $sortfield = "t.".key($object->fields); // Set here default search field. By default 1st field in definition. | 
| 81 | 81 | } | 
| 82 | 82 |  if (!$sortorder) { | 
| @@ -382,7 +382,7 @@ discard block | ||
| 382 | 382 | // Output page | 
| 383 | 383 | // -------------------------------------------------------------------- | 
| 384 | 384 | |
| 385 | -llxHeader('', $title, $help_url, '', 0, 0, $morejs, $morecss, '', 'bodyforlist mod-bookcal page-list_calendar');	// Can use also classforhorizontalscrolloftabs instead of bodyforlist for no horizontal scroll | |
| 385 | +llxHeader('', $title, $help_url, '', 0, 0, $morejs, $morecss, '', 'bodyforlist mod-bookcal page-list_calendar'); // Can use also classforhorizontalscrolloftabs instead of bodyforlist for no horizontal scroll | |
| 386 | 386 | |
| 387 | 387 | $arrayofselected = is_array($toselect) ? $toselect : array(); | 
| 388 | 388 | |
| @@ -499,7 +499,7 @@ discard block | ||
| 499 | 499 | } | 
| 500 | 500 | |
| 501 | 501 | $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; | 
| 502 | -$htmlofselectarray = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN'));  // This also change content of $arrayfields with user setup | |
| 502 | +$htmlofselectarray = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')); // This also change content of $arrayfields with user setup | |
| 503 | 503 | $selectedfields = ($mode != 'kanban' ? $htmlofselectarray : ''); | 
| 504 | 504 |  $selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : ''); | 
| 505 | 505 | |
| @@ -592,7 +592,7 @@ discard block | ||
| 592 | 592 |  	} elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $key != 'rowid' && $val['label'] != 'TechnicalID' && empty($val['arrayofkeyval'])) { | 
| 593 | 593 | $cssforfield .= ($cssforfield ? ' ' : '').'right'; | 
| 594 | 594 | } | 
| 595 | -	$cssforfield = preg_replace('/small\s*/', '', $cssforfield);	// the 'small' css must not be used for the title label | |
| 595 | +	$cssforfield = preg_replace('/small\s*/', '', $cssforfield); // the 'small' css must not be used for the title label | |
| 596 | 596 |  	if (!empty($arrayfields['t.'.$key]['checked'])) { | 
| 597 | 597 | print getTitleFieldOfList($arrayfields['t.'.$key]['label'], 0, $_SERVER['PHP_SELF'], 't.'.$key, '', $param, ($cssforfield ? 'class="'.$cssforfield.'"' : ''), $sortfield, $sortorder, ($cssforfield ? $cssforfield.' ' : ''), 0, (empty($val['helplist']) ? '' : $val['helplist']))."\n"; | 
| 598 | 598 | $totalarray['nbfield']++; | 
| @@ -222,8 +222,8 @@ discard block | ||
| 222 | 222 | 'd.code_departement' => 'List:c_departements:code_departement:code_departement:', 'c.code' => 'List:c_country:code:code:', | 
| 223 | 223 | 'e.phone' => 'Text', 'e.fax' => 'Text', 'e.statut' => 'Text', 'pe.rowid' => 'List:entrepot:ref:rowid:stock', 'pe.ref' => 'Text' | 
| 224 | 224 | ); | 
| 225 | - $this->export_entities_array[$r] = array(); // We define here only fields that use another icon that the one defined into export_icon | |
| 226 | - $this->export_aggregate_array[$r] = array(); // TODO Not used yet | |
| 225 | + $this->export_entities_array[$r] = array(); // We define here only fields that use another icon that the one defined into export_icon | |
| 226 | + $this->export_aggregate_array[$r] = array(); // TODO Not used yet | |
| 227 | 227 | $keyforselect = 'warehouse'; | 
| 228 | 228 | $keyforelement = 'warehouse'; | 
| 229 | 229 | $keyforaliasextra = 'extra'; | 
| @@ -270,7 +270,7 @@ discard block | ||
| 270 | 270 | 'p.datec' => 'product', 'p.tms' => 'product', 'p.pmp' => 'product', 'p.cost_price' => 'product', | 
| 271 | 271 | 'ps.reel' => 'stock', | 
| 272 | 272 | 'p.seuil_stock_alerte' => 'product', 'p.barcode' => 'product', 'bt.libelle' => 'product', | 
| 273 | - ); // We define here only fields that use another icon that the one defined into export_icon | |
| 273 | + ); // We define here only fields that use another icon that the one defined into export_icon | |
| 274 | 274 |  		if (isModEnabled('barcode')) { | 
| 275 | 275 |  			$this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('p.barcode' => 'product')); | 
| 276 | 276 | } | 
| @@ -329,7 +329,7 @@ discard block | ||
| 329 | 329 | 'p.datec' => 'product', 'p.tms' => 'product', 'p.pmp' => 'product', 'p.cost_price' => 'product', 'lcpn.label'=>'product', | 
| 330 | 330 | 'pb.rowid' => 'batch', 'pb.batch' => 'batch', 'pb.qty' => 'batch', 'none.dateLastMovement' => 'movement', | 
| 331 | 331 | 'pl.eatby' => 'batch', 'pl.sellby' => 'batch' | 
| 332 | - ); // We define here only fields that use another icon that the one defined into export_icon | |
| 332 | + ); // We define here only fields that use another icon that the one defined into export_icon | |
| 333 | 333 | $this->export_special_array[$r] = array( | 
| 334 | 334 |  				'none.dateLastMovement'=>array('rule'=>'compute', 'classfile'=>'/product/stock/class/mouvementstock.class.php', 'class'=>'MouvementStock', 'method'=>'getDateLastMovementProductBatch', 'method_params'=>['e_rowid', 'p_rowid', 'pb_batch']), | 
| 335 | 335 | ); | 
| @@ -383,7 +383,7 @@ discard block | ||
| 383 | 383 | 'e.rowid' => 'warehouse', 'e.ref' => 'warehouse', 'e.description' => 'warehouse', 'e.lieu' => 'warehouse', 'e.address' => 'warehouse', 'e.zip' => 'warehouse', 'e.town' => 'warehouse', | 
| 384 | 384 | 'p.rowid' => "product", 'p.ref' => "product", 'p.fk_product_type' => "product", 'p.label' => "product", 'p.description' => "product", 'p.note' => "product", | 
| 385 | 385 | 'p.price' => "product", 'p.tva_tx' => 'product', 'p.tosell' => "product", 'p.tobuy' => "product", 'p.duration' => "product", 'p.datec' => 'product', 'p.tms' => 'product' | 
| 386 | - ); // We define here only fields that use another icon that the one defined into export_icon | |
| 386 | + ); // We define here only fields that use another icon that the one defined into export_icon | |
| 387 | 387 |  		if (isModEnabled('productbatch')) { | 
| 388 | 388 | $this->export_fields_array[$r]['sm.batch'] = 'Batch'; | 
| 389 | 389 | $this->export_TypeFields_array[$r]['sm.batch'] = 'Text'; | 
| @@ -434,7 +434,7 @@ discard block | ||
| 434 | 434 | 'e.rowid' => 'warehouse', 'e.ref' => 'warehouse', 'e.description' => 'warehouse', 'e.lieu' => 'warehouse', 'e.address' => 'warehouse', 'e.zip' => 'warehouse', 'e.town' => 'warehouse', | 
| 435 | 435 | 'p.rowid' => "product", 'p.ref' => "product", 'p.fk_product_type' => "product", 'p.label' => "product", 'p.description' => "product", 'p.note' => "product", | 
| 436 | 436 | 'p.price' => "product", 'p.tva_tx' => 'product', 'p.tosell' => "product", 'p.tobuy' => "product", 'p.duration' => "product", 'p.datec' => 'product', 'p.tms' => 'product' | 
| 437 | - ); // We define here only fields that use another icon that the one defined into export_icon | |
| 437 | + ); // We define here only fields that use another icon that the one defined into export_icon | |
| 438 | 438 |  		if (isModEnabled('productbatch')) { | 
| 439 | 439 | $this->export_fields_array[$r]['id.batch'] = 'Batch'; | 
| 440 | 440 | $this->export_TypeFields_array[$r]['id.batch'] = 'Text'; | 
| @@ -584,9 +584,9 @@ discard block | ||
| 584 | 584 | |
| 585 | 585 | $duration = $obj->duree; | 
| 586 | 586 | $event['location'] = ($obj->socname ? $obj->socname : ""); | 
| 587 | - $event['summary'] = $obj->ref." - ". $obj->description; | |
| 587 | + $event['summary'] = $obj->ref." - ".$obj->description; | |
| 588 | 588 | if ($obj->ref_client) | 
| 589 | -				$event['summary'].= " (".$obj->ref_client.")"; | |
| 589 | +				$event['summary'] .= " (".$obj->ref_client.")"; | |
| 590 | 590 | |
| 591 | 591 | $event['desc'] = $obj->description; | 
| 592 | 592 | |
| @@ -597,7 +597,7 @@ discard block | ||
| 597 | 597 | $event['desc'] .= " - ".$obj->ref_contract; | 
| 598 | 598 | |
| 599 | 599 | if ($obj->note_public) | 
| 600 | - $event['desc'].= " - ".$obj->note_public; | |
| 600 | + $event['desc'] .= " - ".$obj->note_public; | |
| 601 | 601 | |
| 602 | 602 | $event['startdate'] = $datestart; | 
| 603 | 603 | $event['enddate'] = ''; // $dateend; // Not required with type 'journal' | 
| @@ -585,19 +585,23 @@ | ||
| 585 | 585 | $duration = $obj->duree; | 
| 586 | 586 | $event['location'] = ($obj->socname ? $obj->socname : ""); | 
| 587 | 587 | $event['summary'] = $obj->ref." - ". $obj->description; | 
| 588 | - if ($obj->ref_client) | |
| 589 | -				$event['summary'].= " (".$obj->ref_client.")"; | |
| 588 | +				if ($obj->ref_client) { | |
| 589 | +								$event['summary'].= " (".$obj->ref_client.")"; | |
| 590 | + } | |
| 590 | 591 | |
| 591 | 592 | $event['desc'] = $obj->description; | 
| 592 | 593 | |
| 593 | - if ($obj->ref_project) | |
| 594 | - $event['desc'] .= " - ".$obj->ref_project; | |
| 594 | +				if ($obj->ref_project) { | |
| 595 | + $event['desc'] .= " - ".$obj->ref_project; | |
| 596 | + } | |
| 595 | 597 | |
| 596 | - if ($obj->ref_contract) | |
| 597 | - $event['desc'] .= " - ".$obj->ref_contract; | |
| 598 | +				if ($obj->ref_contract) { | |
| 599 | + $event['desc'] .= " - ".$obj->ref_contract; | |
| 600 | + } | |
| 598 | 601 | |
| 599 | - if ($obj->note_public) | |
| 600 | - $event['desc'].= " - ".$obj->note_public; | |
| 602 | +				if ($obj->note_public) { | |
| 603 | + $event['desc'].= " - ".$obj->note_public; | |
| 604 | + } | |
| 601 | 605 | |
| 602 | 606 | $event['startdate'] = $datestart; | 
| 603 | 607 | $event['enddate'] = ''; // $dateend; // Not required with type 'journal' |