Beispiel #1
0
 /**
  *	Delete the customer order
  *	@param		user		User object
  * 	@return		int		<=0 if KO, >0 if OK
  */
 function delete($user)
 {
     global $conf, $langs;
     require_once DOL_DOCUMENT_ROOT . "/lib/files.lib.php";
     $err = 0;
     $this->db->begin();
     // Delete order details
     $sql = 'DELETE FROM ' . MAIN_DB_PREFIX . "commandedet WHERE fk_commande = " . $this->id;
     dol_syslog("Commande::delete sql=" . $sql);
     if (!$this->db->query($sql)) {
         dol_syslog("CustomerOrder::delete error", LOG_ERR);
         $err++;
     }
     // Delete order
     $sql = 'DELETE FROM ' . MAIN_DB_PREFIX . "commande WHERE rowid = " . $this->id;
     dol_syslog("Commande::delete sql=" . $sql);
     if (!$this->db->query($sql)) {
         dol_syslog("CustomerOrder::delete error", LOG_ERR);
         $err++;
     }
     // Delete linked object
     // TODO deplacer dans le common
     $sql = "DELETE FROM " . MAIN_DB_PREFIX . "element_element";
     $sql .= " WHERE fk_target = " . $this->id;
     $sql .= " AND targettype = '" . $this->element . "'";
     dol_syslog("Commande::delete sql=" . $sql);
     if (!$this->db->query($sql)) {
         dol_syslog("CustomerOrder::delete error", LOG_ERR);
         $err++;
     }
     // Delete linked contacts
     $res = $this->delete_linked_contact();
     if ($res < 0) {
         dol_syslog("CustomerOrder::delete error", LOG_ERR);
         $err++;
     }
     // On efface le repertoire de pdf provisoire
     $comref = dol_sanitizeFileName($this->ref);
     if ($conf->commande->dir_output) {
         $dir = $conf->commande->dir_output . "/" . $comref;
         $file = $conf->commande->dir_output . "/" . $comref . "/" . $comref . ".pdf";
         if (file_exists($file)) {
             commande_delete_preview($this->db, $this->id, $this->ref);
             if (!dol_delete_file($file)) {
                 $this->error = $langs->trans("ErrorCanNotDeleteFile", $file);
                 $this->db->rollback();
                 return 0;
             }
         }
         if (file_exists($dir)) {
             if (!dol_delete_dir($dir)) {
                 $this->error = $langs->trans("ErrorCanNotDeleteDir", $dir);
                 $this->db->rollback();
                 return 0;
             }
         }
     }
     if ($err == 0) {
         // Appel des triggers
         include_once DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php";
         $interface = new Interfaces($this->db);
         $result = $interface->run_triggers('ORDER_DELETE', $this, $user, $langs, $conf);
         if ($result < 0) {
             $error++;
             $this->errors = $interface->errors;
         }
         // Fin appel triggers
         $this->db->commit();
         return 1;
     } else {
         $this->db->rollback();
         return -1;
     }
 }
/**
 *  Cree un bon de commande sur disque en fonction d'un modele
 *  @param	    db  			data base object
 *  @param	    object			object order
 *  @param	    modele			force le modele a utiliser ('' to not force)
 *  @param		outputlangs		objet lang a utiliser pour traduction
 *  @param      hidedetails     Hide details of lines
 *  @param      hidedesc        Hide description
 *  @param      hideref         Hide ref
 *  @return     int             0 if KO, 1 if OK
 */
function commande_pdf_create($db, $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0)
{
	global $conf,$user,$langs;
	$langs->load("orders");

	$dir = "/includes/modules/commande/";
	$srctemplatepath='';
	$modelisok=0;
	$liste=array();

	// Positionne modele sur le nom du modele de commande a utiliser
	$file = "pdf_".$modele.".modules.php";
	// On verifie l'emplacement du modele
	$file = dol_buildpath($dir.$file);
	if ($modele && file_exists($file))   $modelisok=1;

	// Si model pas encore bon
	if (! $modelisok)
	{
		if ($conf->global->COMMANDE_ADDON_PDF) $modele = $conf->global->COMMANDE_ADDON_PDF;
		$file = "pdf_".$modele.".modules.php";
		// On verifie l'emplacement du modele
        $file = dol_buildpath($dir.$file);
		if (file_exists($file))   $modelisok=1;
	}

	// Si model pas encore bon
	if (! $modelisok)
	{
		$model=new ModelePDFCommandes();
		$liste=$model->liste_modeles($db);
		$modele=key($liste);        // Renvoie premiere valeur de cle trouvee dans le tableau
		$file = "pdf_".$modele.".modules.php";
		// On verifie l'emplacement du modele
        $file = dol_buildpath($dir.$file);
		if (file_exists($file))   $modelisok=1;
	}

	// Charge le modele
	if ($modelisok)
	{
		$classname = "pdf_".$modele;
		require_once($file);

		$obj = new $classname($db);

		// We save charset_output to restore it because write_file can change it if needed for
		// output format that does not support UTF8.
		$sav_charset_output=$outputlangs->charset_output;
		if ($obj->write_file($object, $outputlangs, $srctemplatepath, $hidedetails, $hidedesc) > 0)
		{
			$outputlangs->charset_output=$sav_charset_output;
			// on supprime l'image correspondant au preview
			commande_delete_preview($db, $object->id);
			
			// Appel des triggers
			include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
			$interface=new Interfaces($db);
			$result=$interface->run_triggers('ORDER_BUILDDOC',$object,$user,$langs,$conf);
			if ($result < 0) { $error++; $this->errors=$interface->errors; }
			// Fin appel triggers
			
			return 1;
		}
		else
		{
			$outputlangs->charset_output=$sav_charset_output;
			dol_syslog("Error");
			dol_print_error($db,$obj->error);
			return 0;
		}
	}
	else
	{
		if (! $conf->global->COMMANDE_ADDON_PDF)
		{
			print $langs->trans("Error")." ".$langs->trans("Error_COMMANDE_ADDON_PDF_NotDefined");
		}
		else
		{
			print $langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists",$dir.$file);
		}
		return 0;
	}
}