From 0237545f5298efeaeea6a142335014e424cd85e2 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Fri, 17 Feb 2006 14:24:34 +0000 Subject: [PATCH] =?UTF-8?q?D=E9but=20ajout=20mod=E9les=20commande=20et=20f?= =?UTF-8?q?acture=20fournisseur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/modules_commandefournisseur.php | 209 ++++++++++++++++++ htdocs/master.inc.php | 4 + mysql/migration/2.0.0-2.1.0.sql | 8 + .../llx_commande_fournisseur_model_pdf.sql | 30 +++ 4 files changed, 251 insertions(+) create mode 100644 htdocs/fourn/commande/modules/modules_commandefournisseur.php create mode 100644 mysql/tables/llx_commande_fournisseur_model_pdf.sql diff --git a/htdocs/fourn/commande/modules/modules_commandefournisseur.php b/htdocs/fourn/commande/modules/modules_commandefournisseur.php new file mode 100644 index 00000000000..41a1f035652 --- /dev/null +++ b/htdocs/fourn/commande/modules/modules_commandefournisseur.php @@ -0,0 +1,209 @@ + + * Copyright (C) 2004-2005 Laurent Destailleur + * Copyright (C) 2004 Eric Seigne + * Copyright (C) 2006 Andre Cianfarani + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * or see http://www.gnu.org/ + * + * $Id$ + * $Source$ + * + */ + +/** + \file htdocs/includes/modules/commande/modules_commandefournisseur.php + \ingroup commande + \brief Fichier contenant la classe mère de generation des commandes fournisseurs en PDF + et la classe mère de numérotation des commandes fournisseurs + \version $Revision$ +*/ + +require_once(FPDF_PATH.'fpdf.php'); + + +/** + \class ModelePDFCommandesSuppliers + \brief Classe mère des modèles de commandes +*/ + +class ModelePDFCommandesSuppliers extends FPDF +{ + var $error=''; + + /** + \brief Renvoi le dernier message d'erreur de création de PDF de commande + */ + function pdferror() + { + return $this->error; + } + + /** + * \brief Renvoi la liste des modèles actifs + */ + function liste_modeles($db) + { + $liste=array(); + $sql ="SELECT nom as id, nom as lib"; + $sql.=" FROM ".MAIN_DB_PREFIX."commande_fournisseur_model_pdf"; + + $resql = $db->query($sql); + if ($resql) + { + $num = $db->num_rows($resql); + $i = 0; + while ($i < $num) + { + $row = $db->fetch_row($resql); + $liste[$row[0]]=$row[1]; + $i++; + } + } + else + { + $this->error=$db->error(); + return -1; + } + return $liste; + } + +} + + + +/** + \class ModeleNumRefCommandesSuppliers + \brief Classe mère des modèles de numérotation des références de commandes fournisseurs +*/ + +class ModeleNumRefCommandesSuppliers +{ + var $error=''; + + /** \brief Renvoi la description par defaut du modele de numérotation + * \return string Texte descripif + */ + function info() + { + global $langs; + $langs->load("orders"); + return $langs->trans("NoDescription"); + } + + /** \brief Renvoi un exemple de numérotation + * \return string Example + */ + function getExample() + { + global $langs; + $langs->load("orders"); + return $langs->trans("NoExample"); + } + + /** \brief Test si les numéros déjà en vigueur dans la base ne provoquent pas de + * de conflits qui empechera cette numérotation de fonctionner. + * \return boolean false si conflit, true si ok + */ + function canBeActivated() + { + return true; + } + + /** \brief Renvoi prochaine valeur attribuée + * \return string Valeur + */ + function getNextValue() + { + global $langs; + return $langs->trans("NotAvailable"); + } + +} +function commande_supplier_pdf_create($db, $comid, $modele='') +{ + global $langs; + $langs->load("suppliers"); + + $dir = DOL_DOCUMENT_ROOT."/fourn/commande/modules/"; + + // Positionne modele sur le nom du modele de commande fournisseur à utiliser + if (! strlen($modele)) + { + if (defined("COMMANDE_SUPPLIER_ADDON_PDF") && COMMANDE_SUPPLIER_ADDON_PDF) + { + $modele = COMMANDE_SUPPLIER_ADDON_PDF; + } + else + { + print $langs->trans("Error")." ".$langs->trans("Error_COMMANDE_SUPPLIER_ADDON_PDF_NotDefined"); + return 0; + } + } + // Charge le modele + $file = "pdf_".$modele.".modules.php"; + if (file_exists($dir.$file)) + { + $classname = "pdf_".$modele; + require_once($dir.$file); + + $obj = new $classname($db); + + if ( $obj->write_pdf_file($comid) > 0) + { + // on supprime l'image correspondant au preview + commande_delete_preview($db, $comid); + return 1; + } + else + { + dolibarr_syslog("Erreur dans commande_supplier_pdf_create"); + dolibarr_print_error($db,$obj->pdferror()); + return 0; + } + } + else + { + print $langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists",$dir.$file); + return 0; + } +} +function commande_supplier_delete_preview($db, $propalid) +{ + global $langs,$conf; + + $comfourn = new Commande($db,"",$propalid); + $comfourn->fetch($propalid); + $client = new Societe($db); + $client->fetch($comfourn->soc_id); + + if ($conf->fournisseur->commande->dir_output) + { + $comfournref = sanitize_string($comfourn->ref); + $dir = $conf->commande->dir_output . "/" . $comfournref ; + $file = $dir . "/" . $comfournref . ".pdf.png"; + + if ( file_exists( $file ) && is_writable( $file ) ) + { + if ( ! unlink($file) ) + { + $this->error=$langs->trans("ErrorFailedToOpenFile",$file); + return 0; + } + } + } +} +?> diff --git a/htdocs/master.inc.php b/htdocs/master.inc.php index 40a6a2d49fc..b896006622c 100644 --- a/htdocs/master.inc.php +++ b/htdocs/master.inc.php @@ -252,6 +252,10 @@ $conf->don->dir_images=DOL_DATA_ROOT."/dons/images"; $conf->syslog->enabled=defined("MAIN_MODULE_SYSLOG")?MAIN_MODULE_SYSLOG:0; // Module fournisseur $conf->fournisseur->enabled=defined("MAIN_MODULE_FOURNISSEUR")?MAIN_MODULE_FOURNISSEUR:0; +$conf->fournisseur->commande->dir_output=DOL_DATA_ROOT."/fournisseur/commande"; +$conf->fournisseur->commande->dir_images=DOL_DATA_ROOT."/fournisseur/commande/images"; +$conf->fournisseur->facture->dir_output=DOL_DATA_ROOT."/fournisseur/facture"; +$conf->fournisseur->facture->dir_images=DOL_DATA_ROOT."/fournisseur/facture/images"; // Module ficheinter $conf->fichinter->enabled=defined("MAIN_MODULE_FICHEINTER")?MAIN_MODULE_FICHEINTER:0; $conf->fichinter->dir_output=DOL_DATA_ROOT."/ficheinter"; diff --git a/mysql/migration/2.0.0-2.1.0.sql b/mysql/migration/2.0.0-2.1.0.sql index effd17f9200..c8972e1aaf5 100644 --- a/mysql/migration/2.0.0-2.1.0.sql +++ b/mysql/migration/2.0.0-2.1.0.sql @@ -42,3 +42,11 @@ create table llx_comfourn_facfourn key(fk_commande), key(fk_facture) )type=innodb; + + +create table llx_commande_fournisseur_model_pdf +( + nom varchar(50) PRIMARY KEY, + libelle varchar(255), + description text +)type=innodb; \ No newline at end of file diff --git a/mysql/tables/llx_commande_fournisseur_model_pdf.sql b/mysql/tables/llx_commande_fournisseur_model_pdf.sql new file mode 100644 index 00000000000..f3d637bf728 --- /dev/null +++ b/mysql/tables/llx_commande_fournisseur_model_pdf.sql @@ -0,0 +1,30 @@ +-- =================================================================== +-- Copyright (C) 2001-2003 Rodolphe Quiedeville +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 2 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program; if not, write to the Free Software +-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +-- +-- $Id$ +-- $Source$ +-- +-- Liste des modeles de commande fournisseur pdf disponibles +-- +-- =================================================================== + +create table llx_commande_fournisseur_model_pdf +( + nom varchar(50) PRIMARY KEY, + libelle varchar(255), + description text +)type=innodb;