/** * 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; } }