Fix: Uniformisation code et correction sur generation fiche intervention

This commit is contained in:
Laurent Destailleur 2006-05-08 20:20:23 +00:00
parent b5008ce41c
commit 6f71ce4713
6 changed files with 215 additions and 21 deletions

View File

@ -36,6 +36,8 @@ if (defined("FICHEINTER_ADDON") && is_readable(DOL_DOCUMENT_ROOT ."/includes/mod
require_once(DOL_DOCUMENT_ROOT ."/includes/modules/ficheinter/".FICHEINTER_ADDON.".php");
}
$langs->load("interventions");
$user->getrights("ficheinter");
if (!$user->rights->ficheinter->lire) accessforbidden();
@ -97,14 +99,27 @@ if ($_POST["action"] == 'update')
$_GET["id"]=$_POST["id"]; // Force raffraichissement sur fiche venant d'etre créée
}
// Generation du pdf
if ($_GET["action"] == 'generate' && $_GET["id"])
/*
* Générer ou regénérer le document PDF
*/
if ($_REQUEST['action'] == 'builddoc') // En get ou en post
{
fichinter_pdf_create($db, $_GET["id"], $_POST['model']);
$outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs");
$outputlangs->setDefaultLang($_REQUEST['lang_id']);
$result=fichinter_pdf_create($db, $_REQUEST['id'], '', $_REQUEST['model'], $outputlangs);
if ($result <= 0)
{
dolibarr_print_error($db,$result);
exit;
}
}
/*
* Affichage page
*/
llxHeader();
$sel = new Form($db);
@ -334,11 +349,16 @@ if ($_GET["id"] && $_GET["action"] != 'edit')
print '<a class="tabAction" href="fiche.php?id='.$_GET["id"].'&action=valid">'.$langs->trans("Valid").'</a>';
}
$file = $conf->fichinter->dir_output."/".$fichinter->ref."/".$fichinter->ref.pdf;
if ($fichinter->statut == 0 or !file_exists($file))
if ($fichinter->statut == 0)
{
$langs->load("bills");
print '<a class="tabAction" href="fiche.php?id='.$_GET["id"].'&action=generate">'.$langs->trans("BuildPDF").'</a>';
print '<a class="tabAction" href="fiche.php?id='.$_GET["id"].'&action=builddoc">'.$langs->trans("BuildPDF").'</a>';
}
if ($fichinter->statut >= 0)
{
$langs->load("bills");
print '<a class="tabAction" href="fiche.php?id='.$_GET["id"].'&action=builddoc">'.$langs->trans("RebuildPDF").'</a>';
}
}

View File

@ -0,0 +1,150 @@
<?php
/* Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2006 Regis Houssin <regis.houssin@cap-networks.com>
*
* 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/mod_commande_muguet.php
\ingroup commande
\brief Fichier contenant la classe du modèle de numérotation de référence de commande Muguet
\version $Revision$
*/
require_once(DOL_DOCUMENT_ROOT ."/includes/modules/commande/modules_commande.php");
/** \class mod_commande_marbre
\brief Classe du modèle de numérotation de référence de commande Marbre
*/
class mod_commande_fournisseur_muguet extends ModeleNumRefCommandes
{
var $prefix='CF';
var $error='';
/*
* \brief Constructeur
*/
function mod_commande_fournisseur_muguet()
{
$this->nom = "Muguet";
}
/** \brief Renvoi la description du modele de numérotation
* \return string Texte descripif
*/
function info()
{
return "Renvoie le numéro sous la forme ".$this->prefix."yymm-nnnn où yy est l'année, mm le mois et nnnn un compteur séquentiel sans rupture et sans remise à 0";
}
/** \brief Renvoi un exemple de numérotation
* \return string Example
*/
function getExample()
{
return $this->prefix."0501-0001";
}
/** \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()
{
$coyymm='';
$sql = "SELECT MAX(ref)";
$sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur";
$resql=$db->query($sql);
if ($resql)
{
$row = $db->fetch_row($resql);
if ($row) $coyymm = substr($row[0],0,6);
}
if (! $coyymm || eregi($this->prefix.'[0-9][0-9][0-9][0-9]',$coyymm))
{
return true;
}
else
{
$this->error='Une commande commençant par $coyymm existe en base et est incompatible avec cette numérotation. Supprimer la ou renommer la pour activer ce module.';
return false;
}
}
/** \brief Renvoi prochaine valeur attribuée
* \return string Valeur
*/
function getNextValue()
{
global $db;
// D'abord on récupère la valeur max (réponse immédiate car champ indéxé)
$coyymm='';
$sql = "SELECT MAX(ref)";
$sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur";
$resql=$db->query($sql);
if ($resql)
{
$row = $db->fetch_row($resql);
if ($row) $coyymm = substr($row[0],0,6);
}
// Si champ respectant le modèle a été trouvée
if (eregi('^'+$this->prefix+'[0-9][0-9][0-9][0-9]',$coyymm))
{
// Recherche rapide car restreint par un like sur champ indexé
$posindice=8;
$sql = "SELECT MAX(0+SUBSTRING(ref,$posindice))";
$sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur";
$sql.= " WHERE ref like '${coyymm}%'";
$resql=$db->query($sql);
if ($resql)
{
$row = $db->fetch_row($resql);
$max = $row[0];
}
}
else
{
$max=0;
}
$yymm = strftime("%y%m",time());
$num = sprintf("%04s",$max+1);
return $this->prefix."$yymm-$num";
}
/** \brief Renvoie la référence de commande suivante non utilisée
* \param objsoc Objet société
* \return string Texte descripif
*/
function commande_get_num($objsoc=0)
{
return $this->getNextValue();
}
}
?>

View File

@ -36,13 +36,15 @@ require_once(DOL_DOCUMENT_ROOT ."/includes/modules/facture/modules_facture.php")
class mod_facture_terre extends ModeleNumRefFactures
{
var $prefix='FA';
var $error='';
/** \brief Renvoi la description du modele de numérotation
* \return string Texte descripif
*/
function info()
{
return "Renvoie le numéro sous la forme FAyymm-nnnn où yy est l'année, mm le mois et nnnn un compteur séquentiel sans rupture et sans remise à 0";
return "Renvoie le numéro sous la forme ".$this->prefix."yymm-nnnn où yy est l'année, mm le mois et nnnn un compteur séquentiel sans rupture et sans remise à 0";
}
/** \brief Renvoi un exemple de numérotation
@ -50,7 +52,7 @@ class mod_facture_terre extends ModeleNumRefFactures
*/
function getExample()
{
return "FA0501-0001";
return $this->prefix."0501-0001";
}
/** \brief Test si les numéros déjà en vigueur dans la base ne provoquent pas de
@ -69,7 +71,7 @@ class mod_facture_terre extends ModeleNumRefFactures
$row = $db->fetch_row($resql);
if ($row) $fayymm = substr($row[0],0,6);
}
if (! $fayymm || eregi('FA[0-9][0-9][0-9][0-9]',$fayymm))
if (! $fayymm || eregi($this->prefix.'[0-9][0-9][0-9][0-9]',$fayymm))
{
return true;
}
@ -99,7 +101,7 @@ class mod_facture_terre extends ModeleNumRefFactures
}
// Si champ respectant le modèle a été trouvée
if (eregi('^FA[0-9][0-9][0-9][0-9]',$fayymm))
if (eregi('^'.$this->prefix.'[0-9][0-9][0-9][0-9]',$fayymm))
{
// Recherche rapide car restreint par un like sur champ indexé
$posindice=8;
@ -120,7 +122,7 @@ class mod_facture_terre extends ModeleNumRefFactures
$yymm = strftime("%y%m",time());
$num = sprintf("%04s",$max+1);
return "FA$yymm-$num";
return $this->prefix."$yymm-$num";
}
/** \brief Renvoie la référence de facture suivante non utilisée

View File

@ -42,12 +42,23 @@ class pdf_soleil extends ModelePDFFicheinter
/**
\brief Constructeur
\param db handler accès base de donnée
\param db Handler accès base de donnée
*/
function pdf_soleil($db=0)
{
$this->db = $db;
$this->name = 'soleil';
$this->description = "Modèle de fiche d'intervention standard";
// Dimension page pour format A4
$this->type = 'pdf';
$this->page_largeur = 210;
$this->page_hauteur = 297;
$this->format = array($this->page_largeur,$this->page_hauteur);
$this->marge_gauche=10;
$this->marge_droite=10;
$this->marge_haute=10;
$this->marge_basse=10;
}
/**
@ -57,7 +68,7 @@ class pdf_soleil extends ModelePDFFicheinter
*/
function write_pdf_file($id)
{
global $user,$langs,$conf;
global $user,$langs,$conf,$mysoc;
if ($conf->fichinter->dir_output)
{
@ -69,22 +80,29 @@ class pdf_soleil extends ModelePDFFicheinter
}
$fichref = sanitize_string($fich->ref);
$dir = $conf->fichinter->dir_output . "/" . $fichref;
$file = $dir . "/" . $fichref . ".pdf";
if (! is_dir($dir))
if (! file_exists($dir))
{
create_exdir($dir);
if (create_exdir($dir) < 0)
{
$this->error=$langs->trans("ErrorCanNotCreateDir",$dir);
return 0;
}
}
if (is_dir($dir))
if (file_exists($dir))
{
$pdf=new FPDF('P','mm','A4');
// Initialisation document vierge
$pdf=new FPDF('P','mm',$this->format);
$pdf->Open();
$pdf->AddPage();
$pdf->SetXY(10,5);
$posy=$this->marge_haute;
$pdf->SetXY($this->marge_gauche,$posy);
// Logo
$logo=$conf->societe->dir_logos.'/'.$mysoc->logo;
if ($logo)

View File

@ -1,7 +1,7 @@
# Dolibarr language file - en_US - interventions
Intervention=Intervention
Interventions=Interventions
InterventionCard=InterventionCard
InterventionCard=Intervention card
NewIntervention=New intervention
EditIntervention=Editer intervention
AddIntervention=Add intervention

View File

@ -167,6 +167,10 @@ insert into llx_const (name, value, type, visible) values ('DON_ADDON',
insert into llx_const (name, value, type, visible) values ('PROPALE_ADDON', 'mod_propale_marbre','chaine',0);
insert into llx_const (name, value, type, visible) values ('PROPALE_ADDON_PDF', 'azur','chaine',0);
insert into llx_const (name, value, type, visible) values ('COMMANDE_ADDON', 'mod_commande_ivoire','chaine',0);
insert into llx_const (name, value, type, visible) values ('COMMANDE_ADDON_PDF', 'einstein','chaine',0);
insert into llx_const (name, value, type, visible) values ('COMMANDE_SUPPLIER_ADDON', 'mod_commande_fournisseur_muguet','chaine',0);
insert into llx_const (name, value, type, visible) values ('COMMANDE_SUPPLIER_ADDON_PDF', 'muscadet','chaine',0);
insert into llx_const (name, value, type, visible) values ('EXPEDITION_ADDON', 'enlevement','chaine',0);
insert into llx_const (name, value, type, visible) values ('EXPEDITION_ADDON_PDF','rouget','chaine',0);
insert into llx_const (name, value, type, visible) values ('FICHEINTER_ADDON_PDF','soleil','chaine',0);
insert into llx_const (name, value, type, visible) values ('FACTURE_ADDON', 'terre','chaine',0);