Skip to content
Snippets Groups Projects
Commit 0fd134f8 authored by Laurent Destailleur's avatar Laurent Destailleur
Browse files

Merge pull request #2889 from GPCsolutions/commonobjectreview

[Qual] Reviewed commonobject
parents 00d2047e 5ebc84e9
No related branches found
No related tags found
No related merge requests found
......@@ -41,6 +41,11 @@ abstract class CommonObject
*/
public $db;
/**
* @var int The object identifier
*/
public $id;
/**
* @var string Error string
* @deprecated Use instead the array of error strings
......@@ -92,32 +97,244 @@ abstract class CommonObject
*/
public $canvas;
/**
* @var Project The related project
* @see fetch_projet()
*/
public $project;
/**
* @var int The related project ID
* @see setProject(), project
*/
public $fk_project;
/**
* @deprecated
* @see project
*/
public $projet;
public $name;
public $lastname;
public $firstname;
public $civility_id;
/**
* @var Contact a related contact
* @see fetch_contact()
*/
public $contact;
/**
* @var int The related contact ID
* @see fetch_contact()
*/
public $contact_id;
/**
* @var Societe A related thirdparty
* @see fetch_thirdparty()
*/
public $thirdparty;
/**
* @deprecated
* @see thirdparty
*/
public $client;
/**
* @var User A related user
* @see fetch_user()
*/
public $user;
/**
* @var CommonObject An originating object?
* @see fetch_origin()
*/
public $origin;
/**
* @var int The originating object?
* @see fetch_origin(), origin
*/
public $origin_id;
/**
* @var string The object's reference
*/
public $ref;
/**
* @var string The object's previous reference
*/
public $ref_previous;
/**
* @var string The object's next reference
*/
public $ref_next;
/**
* @var string An external reference for the object
*/
public $ref_ext;
/**
* @var string
*/
public $element;
/**
* @var string
*/
public $table_element;
/**
* @var
*/
public $table_element_line;
/**
* @var int The object's status
* @see setStatut()
*/
public $statut;
/**
* @var string
* @see getFullAddress()
*/
public $country;
/**
* @var int
* @see getFullAddress(), country
*/
public $country_id;
/**
* @var string
* @see getFullAddress(), isInEEC(), country
*/
public $country_code;
/**
* @var int
* @see fetch_barcode()
*/
public $barcode_type;
/**
* @var string
* @see fetch_barcode(), barcode_type
*/
public $barcode_type_code;
/**
* @var string
* @see fetch_barcode(), barcode_type
*/
public $barcode_type_label;
/**
* @var string
* @see fetch_barcode(), barcode_type
*/
public $barcode_type_coder;
/**
* @var int Payment method ID?
* @see setPaymentMethods()
*/
public $mode_reglement_id;
/**
* @var Societe
* @var string Payment terms ID
* @see setPaymentTerms()
*/
public $thirdparty;
public $cond_reglement_id;
/**
* @deprecated
* @see project
* @see cond_reglement_id;
*/
public $projet;
public $cond_reglement;
/**
* @var Project
* @var int Delivery address ID
* @see setDeliveryAddress()
*/
public $project;
public $fk_delivery_address;
// No constructor as it is an abstract class
/**
* @var int Shipping method ID
* @see setShippingMethod()
*/
public $shipping_method_id;
/**
* @var string
* @see SetDocModel()
*/
public $modelpdf;
/**
* @var int Bank account ID
* @see SetBankAccount()
*/
public $fk_account;
/**
* @var string Public note
* @see update_note()
*/
public $note_public;
/**
* @var string Private note
* @see update_note()
*/
public $note_private;
/**
* @deprecated
* @see note_public
*/
public $note;
/**
* @var float
* @see update_price()
*/
public $total_ht;
/**
* @var float
* @see update_price()
*/
public $total_tva;
/**
* @var float
* @see update_price()
*/
public $total_localtax1;
/**
* @var float
* @see update_price()
*/
public $total_localtax2;
/**
* @var float
* @see update_price()
*/
public $total_ttc;
/**
* @var CommonObjectLine[]
*/
public $lines;
/**
* @var int
* @see setIncoterms()
*/
public $fk_incoterms;
/**
* @var string
* @see SetIncoterms()
*/
public $libelle_incoterms;
/**
* @var string
* @see display_incoterms()
*/
public $location_incoterms;
public $name;
public $lastname;
public $firstname;
public $civility_id;
// No constructor as it is an abstract class
/**
* Check an object id/ref exists
......@@ -178,8 +395,6 @@ abstract class CommonObject
*/
function getFullName($langs,$option=0,$nameorder=-1,$maxlen=0)
{
global $conf;
//print "lastname=".$this->lastname." name=".$this->name." nom=".$this->nom."<br>\n";
$lastname=$this->lastname;
$firstname=$this->firstname;
......@@ -223,13 +438,13 @@ abstract class CommonObject
*
* @param int $fk_socpeople Id of thirdparty contact (if source = 'external') or id of user (if souce = 'internal') to link
* @param int $type_contact Type of contact (code or id). Must be if or code found into table llx_c_type_contact. For example: SALESREPFOLL
* @param int $source external=Contact extern (llx_socpeople), internal=Contact intern (llx_user)
* @param string $source external=Contact extern (llx_socpeople), internal=Contact intern (llx_user)
* @param int $notrigger Disable all triggers
* @return int <0 if KO, >0 if OK
*/
function add_contact($fk_socpeople, $type_contact, $source='external',$notrigger=0)
{
global $user,$conf,$langs;
global $user,$langs;
dol_syslog(get_class($this)."::add_contact $fk_socpeople, $type_contact, $source");
......@@ -321,8 +536,6 @@ abstract class CommonObject
*/
function copy_linked_contact($objFrom, $source='internal')
{
global $user,$langs,$conf;
$contacts = $objFrom->liste_contact(-1, $source);
foreach($contacts as $contact)
{
......@@ -373,7 +586,7 @@ abstract class CommonObject
*/
function delete_contact($rowid, $notrigger=0)
{
global $user,$langs,$conf;
global $user;
$this->db->begin();
......@@ -545,7 +758,7 @@ abstract class CommonObject
* Return array with list of possible values for type of contacts
*
* @param string $source 'internal', 'external' or 'all'
* @param string $order Sort order by 'code' or 'rowid'
* @param string $order Sort order by : 'code' or 'rowid'
* @param int $option 0=Return array id->label, 1=Return array code->label
* @param int $activeonly 0=all status of contact, 1=only the active
* @param string $code Type of contact (Example: 'CUSTOMER', 'SERVICE')
......@@ -769,7 +982,7 @@ abstract class CommonObject
}
}
}
else return 0;
return 0;
}
/**
......@@ -891,10 +1104,8 @@ abstract class CommonObject
* @param User|string $user Update last update fields also if user object provided
* @return int <0 if KO, >0 if OK
*/
function setValueFrom($field, $value, $table='', $id='', $format='', $id_field='', $user='')
function setValueFrom($field, $value, $table='', $id=null, $format='', $id_field='', $user='')
{
global $conf;
if (empty($table)) $table=$this->table_element;
if (empty($id)) $id=$this->id;
if (empty($format)) $format='text';
......@@ -933,7 +1144,7 @@ abstract class CommonObject
*/
function load_previous_next_ref($filter,$fieldid,$nodbprefix=0)
{
global $conf, $user;
global $user;
if (! $this->table_element)
{
......@@ -1253,6 +1464,8 @@ abstract class CommonObject
}
}
// TODO: Move line related operations to CommonObjectLine?
/**
* Save a new position (field rang) for details lines.
* You can choose to set position for lines with already a position or lines without any position defined.
......@@ -1918,7 +2131,7 @@ abstract class CommonObject
* @return void
* @see add_object_linked, updateObjectLinked, deleteObjectLinked
*/
function fetchObjectLinked($sourceid='',$sourcetype='',$targetid='',$targettype='',$clause='OR',$alsosametype=1)
function fetchObjectLinked($sourceid=null,$sourcetype='',$targetid=null,$targettype='',$clause='OR',$alsosametype=1)
{
global $conf;
......@@ -1948,7 +2161,7 @@ abstract class CommonObject
if (empty($sourceid) && empty($targetid))
{
dol_syslog('Bad usage of function. No source nor target id defined (nor as parameter nor as object id)', LOG_ERROR);
dol_syslog('Bad usage of function. No source nor target id defined (nor as parameter nor as object id)', LOG_ERR);
return -1;
}
......@@ -2082,7 +2295,7 @@ abstract class CommonObject
* @return int >0 if OK, <0 if KO
* @see add_object_linked, fetObjectLinked, deleteObjectLinked
*/
function updateObjectLinked($sourceid='', $sourcetype='', $targetid='', $targettype='')
function updateObjectLinked($sourceid=null, $sourcetype='', $targetid=null, $targettype='')
{
$updatesource=false;
$updatetarget=false;
......@@ -2128,7 +2341,7 @@ abstract class CommonObject
* @return int >0 if OK, <0 if KO
* @see add_object_linked, updateObjectLinked, fetchObjectLinked
*/
function deleteObjectLinked($sourceid='', $sourcetype='', $targetid='', $targettype='')
function deleteObjectLinked($sourceid=null, $sourcetype='', $targetid=null, $targettype='')
{
$deletesource=false;
$deletetarget=false;
......@@ -2180,7 +2393,7 @@ abstract class CommonObject
* @param string $elementType Type of element to force (use this->table_element by default)
* @return int <0 if KO, >0 if OK
*/
function setStatut($status,$elementId='',$elementType='')
function setStatut($status,$elementId=null,$elementType='')
{
global $user,$langs,$conf;
......@@ -2324,7 +2537,6 @@ abstract class CommonObject
foreach($this->childtables as $table)
{
// Check if third party can be deleted
$nb=0;
$sql = "SELECT COUNT(*) as nb from ".MAIN_DB_PREFIX.$table;
$sql.= " WHERE ".$this->fk_element." = ".$id;
$resql=$this->db->query($sql);
......@@ -2398,10 +2610,9 @@ abstract class CommonObject
$pu_ht = $obj->pu_ht;
$qty= $obj->qty;
$discount_percent_line = $obj->remise_percent;
$total_ht = $obj->total_ht;
$total_discount_line = price2num(($pu_ht * $qty) - $total_ht, 'MT');
$total_discount_line = floatval(price2num(($pu_ht * $qty) - $total_ht, 'MT'));
$total_discount += $total_discount_line;
$i++;
......@@ -2451,7 +2662,7 @@ abstract class CommonObject
function display_incoterms()
{
$out = '';
$this->incoterms_libelle = '';
$this->libelle_incoterms = '';
if (!empty($this->fk_incoterms))
{
$sql = 'SELECT code FROM '.MAIN_DB_PREFIX.'c_incoterms WHERE rowid = '.(int) $this->fk_incoterms;
......@@ -2640,8 +2851,8 @@ abstract class CommonObject
* But for the moment we don't know if it'st possible as we keep a method available on overloaded objects.
*
* @param string $action Action code
* @param Societe $seller Object of seller third party
* @param Societe $buyer Object of buyer third party
* @param string $seller Object of seller third party
* @param string $buyer Object of buyer third party
* @param int $selected Object line selected
* @param int $dateSelector 1=Show also date range input fields
* @return void
......@@ -2734,12 +2945,12 @@ abstract class CommonObject
if (empty($line->fk_parent_line))
{
$parameters = array('line'=>$line,'var'=>$var,'num'=>$num,'i'=>$i,'dateSelector'=>$dateSelector,'seller'=>$seller,'buyer'=>$buyer,'selected'=>$selected, 'extrafieldsline'=>$extrafieldsline);
$reshook=$hookmanager->executeHooks('printObjectLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
$hookmanager->executeHooks('printObjectLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
}
else
{
$parameters = array('line'=>$line,'var'=>$var,'num'=>$num,'i'=>$i,'dateSelector'=>$dateSelector,'seller'=>$seller,'buyer'=>$buyer,'selected'=>$selected, 'extrafieldsline'=>$extrafieldsline);
$reshook=$hookmanager->executeHooks('printObjectSubLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
$hookmanager->executeHooks('printObjectSubLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
}
}
else
......@@ -2755,16 +2966,16 @@ abstract class CommonObject
* Return HTML content of a detail line
* TODO Move this into an output class file (htmlline.class.php)
*
* @param string $action GET/POST action
* @param CommonObjectLine $line Selected object line to output
* @param string $var Is it a an odd line (true)
* @param int $num Number of line (0)
* @param int $i I
* @param int $dateSelector 1=Show also date range input fields
* @param Societe $seller Object of seller third party
* @param Societe $buyer Object of buyer third party
* @param int $selected Object line selected
* @param object $extrafieldsline Object of extrafield line attribute
* @param string $action GET/POST action
* @param CommonObjectLine $line Selected object line to output
* @param string $var Is it a an odd line (true)
* @param int $num Number of line (0)
* @param int $i I
* @param int $dateSelector 1=Show also date range input fields
* @param string $seller Object of seller third party
* @param string $buyer Object of buyer third party
* @param int $selected Object line selected
* @param int $extrafieldsline Object of extrafield line attribute
* @return void
*/
function printObjectLine($action,$line,$var,$num,$i,$dateSelector,$seller,$buyer,$selected=0,$extrafieldsline=0)
......@@ -2895,7 +3106,6 @@ abstract class CommonObject
}
print '<td align="right">'.$langs->trans('ReductionShort').'</td></tr>';
$num = count($this->lines);
$var = true;
$i = 0;
......@@ -2909,7 +3119,7 @@ abstract class CommonObject
{
$parameters=array('line'=>$line,'var'=>$var,'i'=>$i);
$action='';
$reshook=$hookmanager->executeHooks('printOriginObjectLine',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks
$hookmanager->executeHooks('printOriginObjectLine',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks
}
}
else
......@@ -2927,13 +3137,13 @@ abstract class CommonObject
* If lines are into a template, title must also be into a template
* But for the moment we don't know if it's possible as we keep a method available on overloaded objects.
*
* @param array $line Line
* @param string $var Var
* @param CommonObjectLine $line Line
* @param string $var Var
* @return void
*/
function printOriginLine($line,$var)
{
global $conf,$langs,$bc, $conf;
global $langs, $conf;
//var_dump($line);
if (!empty($line->date_start))
......@@ -3042,7 +3252,7 @@ abstract class CommonObject
/**
* Show the array with all margin infos
*
* @param boolean $force_price Force price
* @param bool $force_price Force price
* @return void
* @deprecated 3.8 Load FormMargin class and make a direct call to displayMarginInfos
*/
......@@ -3108,7 +3318,7 @@ abstract class CommonObject
*/
function delete_resource($rowid, $element, $notrigger=0)
{
global $user,$langs,$conf;
global $user;
$this->db->begin();
......@@ -3150,7 +3360,7 @@ abstract class CommonObject
$nboflines=count($this->lines);
for($i=0; $i < $nboflines; $i++)
{
$this->lines[$i] = dol_clone($this->lines[$i]);
$this->lines[$i] = clone $this->lines[$i];
}
}
}
......@@ -3306,11 +3516,11 @@ abstract class CommonObject
{
// Create small thumbs for company (Ratio is near 16/9)
// Used on logon for example
$imgThumbSmall = vignette($file_osencoded, $maxwidthsmall, $maxheightsmall, '_small', $quality);
vignette($file_osencoded, $maxwidthsmall, $maxheightsmall, '_small', $quality);
// Create mini thumbs for company (Ratio is near 16/9)
// Used on menu or for setup page for example
$imgThumbMini = vignette($file_osencoded, $maxwidthmini, $maxheightmini, '_mini', $quality);
vignette($file_osencoded, $maxwidthmini, $maxheightmini, '_mini', $quality);
}
}
......@@ -3365,7 +3575,7 @@ abstract class CommonObject
* @param array $optionsArray Array resulting of call of extrafields->fetch_name_optionals_label()
* @return int <0 if error, 0 if no optionals to find nor found, 1 if a line is found and optional loaded
*/
function fetch_optionals($rowid='',$optionsArray='')
function fetch_optionals($rowid=null,$optionsArray=null)
{
if (empty($rowid)) $rowid=$this->id;
......@@ -3429,10 +3639,6 @@ abstract class CommonObject
*/
function deleteExtraFields()
{
global $langs;
$error=0;
$this->db->begin();
$sql_del = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element."_extrafields WHERE fk_object = ".$this->id;
......@@ -3472,13 +3678,12 @@ abstract class CommonObject
$langs->load('admin');
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
$extrafields = new ExtraFields($this->db);
$optionsArray = $extrafields->fetch_name_optionals_label($this->table_element);
$extrafields->fetch_name_optionals_label($this->table_element);
foreach($this->array_options as $key => $value)
{
$attributeKey = substr($key,8); // Remove 'options_' prefix
$attributeType = $extrafields->attribute_type[$attributeKey];
//$attributeSize = $extrafields->attribute_size[$attributeKey]; Not required to insert an extrafield value. Only used for definition.
$attributeLabel = $extrafields->attribute_label[$attributeKey];
$attributeParam = $extrafields->attribute_param[$attributeKey];
switch ($attributeType)
......@@ -3486,7 +3691,7 @@ abstract class CommonObject
case 'int':
if (!is_numeric($value) && $value!='')
{
$error++; $this->errors[]=$langs->trans("ExtraFieldHasWrongValue",$attributeLabel);
$this->errors[]=$langs->trans("ExtraFieldHasWrongValue",$attributeLabel);
return -1;
}
elseif ($value=='')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment