2
0
forked from Wavyzz/dolibarr

Merge branch 'develop' of ssh://git@github.com/Dolibarr/dolibarr.git into develop

This commit is contained in:
Laurent Destailleur
2011-12-12 14:42:26 +01:00
6 changed files with 129 additions and 141 deletions

View File

@@ -99,23 +99,25 @@ $reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action);
// Action clone object // Action clone object
if ($action == 'confirm_clone' && $confirm == 'yes') if ($action == 'confirm_clone' && $confirm == 'yes')
{ {
if (1==0 && ! GETPOST('clone_content') && ! GETPOST('clone_receivers') ) if (1==0 && ! GETPOST('clone_content') && ! GETPOST('clone_receivers'))
{ {
$mesg='<div class="error">'.$langs->trans("NoCloneOptionsSpecified").'</div>'; $mesg='<div class="error">'.$langs->trans("NoCloneOptionsSpecified").'</div>';
} }
else else
{ {
$result=$object->createFromClone($id,0,GETPOST('socid'),$hookmanager); if ($object->fetch($id) > 0)
if ($result > 0)
{ {
header("Location: ".$_SERVER['PHP_SELF'].'?id='.$result); $result=$object->createFromClone($socid, $hookmanager);
exit; if ($result > 0)
} {
else header("Location: ".$_SERVER['PHP_SELF'].'?id='.$result);
{ exit;
$mesg=$object->error; }
$action=''; else
//$_GET['id']=$_REQUEST['id']; {
$mesg=$object->error;
$action='';
}
} }
} }
} }

View File

@@ -836,53 +836,45 @@ class Propal extends CommonObject
/** /**
* Load an object from its id and create a new one in database * Load an object from its id and create a new one in database
* *
* @param int $fromid Id of object to clone
* @param int $invertdetail Reverse sign of amounts for lines
* @param int $socid Id of thirdparty * @param int $socid Id of thirdparty
* @param HookManager $hookmanager Hook manager instance * @param HookManager $hookmanager Hook manager instance
* @return int New id of clone * @return int New id of clone
*/ */
function createFromClone($fromid,$invertdetail=0,$socid=0,$hookmanager=false) function createFromClone($socid=0,$hookmanager=false)
{ {
global $user,$langs,$conf; global $user,$langs,$conf;
$error=0; $error=0;
$now=dol_now(); $now=dol_now();
$object=new Propal($this->db);
$this->db->begin(); $this->db->begin();
// Load source object // Load source object
$object->fetch($fromid); $objFrom = dol_clone($this);
$objFrom = $object;
$objsoc=new Societe($this->db); $objsoc=new Societe($this->db);
// Change socid if needed // Change socid if needed
if (! empty($socid) && $socid != $object->socid) if (! empty($socid) && $socid != $this->socid)
{ {
if ($objsoc->fetch($socid)>0) if ($objsoc->fetch($socid) > 0)
{ {
$object->socid = $objsoc->id; $this->socid = $objsoc->id;
$object->cond_reglement_id = (! empty($objsoc->cond_reglement_id) ? $objsoc->cond_reglement_id : 0); $this->cond_reglement_id = (! empty($objsoc->cond_reglement_id) ? $objsoc->cond_reglement_id : 0);
$object->mode_reglement_id = (! empty($objsoc->mode_reglement_id) ? $objsoc->mode_reglement_id : 0); $this->mode_reglement_id = (! empty($objsoc->mode_reglement_id) ? $objsoc->mode_reglement_id : 0);
$object->fk_project = ''; $this->fk_project = '';
$object->fk_delivery_address = ''; $this->fk_delivery_address = '';
} }
// TODO Change product price if multi-prices // TODO Change product price if multi-prices
} }
else else
{ {
$objsoc->fetch($object->socid); $objsoc->fetch($this->socid);
} }
$object->id=0; $this->id=0;
$object->statut=0; $this->statut=0;
$objsoc->fetch($object->socid);
if (empty($conf->global->PROPALE_ADDON) || ! is_readable(DOL_DOCUMENT_ROOT ."/core/modules/propale/".$conf->global->PROPALE_ADDON.".php")) if (empty($conf->global->PROPALE_ADDON) || ! is_readable(DOL_DOCUMENT_ROOT ."/core/modules/propale/".$conf->global->PROPALE_ADDON.".php"))
{ {
@@ -891,28 +883,22 @@ class Propal extends CommonObject
} }
// Clear fields // Clear fields
$object->user_author = $user->id; $this->user_author = $user->id;
$object->user_valid = ''; $this->user_valid = '';
$object->date = ''; $this->date = '';
$object->datep = $now; $this->datep = $now;
$object->fin_validite = $object->datep + ($this->duree_validite * 24 * 3600); $this->fin_validite = $this->datep + ($this->duree_validite * 24 * 3600);
$object->ref_client = ''; $this->ref_client = '';
// Set ref // Set ref
require_once(DOL_DOCUMENT_ROOT ."/core/modules/propale/".$conf->global->PROPALE_ADDON.".php"); require_once(DOL_DOCUMENT_ROOT ."/core/modules/propale/".$conf->global->PROPALE_ADDON.".php");
$obj = $conf->global->PROPALE_ADDON; $obj = $conf->global->PROPALE_ADDON;
$modPropale = new $obj; $modPropale = new $obj;
$object->ref = $modPropale->getNextValue($objsoc,$object); $this->ref = $modPropale->getNextValue($objsoc,$this);
// Create clone // Create clone
$result=$object->create($user); $result=$this->create($user);
if ($result < 0) $error++;
// Other options
if ($result < 0)
{
$this->error=$object->error;
$error++;
}
if (! $error) if (! $error)
{ {
@@ -921,14 +907,14 @@ class Propal extends CommonObject
{ {
$parameters=array('objFrom'=>$objFrom); $parameters=array('objFrom'=>$objFrom);
$action=''; $action='';
$reshook=$hookmanager->executeHooks('createfrom',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks $reshook=$hookmanager->executeHooks('createfrom',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) $error++; if ($reshook < 0) $error++;
} }
// Appel des triggers // Appel des triggers
include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
$interface=new Interfaces($this->db); $interface=new Interfaces($this->db);
$result=$interface->run_triggers('PROPAL_CLONE',$object,$user,$langs,$conf); $result=$interface->run_triggers('PROPAL_CLONE',$this,$user,$langs,$conf);
if ($result < 0) { $error++; $this->errors=$interface->errors; } if ($result < 0) { $error++; $this->errors=$interface->errors; }
// Fin appel triggers // Fin appel triggers
} }
@@ -937,7 +923,7 @@ class Propal extends CommonObject
if (! $error) if (! $error)
{ {
$this->db->commit(); $this->db->commit();
return $object->id; return $this->id;
} }
else else
{ {

View File

@@ -769,62 +769,51 @@ class Commande extends CommonObject
/** /**
* Load an object from its id and create a new one in database * Load an object from its id and create a new one in database
* *
* @param int $fromid Id of object to clone
* @param int $invertdetail Reverse sign of amounts for lines
* @param int $socid Id of thirdparty * @param int $socid Id of thirdparty
* @param HookManager $hookmanager Hook manager instance * @param HookManager $hookmanager Hook manager instance
* @return int New id of clone * @return int New id of clone
*/ */
function createFromClone($fromid,$invertdetail=0,$socid=0,$hookmanager=false) function createFromClone($socid=0,$hookmanager=false)
{ {
global $conf,$user,$langs; global $conf,$user,$langs;
$error=0; $error=0;
$object=new Commande($this->db);
$this->db->begin(); $this->db->begin();
// Load source object // Load source object
$object->fetch($fromid); $objFrom = dol_clone($this);
$objFrom = $object;
// Change socid if needed // Change socid if needed
if (! empty($socid) && $socid != $object->socid) if (! empty($socid) && $socid != $this->socid)
{ {
$objsoc = new Societe($this->db); $objsoc = new Societe($this->db);
if ($objsoc->fetch($socid)>0) if ($objsoc->fetch($socid)>0)
{ {
$object->socid = $objsoc->id; $this->socid = $objsoc->id;
$object->cond_reglement_id = (! empty($objsoc->cond_reglement_id) ? $objsoc->cond_reglement_id : 0); $this->cond_reglement_id = (! empty($objsoc->cond_reglement_id) ? $objsoc->cond_reglement_id : 0);
$object->mode_reglement_id = (! empty($objsoc->mode_reglement_id) ? $objsoc->mode_reglement_id : 0); $this->mode_reglement_id = (! empty($objsoc->mode_reglement_id) ? $objsoc->mode_reglement_id : 0);
$object->fk_project = ''; $this->fk_project = '';
$object->fk_delivery_address = ''; $this->fk_delivery_address = '';
} }
// TODO Change product price if multi-prices // TODO Change product price if multi-prices
} }
$object->id=0; $this->id=0;
$object->statut=0; $this->statut=0;
// Clear fields // Clear fields
$object->user_author_id = $user->id; $this->user_author_id = $user->id;
$object->user_valid = ''; $this->user_valid = '';
$object->date_creation = ''; $this->date_creation = '';
$object->date_validation = ''; $this->date_validation = '';
$object->ref_client = ''; $this->ref_client = '';
// Create clone // Create clone
$result=$object->create($user); $result=$this->create($user);
if ($result < 0) $error++;
// Other options
if ($result < 0)
{
$this->error=$object->error;
$error++;
}
if (! $error) if (! $error)
{ {
@@ -833,14 +822,14 @@ class Commande extends CommonObject
{ {
$parameters=array('objFrom'=>$objFrom); $parameters=array('objFrom'=>$objFrom);
$action=''; $action='';
$reshook=$hookmanager->executeHooks('createfrom',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks $reshook=$hookmanager->executeHooks('createfrom',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) $error++; if ($reshook < 0) $error++;
} }
// Appel des triggers // Appel des triggers
include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
$interface=new Interfaces($this->db); $interface=new Interfaces($this->db);
$result=$interface->run_triggers('ORDER_CLONE',$object,$user,$langs,$conf); $result=$interface->run_triggers('ORDER_CLONE',$this,$user,$langs,$conf);
if ($result < 0) { $error++; $this->errors=$interface->errors; } if ($result < 0) { $error++; $this->errors=$interface->errors; }
// Fin appel triggers // Fin appel triggers
} }
@@ -849,7 +838,7 @@ class Commande extends CommonObject
if (! $error) if (! $error)
{ {
$this->db->commit(); $this->db->commit();
return $object->id; return $this->id;
} }
else else
{ {

View File

@@ -79,23 +79,26 @@ $reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action);
// Action clone object // Action clone object
if ($action == 'confirm_clone' && $confirm == 'yes') if ($action == 'confirm_clone' && $confirm == 'yes')
{ {
if ( 1==0 && ! GETPOST('clone_content') && ! GETPOST('clone_receivers') ) if (1==0 && ! GETPOST('clone_content') && ! GETPOST('clone_receivers'))
{ {
$mesg='<div class="error">'.$langs->trans("NoCloneOptionsSpecified").'</div>'; $mesg='<div class="error">'.$langs->trans("NoCloneOptionsSpecified").'</div>';
} }
else else
{ {
$result=$object->createFromClone($id, 0, GETPOST('socid'), $hookmanager); if ($object->fetch($id) > 0)
if ($result > 0) {
{ $result=$object->createFromClone($socid, $hookmanager);
header("Location: ".$_SERVER['PHP_SELF'].'?id='.$result); if ($result > 0)
exit; {
} header("Location: ".$_SERVER['PHP_SELF'].'?id='.$result);
else exit;
{ }
$mesg='<div class="error">'.$object->error.'</div>'; else
$action=''; {
} $mesg='<div class="error">'.$object->error.'</div>';
$action='';
}
}
} }
} }

View File

@@ -98,17 +98,20 @@ if ($action == 'confirm_clone' && $confirm == 'yes')
} }
else else
{ {
$result=$object->createFromClone($id,0,$hookmanager); if ($object->fetch($id) > 0)
if ($result > 0) {
{ $result=$object->createFromClone($socid, $hookmanager);
header("Location: ".$_SERVER['PHP_SELF'].'?facid='.$result); if ($result > 0)
exit; {
} header("Location: ".$_SERVER['PHP_SELF'].'?facid='.$result);
else exit;
{ }
$mesg=$object->error; else
$action=''; {
} $mesg=$object->error;
$action='';
}
}
} }
} }

View File

@@ -490,60 +490,65 @@ class Facture extends CommonObject
/** /**
* Load an object from its id and create a new one in database * Load an object from its id and create a new one in database
* *
* @param int $fromid Id of object to clone * @param int $socid Id of thirdparty
* @param int $invertdetail Reverse sign of amounts for lines
* @param HookManager $hookmanager Hook manager instance * @param HookManager $hookmanager Hook manager instance
* @return int New id of clone * @return int New id of clone
*/ */
function createFromClone($fromid,$invertdetail=0,$hookmanager=false) function createFromClone($socid=0,$hookmanager=false)
{ {
global $conf,$user,$langs; global $conf,$user,$langs;
$error=0; $error=0;
// Load source object
$objFrom=new Facture($this->db);
$objFrom->fetch($fromid);
// Load new object
$object=new Facture($this->db);
$object->fetch($fromid);
$this->db->begin(); $this->db->begin();
$object->id=0; // Load source object
$object->statut=0; $objFrom = dol_clone($this);
// Change socid if needed
if (! empty($socid) && $socid != $this->socid)
{
$objsoc = new Societe($this->db);
if ($objsoc->fetch($socid)>0)
{
$this->socid = $objsoc->id;
$this->cond_reglement_id = (! empty($objsoc->cond_reglement_id) ? $objsoc->cond_reglement_id : 0);
$this->mode_reglement_id = (! empty($objsoc->mode_reglement_id) ? $objsoc->mode_reglement_id : 0);
$this->fk_project = '';
$this->fk_delivery_address = '';
}
// TODO Change product price if multi-prices
}
$this->id=0;
$this->statut=0;
// Clear fields // Clear fields
$object->user_author = $user->id; $this->user_author = $user->id;
$object->user_valid = ''; $this->user_valid = '';
$object->fk_facture_source = 0; $this->fk_facture_source = 0;
$object->date_creation = ''; $this->date_creation = '';
$object->date_validation = ''; $this->date_validation = '';
$object->ref_client = ''; $this->ref_client = '';
$object->close_code = ''; $this->close_code = '';
$object->close_note = ''; $this->close_note = '';
$object->products = $object->lines; // Tant que products encore utilise $this->products = $this->lines; // Tant que products encore utilise
// Loop on each line of new invoice // Loop on each line of new invoice
foreach($object->lines as $i => $line) foreach($this->lines as $i => $line)
{ {
if (($object->lines[$i]->info_bits & 0x02) == 0x02) // We do not clone line of discounts if (($this->lines[$i]->info_bits & 0x02) == 0x02) // We do not clone line of discounts
{ {
unset($object->lines[$i]); unset($this->lines[$i]);
unset($object->products[$i]); // Tant que products encore utilise unset($this->products[$i]); // Tant que products encore utilise
} }
} }
// Create clone // Create clone
$result=$object->create($user); $result=$this->create($user);
if ($result < 0) $error++;
// Other options
if ($result < 0)
{
$this->error=$object->error;
$error++;
}
if (! $error) if (! $error)
{ {
@@ -552,14 +557,14 @@ class Facture extends CommonObject
{ {
$parameters=array('objFrom'=>$objFrom); $parameters=array('objFrom'=>$objFrom);
$action=''; $action='';
$reshook=$hookmanager->executeHooks('createfrom',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks $reshook=$hookmanager->executeHooks('createfrom',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) $error++; if ($reshook < 0) $error++;
} }
// Appel des triggers // Appel des triggers
include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
$interface=new Interfaces($this->db); $interface=new Interfaces($this->db);
$result=$interface->run_triggers('BILL_CLONE',$object,$user,$langs,$conf); $result=$interface->run_triggers('BILL_CLONE',$this,$user,$langs,$conf);
if ($result < 0) { $error++; $this->errors=$interface->errors; } if ($result < 0) { $error++; $this->errors=$interface->errors; }
// Fin appel triggers // Fin appel triggers
} }
@@ -568,7 +573,7 @@ class Facture extends CommonObject
if (! $error) if (! $error)
{ {
$this->db->commit(); $this->db->commit();
return $object->id; return $this->id;
} }
else else
{ {