Fix: best autonomy of modules

Fix: uniformise fields and code
!! not stable !!
This commit is contained in:
Regis Houssin 2010-03-13 15:52:30 +00:00
parent 64b94af009
commit f1d67cba3c
12 changed files with 634 additions and 279 deletions

View File

@ -2874,7 +2874,6 @@ CREATE TABLE `llx_livraison` (
`entity` int(11) NOT NULL DEFAULT '1',
`ref_client` varchar(30) DEFAULT NULL,
`fk_soc` int(11) NOT NULL,
`fk_expedition` int(11) DEFAULT NULL,
`date_creation` datetime DEFAULT NULL,
`fk_user_author` int(11) DEFAULT NULL,
`date_valid` datetime DEFAULT NULL,

View File

@ -410,6 +410,11 @@ class CommonObject
function fetch_object()
{
$object = $this->origin;
// TODO uniformise code
if ($object == 'shipping') $object = 'expedition';
if ($object == 'delivery') $object = 'livraison';
$class = ucfirst($object);
$this->$object = new $class($this->db);
$this->$object->fetch($this->origin_id);

View File

@ -44,6 +44,7 @@ class Expedition extends CommonObject
var $id;
var $socid;
var $ref_customer;
var $brouillon;
var $entrepot_id;
var $modelpdf;
@ -51,6 +52,10 @@ class Expedition extends CommonObject
var $origin_id;
var $lignes;
var $meths;
var $date_delivery;
var $date_creation;
var $date_valid;
/**
* Initialisation
@ -90,10 +95,12 @@ class Expedition extends CommonObject
$sql = "INSERT INTO ".MAIN_DB_PREFIX."expedition (";
$sql.= "ref";
$sql.= ", ref_customer";
$sql.= ", entity";
$sql.= ", date_creation";
$sql.= ", fk_user_author";
$sql.= ", date_expedition";
$sql.= ", date_delivery";
$sql.= ", fk_soc";
$sql.= ", fk_adresse_livraison";
$sql.= ", fk_expedition_methode";
@ -104,13 +111,14 @@ class Expedition extends CommonObject
$sql.= ", height";
$sql.= ", weight_units";
$sql.= ", size_units";
$sql.= ")";
$sql.= " VALUES (";
$sql.= ") VALUES (";
$sql.= "'(PROV)'";
$sql.= ", '".$this->ref_customer."'";
$sql.= ", ".$conf->entity;
$sql.= ", ".$this->db->idate(gmmktime());
$sql.= ", ".$user->id;
$sql.= ", ".$this->db->idate($this->date_expedition);
$sql.= ", ".$this->db->idate($this->date_delivery);
$sql.= ", ".$this->socid;
$sql.= ", ".($this->fk_delivery_address>0?$this->fk_delivery_address:"null");
$sql.= ", ".($this->expedition_method_id>0?$this->expedition_method_id:"null");
@ -152,15 +160,8 @@ class Expedition extends CommonObject
$error++;
}
if ($conf->commande->enabled)
{
$ret = $this->setStatut(2,$this->origin_id,$this->origin);
}
else
{
// TODO definir un statut
$ret = $this->setStatut(9,$this->origin_id,$this->origin);
}
// TODO uniformiser les statuts
$ret = $this->setStatut(2,$this->origin_id,$this->origin);
if (! $ret)
{
$error++;
@ -205,9 +206,18 @@ class Expedition extends CommonObject
{
$error = 0;
$sql = "INSERT INTO ".MAIN_DB_PREFIX."expeditiondet (fk_expedition, fk_entrepot, fk_origin_line, qty)";
$sql .= " VALUES (".$this->id.", ".($entrepot_id?$entrepot_id:'null').", ".$origin_line_id.", ".$qty.")";
//print 'x'.$sql;
$sql = "INSERT INTO ".MAIN_DB_PREFIX."expeditiondet (";
$sql.= "fk_expedition";
$sql.= ", fk_entrepot";
$sql.= ", fk_origin_line";
$sql.= ", qty";
$sql.= ") VALUES (";
$sql.= $this->id;
$sql.= ", ".($entrepot_id?$entrepot_id:'null');
$sql.= ", ".$origin_line_id;
$sql.= ", ".$qty;
$sql.= ")";
if (! $this->db->query($sql))
{
$error++;
@ -225,26 +235,13 @@ class Expedition extends CommonObject
{
global $conf;
$sql = "SELECT e.rowid, e.fk_soc as socid, e.date_creation, e.ref, e.fk_user_author, e.fk_statut";
$sql = "SELECT e.rowid, e.fk_soc as socid, e.date_creation, e.ref, e.ref_customer, e.fk_user_author, e.fk_statut";
$sql.= ", e.weight, e.weight_units, e.size, e.size_units, e.width, e.height";
$sql.= ", e.date_expedition as date_expedition, e.model_pdf, e.fk_adresse_livraison";
$sql.= ", e.date_expedition as date_expedition, e.model_pdf, e.fk_adresse_livraison, e.date_delivery";
$sql.= ", e.fk_expedition_methode, e.tracking_number";
$sql.= ", el.fk_source as origin_id";
$sql.= ", ori.ref_client";
if ($conf->livraison_bon->enabled) $sql.=", l.rowid as livraison_id";
$sql.= ", el.fk_source as origin_id, el.sourcetype as origin";
$sql.= " FROM ".MAIN_DB_PREFIX."expedition as e";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."element_element as el ON e.rowid = el.fk_target";
if ($conf->commande->enabled)
{
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."commande as ori ON el.fk_source = ori.rowid";
$sql.= " AND el.sourcetype = 'commande'";
}
else
{
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."propal as ori ON el.fk_source = ori.rowid";
$sql.= " AND el.sourcetype = 'propal'";
}
if ($conf->livraison_bon->enabled) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."livraison as l ON e.rowid = l.fk_expedition";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."element_element as el ON el.fk_target = e.rowid AND el.targettype = '".$this->element."'";
$sql.= " WHERE e.rowid = ".$id;
dol_syslog("Expedition::fetch sql=".$sql);
@ -258,17 +255,19 @@ class Expedition extends CommonObject
$this->id = $obj->rowid;
$this->ref = $obj->ref;
$this->socid = $obj->socid;
$this->ref_client = $obj->ref_client;
$this->ref_customer = $obj->ref_customer;
$this->statut = $obj->fk_statut;
$this->origin_id = $obj->origin_id;
$this->livraison_id = $obj->livraison_id;
$this->user_author_id = $obj->fk_user_author;
$this->date = $this->db->jdate($obj->date_expedition);
$this->adresse_livraison_id = $obj->fk_adresse_livraison; // TODO obsolete
$this->date = $this->db->jdate($obj->date_expedition); // TODO obsolete
$this->date_shipping = $this->db->jdate($obj->date_expedition);
$this->date_delivery = $this->db->jdate($obj->date_delivery);
$this->adresse_livraison_id = $obj->fk_adresse_livraison; // TODO obsolete
$this->fk_delivery_address = $obj->fk_adresse_livraison;
$this->modelpdf = $obj->model_pdf;
$this->expedition_method_id = $obj->fk_expedition_methode;
$this->tracking_number = $obj->tracking_number;
$this->origin = $obj->origin;
$this->origin_id = $obj->origin_id;
$this->trueWeight = $obj->weight;
$this->weight_units = $obj->weight_units;
@ -284,15 +283,6 @@ class Expedition extends CommonObject
$this->trueSize = $obj->size."x".$obj->width."x".$obj->height;
$this->size_units = $obj->size_units;
if ($conf->commande->enabled)
{
$this->origin = "commande";
}
else
{
$this->origin = "propal";
}
$this->db->free($result);
if ($this->statut == 0) $this->brouillon = 1;
@ -303,7 +293,7 @@ class Expedition extends CommonObject
$this->pdf_filename = $file;
/*
* Lignes
* Lines
*/
$result=$this->fetch_lines();
if ($result < 0)
@ -359,8 +349,8 @@ class Expedition extends CommonObject
$num = "EXP".$this->id;
// Validate
$sql = "UPDATE ".MAIN_DB_PREFIX."expedition";
$sql.= " SET ref='".$num."'";
$sql = "UPDATE ".MAIN_DB_PREFIX."expedition SET";
$sql.= " ref='".$num."'";
$sql.= ", fk_statut = 1";
$sql.= ", date_valid = ".$this->db->idate(mktime());
$sql.= ", fk_user_valid = ".$user->id;
@ -493,15 +483,15 @@ class Expedition extends CommonObject
{
// Expedition validee
include_once(DOL_DOCUMENT_ROOT."/livraison/livraison.class.php");
$livraison = new Livraison($this->db);
$result=$livraison->create_from_sending($user, $this->id);
$delivery = new Livraison($this->db);
$result=$delivery->create_from_sending($user, $this->id);
if ($result > 0)
{
return $result;
}
else
{
$this->error=$livraison->error;
$this->error=$delivery->error;
return $result;
}
}
@ -517,35 +507,36 @@ class Expedition extends CommonObject
function addline( $entrepot_id, $id, $qty )
{
$num = sizeof($this->lignes);
$ligne = new ExpeditionLigne($this->db);
$line = new ExpeditionLigne($this->db);
$ligne->entrepot_id = $entrepot_id;
$ligne->origin_line_id = $id;
$ligne->qty = $qty;
$line->entrepot_id = $entrepot_id;
$line->origin_line_id = $id;
$line->qty = $qty;
$this->lignes[$num] = $ligne;
$this->lignes[$num] = $line;
}
/**
*
*
*/
function delete_line($idligne)
function delete_line($id)
{
if ($this->statut == 0)
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."commandedet";
$sql.= " WHERE rowid = ".$idligne;
$sql.= " WHERE rowid = ".$id;
if ($this->db->query($sql) )
{
$this->update_price();
return 1;
}
else
{
return 0;
}
{
$this->update_price();
return 1;
}
else
{
return 0;
}
}
}
@ -647,25 +638,25 @@ class Expedition extends CommonObject
$i = 0;
while ($i < $num)
{
$ligne = new ExpeditionLigne($this->db);
$line = new ExpeditionLigne($this->db);
$obj = $this->db->fetch_object($resql);
$ligne->origin_line_id = $obj->fk_origin_line;
$ligne->entrepot_id = $obj->fk_entrepot;
$ligne->fk_product = $obj->fk_product;
$ligne->fk_product_type= $obj->fk_product_type;
$ligne->ref = $obj->ref;
$ligne->label = $obj->label; // deprecated
$ligne->libelle = $obj->label;
$ligne->description = $obj->description;
$ligne->qty_asked = $obj->qty_asked;
$ligne->qty_shipped = $obj->qty_shipped;
$ligne->weight = $obj->weight;
$ligne->weight_units = $obj->weight_units;
$ligne->volume = $obj->volume;
$ligne->volume_units = $obj->volume_units;
$line->origin_line_id = $obj->fk_origin_line;
$line->entrepot_id = $obj->fk_entrepot;
$line->fk_product = $obj->fk_product;
$line->fk_product_type = $obj->fk_product_type;
$line->ref = $obj->ref;
$line->label = $obj->label;
$line->libelle = $obj->label; // deprecated
$line->description = $obj->description;
$line->qty_asked = $obj->qty_asked;
$line->qty_shipped = $obj->qty_shipped;
$line->weight = $obj->weight;
$line->weight_units = $obj->weight_units;
$line->volume = $obj->volume;
$line->volume_units = $obj->volume_units;
$this->lignes[$i] = $ligne;
$this->lignes[$i] = $line;
$i++;
}
$this->db->free($resql);

View File

@ -593,7 +593,7 @@ else
{
print '<div class="error">'.$mesg.'</div>';
}
$typeobject = $expedition->origin;
$origin = $expedition->origin;
$expedition->fetch_object();
@ -606,20 +606,11 @@ else
$soc = new Societe($db);
$soc->fetch($expedition->socid);
$h=0;
$head[$h][0] = DOL_URL_ROOT."/expedition/fiche.php?id=".$expedition->id;
$head[$h][1] = $langs->trans("SendingCard");
$hselected = $h;
$h++;
if ($conf->livraison_bon->enabled && $expedition->livraison_id)
{
$head[$h][0] = DOL_URL_ROOT."/livraison/fiche.php?id=".$expedition->livraison_id;
$head[$h][1] = $langs->trans("DeliveryCard");
$h++;
}
dol_fiche_head($head, $hselected, $langs->trans("Sending"), 0, 'sending');
// delivery link
$expedition->load_object_linked($expedition->id,$expedition->element,-1,-1);
$head=shipping_prepare_head($expedition);
dol_fiche_head($head, 'shipping', $langs->trans("Sending"), 0, 'sending');
if ($mesg) print $mesg;
@ -705,7 +696,7 @@ else
// Ref customer
print '<tr><td>'.$langs->trans("RefCustomer").'</td>';
print '<td colspan="3">'.$expedition->ref_client."</a></td>\n";
print '<td colspan="3">'.$expedition->ref_customer."</a></td>\n";
print '</tr>';
// Date
@ -914,7 +905,7 @@ else
}
}
if ($conf->livraison_bon->enabled && $expedition->statut == 1 && $user->rights->expedition->livraison->creer && !$expedition->livraison_id)
if ($conf->livraison_bon->enabled && $expedition->statut == 1 && $user->rights->expedition->livraison->creer && empty($expedition->linked_object))
{
print '<a class="butAction" href="fiche.php?id='.$expedition->id.'&amp;action=create_delivery">'.$langs->trans("DeliveryOrder").'</a>';
}

View File

@ -1,7 +1,7 @@
<?php
/* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2010 Regis Houssin <regis@dolibarr.fr>
*
* 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
@ -20,19 +20,19 @@
*/
/**
\file htdocs/includes/modules/livraison/mod_livraison_jade.php
\ingroup livraison
\brief Fichier contenant la classe du modele de numerotation de reference de bon de livraison Jade
\version $Id$
*/
* \file htdocs/includes/modules/livraison/mod_livraison_jade.php
* \ingroup delivery
* \brief Fichier contenant la classe du modele de numerotation de reference de bon de livraison Jade
* \version $Id$
*/
require_once(DOL_DOCUMENT_ROOT ."/includes/modules/livraison/modules_livraison.php");
/**
\class mod_livraison_jade
\brief Classe du modele de numerotation de reference de bon de livraison Jade
*/
* \class mod_livraison_jade
* \brief Classe du modele de numerotation de reference de bon de livraison Jade
*/
class mod_livraison_jade extends ModeleNumRefDeliveryOrder
{
@ -41,16 +41,18 @@ class mod_livraison_jade extends ModeleNumRefDeliveryOrder
var $nom = "Jade";
/** \brief Renvoi la description du modele de numerotation
* \return string Texte descripif
*/
/**
* \brief Renvoi la description du modele de numerotation
* \return string Texte descripif
*/
function info()
{
global $langs;
return $langs->trans("NumRefModelJade");
}
/** \brief Renvoi un exemple de numerotation
/**
* \brief Renvoi un exemple de numerotation
* \return string Example
*/
function getExample()
@ -58,12 +60,13 @@ class mod_livraison_jade extends ModeleNumRefDeliveryOrder
return "BL0600001";
}
/** \brief Return next value
* \param objsoc Object third party
* \param livraison Object delivery
* \return string Value if OK, 0 if KO
*/
function getNextValue($objsoc=0,$livraison='')
/**
* \brief Return next value
* \param objsoc Object third party
* \param delivery Object delivery
* \return string Value if OK, 0 if KO
*/
function getNextValue($objsoc=0,$delivery='')
{
global $db,$conf;
@ -103,8 +106,8 @@ class mod_livraison_jade extends ModeleNumRefDeliveryOrder
{
$max=0;
}
//$date=time();
$date=$livraison->date_livraison;
$date = $delivery->date_delivery;
$yy = strftime("%y",$date);
$num = sprintf("%05s",$max+1);
@ -112,7 +115,8 @@ class mod_livraison_jade extends ModeleNumRefDeliveryOrder
}
/** \brief Renvoie la reference de commande suivante non utilisee
/**
* \brief Renvoie la reference de commande suivante non utilisee
* \param objsoc Objet societe
* \param livraison Objet livraison
* \return string Texte descripif

View File

@ -1,6 +1,6 @@
-- ===================================================================
-- Copyright (C) 2003-2008 Rodolphe Quiedeville <rodolphe@quiedeville.org>
-- Copyright (C) 2008-2009 Regis Houssin <regis@dolibarr.fr>
-- Copyright (C) 2008-2010 Regis Houssin <regis@dolibarr.fr>
--
-- 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
@ -25,17 +25,19 @@ create table llx_expedition
tms timestamp,
ref varchar(30) NOT NULL,
entity integer DEFAULT 1 NOT NULL, -- multi company id
ref_customer varchar(30), -- customer number
fk_soc integer NOT NULL,
date_creation datetime, -- date de creation
fk_user_author integer, -- createur
date_valid datetime, -- date de validation
fk_user_valid integer, -- valideur
date_expedition date, -- date de lexpedition
fk_adresse_livraison integer DEFAULT NULL, -- adresse de livraison
date_creation datetime, -- date de creation
fk_user_author integer, -- createur
date_valid datetime, -- date de validation
fk_user_valid integer, -- valideur
date_expedition date, -- shipping date
date_delivery date DEFAULT NULL, -- delivery date
fk_adresse_livraison integer DEFAULT NULL, -- adresse de livraison
fk_expedition_methode integer,
tracking_number varchar(50),
fk_statut smallint DEFAULT 0,
fk_statut smallint DEFAULT 0,
height integer,
width integer,

View File

@ -1,6 +1,6 @@
-- ===================================================================
-- Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
-- Copyright (C) 2008-2009 Regis Houssin <regis@dolibarr.fr>
-- Copyright (C) 2008-2010 Regis Houssin <regis@dolibarr.fr>
--
-- 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
@ -23,20 +23,19 @@ create table llx_livraison
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
tms timestamp,
ref varchar(30) NOT NULL, -- delivery number
entity integer DEFAULT 1 NOT NULL, -- multi company id
ref_client varchar(30), -- customer number
ref varchar(30) NOT NULL, -- delivery number
entity integer DEFAULT 1 NOT NULL, -- multi company id
ref_customer varchar(30), -- customer number
fk_soc integer NOT NULL,
fk_expedition integer, -- expedition auquel est rattache le bon de livraison
date_creation datetime, -- date de creation
fk_user_author integer, -- createur du bon de livraison
date_valid datetime, -- date de validation
fk_user_valid integer, -- valideur du bon de livraison
date_livraison date default NULL, -- date de livraison
fk_adresse_livraison integer, -- adresse de livraison
fk_statut smallint default 0,
total_ht double(24,8) default 0,
date_creation datetime, -- date de creation
fk_user_author integer, -- createur du bon de livraison
date_valid datetime, -- date de validation
fk_user_valid integer, -- valideur du bon de livraison
date_delivery date DEFAULT NULL, -- delivery date
fk_adresse_livraison integer, -- adresse de livraison
fk_statut smallint DEFAULT 0,
total_ht double(24,8) DEFAULT 0,
note text,
note_public text,
model_pdf varchar(50)

View File

@ -24,36 +24,36 @@ create table llx_propal
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
fk_soc integer,
fk_projet integer DEFAULT 0, -- projet auquel est rattache la propale
ref varchar(30) NOT NULL, -- propal number
entity integer DEFAULT 1 NOT NULL, -- multi company id
ref_client varchar(30), -- customer order number
fk_projet integer DEFAULT 0, -- projet auquel est rattache la propale
ref varchar(30) NOT NULL, -- propal number
entity integer DEFAULT 1 NOT NULL, -- multi company id
ref_client varchar(30), -- customer order number
datec datetime, -- date de creation
datep date, -- date de la propal
fin_validite datetime, -- date de fin de validite
date_valid datetime, -- date de validation
date_cloture datetime, -- date de cloture
fk_user_author integer, -- createur de la propale
fk_user_valid integer, -- valideur de la propale
fk_user_cloture integer, -- cloture de la propale signee ou non signee
datec datetime, -- date de creation
datep date, -- date de la propal
fin_validite datetime, -- date de fin de validite
date_valid datetime, -- date de validation
date_cloture datetime, -- date de cloture
fk_user_author integer, -- createur de la propale
fk_user_valid integer, -- valideur de la propale
fk_user_cloture integer, -- cloture de la propale signee ou non signee
fk_statut smallint DEFAULT 0 NOT NULL,
price real DEFAULT 0, -- (obsolete)
remise_percent real DEFAULT 0, -- remise globale relative en pourcent (obsolete)
remise_absolue real DEFAULT 0, -- remise globale absolue (obsolete)
remise real DEFAULT 0, -- remise calculee (obsolete)
total_ht double(24,8) DEFAULT 0, -- montant total ht apres remise globale
tva double(24,8) DEFAULT 0, -- montant total tva apres remise globale
localtax1 double(24,8) DEFAULT 0, -- amount total localtax1
localtax2 double(24,8) DEFAULT 0, -- amount total localtax2
total double(24,8) DEFAULT 0, -- montant total ttc apres remise globale
price real DEFAULT 0, -- (obsolete)
remise_percent real DEFAULT 0, -- remise globale relative en pourcent (obsolete)
remise_absolue real DEFAULT 0, -- remise globale absolue (obsolete)
remise real DEFAULT 0, -- remise calculee (obsolete)
total_ht double(24,8) DEFAULT 0, -- montant total ht apres remise globale
tva double(24,8) DEFAULT 0, -- montant total tva apres remise globale
localtax1 double(24,8) DEFAULT 0, -- amount total localtax1
localtax2 double(24,8) DEFAULT 0, -- amount total localtax2
total double(24,8) DEFAULT 0, -- montant total ttc apres remise globale
fk_cond_reglement integer, -- condition de reglement (30 jours, fin de mois ...)
fk_mode_reglement integer, -- mode de reglement (Virement, Prelevement)
fk_cond_reglement integer, -- condition de reglement (30 jours, fin de mois ...)
fk_mode_reglement integer, -- mode de reglement (Virement, Prelevement)
note text,
note_public text,
model_pdf varchar(50),
date_livraison date default NULL,
fk_adresse_livraison integer -- adresse de livraison
note text,
note_public text,
model_pdf varchar(50),
date_livraison date DEFAULT NULL, -- delivery date
fk_adresse_livraison integer -- adresse de livraison
)type=innodb;

View File

@ -273,6 +273,12 @@ if (isset($_POST['action']) && preg_match('/upgrade/i',$_POST["action"]))
if (versioncompare($versiontoarray,$afterversionarray) >= 0 && versioncompare($versiontoarray,$beforeversionarray) <= 0)
{
migrate_project_task_time($db,$langs,$conf);
migrate_customerorder_shipping($db,$langs,$conf);
migrate_shipping_delivery($db,$langs,$conf);
migrate_shipping_delivery2($db,$langs,$conf);
}
// On commit dans tous les cas.
@ -2829,6 +2835,293 @@ function migrate_project_task_time($db,$langs,$conf)
print '</td></tr>';
}
/*
* Migrate order ref_customer and date_delivery fields to llx_expedition
*/
function migrate_customerorder_shipping($db,$langs,$conf)
{
print '<tr><td colspan="4">';
print '<br>';
print '<b>'.$langs->trans('MigrationCustomerOrderShipping')."</b><br>\n";
$error = 0;
$result1 = $db->DDLDescTable(MAIN_DB_PREFIX."expedition","ref_customer");
$result2 = $db->DDLDescTable(MAIN_DB_PREFIX."expedition","date_delivery");
$obj1 = $db->fetch_object($result1);
$obj2 = $db->fetch_object($result2);
if (!$obj1 && !$obj2)
{
dolibarr_install_syslog("upgrade2::migrate_customerorder_shipping");
$db->begin();
$sqlAdd1 = "ALTER TABLE ".MAIN_DB_PREFIX."expedition ADD COLUMN ref_customer varchar(30) AFTER entity";
$sqlAdd2 = "ALTER TABLE ".MAIN_DB_PREFIX."expedition ADD COLUMN date_delivery date DEFAULT NULL AFTER date_expedition";
if ($db->query($sqlAdd1) && $db->query($sqlAdd2))
{
$sqlSelect = "SELECT e.rowid as shipping_id, c.ref_client, c.date_livraison";
$sqlSelect.= " FROM ".MAIN_DB_PREFIX."expedition as e";
$sqlSelect.= ", ".MAIN_DB_PREFIX."element_element as el";
$sqlSelect.= " LEFT JOIN ".MAIN_DB_PREFIX."commande as c ON c.rowid = el.fk_source AND el.sourcetype = 'commande'";
$sqlSelect.= " WHERE e.rowid = el.fk_target";
$sqlSelect.= " AND el.targettype = 'shipping'";
$resql = $db->query($sqlSelect);
if ($resql)
{
$i = 0;
$num = $db->num_rows($resql);
if ($num)
{
while ($i < $num)
{
$obj = $db->fetch_object($resql);
$sqlUpdate = "UPDATE ".MAIN_DB_PREFIX."expedition SET";
$sqlUpdate.= " ref_customer = '".$obj->ref_client."'";
$sqlUpdate.= ", date_delivery = '".($obj->date_livraison?$obj->date_livraison:'null')."'";
$sqlUpdate.= " WHERE rowid = ".$obj->shipping_id;
$result=$db->query($sqlUpdate);
if (! $result)
{
$error++;
dol_print_error($db);
}
print ". ";
$i++;
}
}
else
{
print $langs->trans('AlreadyDone')."<br>\n";
}
if ($error == 0)
{
$db->commit();
}
else
{
dol_print_error($db);
$db->rollback();
}
}
else
{
dol_print_error($db);
$db->rollback();
}
}
else
{
dol_print_error($db);
$db->rollback();
}
}
else
{
print $langs->trans('AlreadyDone')."<br>\n";
}
print '</td></tr>';
}
/*
* Migrate fk_expedition to llx_element_element
*/
function migrate_shipping_delivery($db,$langs,$conf)
{
print '<tr><td colspan="4">';
print '<br>';
print '<b>'.$langs->trans('MigrationShippingDelivery')."</b><br>\n";
$error = 0;
$result = $db->DDLDescTable(MAIN_DB_PREFIX."livraison","fk_expedition");
$obj = $db->fetch_object($result);
if ($obj)
{
dolibarr_install_syslog("upgrade2::migrate_shipping_delivery");
$db->begin();
$sqlSelect = "SELECT rowid, fk_expedition";
$sqlSelect.= " FROM ".MAIN_DB_PREFIX."livraison";
$resql = $db->query($sqlSelect);
if ($resql)
{
$i = 0;
$num = $db->num_rows($resql);
if ($num)
{
while ($i < $num)
{
$obj = $db->fetch_object($resql);
$sqlInsert = "INSERT INTO ".MAIN_DB_PREFIX."element_element (";
$sqlInsert.= "fk_source";
$sqlInsert.= ", sourcetype";
$sqlInsert.= ", fk_target";
$sqlInsert.= ", targettype";
$sqlInsert.= ") VALUES (";
$sqlInsert.= $obj->fk_expedition;
$sqlInsert.= ", 'shipping'";
$sqlInsert.= ", ".$obj->rowid;
$sqlInsert.= ", 'delivery'";
$sqlInsert.= ")";
$result=$db->query($sqlInsert);
if (! $result)
{
$error++;
dol_print_error($db);
}
print ". ";
$i++;
}
}
else
{
print $langs->trans('AlreadyDone')."<br>\n";
}
if ($error == 0)
{
$sqlDrop = "ALTER TABLE ".MAIN_DB_PREFIX."livraison DROP COLUMN fk_expedition";
if ($db->query($sqlDrop))
{
$db->commit();
}
else
{
dol_print_error($db);
$db->rollback();
}
}
else
{
dol_print_error($db);
$db->rollback();
}
}
else
{
dol_print_error($db);
$db->rollback();
}
}
else
{
print $langs->trans('AlreadyDone')."<br>\n";
}
print '</td></tr>';
}
/*
* Migrate shipping ref_customer and date_delivery fields to llx_livraison
*/
function migrate_shipping_delivery2($db,$langs,$conf)
{
print '<tr><td colspan="4">';
print '<br>';
print '<b>'.$langs->trans('MigrationShippingDelivery2')."</b><br>\n";
$error = 0;
$result1 = $db->DDLDescTable(MAIN_DB_PREFIX."livraison","ref_customer");
$result2 = $db->DDLDescTable(MAIN_DB_PREFIX."livraison","date_delivery");
$obj1 = $db->fetch_object($result1);
$obj2 = $db->fetch_object($result2);
if (!$obj1 && !$obj2)
{
dolibarr_install_syslog("upgrade2::migrate_shipping_delivery2");
$db->begin();
$sqlAdd1 = "ALTER TABLE ".MAIN_DB_PREFIX."livraison CHANGE ref_client ref_customer varchar(30)";
$sqlAdd2 = "ALTER TABLE ".MAIN_DB_PREFIX."livraison CHANGE date_livraison date_delivery date DEFAULT NULL";
if ($db->query($sqlAdd1) && $db->query($sqlAdd2))
{
$sqlSelect = "SELECT l.rowid as delivery_id, e.ref_customer, e.date_delivery";
$sqlSelect.= " FROM ".MAIN_DB_PREFIX."livraison as l";
$sqlSelect.= ", ".MAIN_DB_PREFIX."element_element as el";
$sqlSelect.= " LEFT JOIN ".MAIN_DB_PREFIX."expedition as e ON e.rowid = el.fk_source AND el.sourcetype = 'shipping'";
$sqlSelect.= " WHERE l.rowid = el.fk_target";
$sqlSelect.= " AND el.targettype = 'delivery'";
$resql = $db->query($sqlSelect);
if ($resql)
{
$i = 0;
$num = $db->num_rows($resql);
if ($num)
{
while ($i < $num)
{
$obj = $db->fetch_object($resql);
$sqlUpdate = "UPDATE ".MAIN_DB_PREFIX."livraison SET";
$sqlUpdate.= " ref_customer = '".$obj->ref_customer."'";
$sqlUpdate.= ", date_delivery = '".($obj->date_delivery?$obj->date_delivery:'null')."'";
$sqlUpdate.= " WHERE rowid = ".$obj->delivery_id;
$result=$db->query($sqlUpdate);
if (! $result)
{
$error++;
dol_print_error($db);
}
print ". ";
$i++;
}
}
else
{
print $langs->trans('AlreadyDone')."<br>\n";
}
if ($error == 0)
{
$db->commit();
}
else
{
dol_print_error($db);
$db->rollback();
}
}
else
{
dol_print_error($db);
$db->rollback();
}
}
else
{
dol_print_error($db);
$db->rollback();
}
}
else
{
print $langs->trans('AlreadyDone')."<br>\n";
}
print '</td></tr>';
}
/*
* Migration directory
*/

View File

@ -25,6 +25,92 @@
require_once(DOL_DOCUMENT_ROOT."/product.class.php");
function shipping_prepare_head($object)
{
global $langs, $conf, $user;
$langs->load("sendings");
$langs->load("deliveries");
$h = 0;
$head = array();
$head[$h][0] = DOL_URL_ROOT."/expedition/fiche.php?id=".$object->id;
$head[$h][1] = $langs->trans("SendingCard");
$head[$h][2] = 'shipping';
$h++;
if ($conf->livraison_bon->enabled && $user->rights->expedition->livraison->lire && $object->linked_object[0]['linkid'])
{
$head[$h][0] = DOL_URL_ROOT."/livraison/fiche.php?id=".$object->linked_object[0]['linkid'];
$head[$h][1] = $langs->trans("DeliveryCard");
$head[$h][2] = 'delivery';
$h++;
}
// Show more tabs from modules
// Entries must be declared in modules descriptor with line
// $this->tabs = array('entity:MyModule:@mymodule:/mymodule/mypage.php?id=__ID__');
if (is_array($conf->tabs_modules['delivery']))
{
$i=0;
foreach ($conf->tabs_modules['delivery'] as $value)
{
$values=explode(':',$value);
if ($values[2]) $langs->load($values[2]);
$head[$h][0] = DOL_URL_ROOT . preg_replace('/__ID__/i',$commande->id,$values[3]);
$head[$h][1] = $langs->trans($values[1]);
$head[$h][2] = 'tab'.$values[1];
$h++;
}
}
return $head;
}
function delivery_prepare_head($object)
{
global $langs, $conf, $user;
$langs->load("sendings");
$langs->load("deliveries");
$h = 0;
$head = array();
if ($conf->expedition_bon->enabled && $user->rights->expedition->lire)
{
$head[$h][0] = DOL_URL_ROOT."/expedition/fiche.php?id=".$object->origin_id;
$head[$h][1] = $langs->trans("SendingCard");
$head[$h][2] = 'shipping';
$h++;
}
$head[$h][0] = DOL_URL_ROOT."/livraison/fiche.php?id=".$object->id;
$head[$h][1] = $langs->trans("DeliveryCard");
$head[$h][2] = 'delivery';
$h++;
// Show more tabs from modules
// Entries must be declared in modules descriptor with line
// $this->tabs = array('entity:MyModule:@mymodule:/mymodule/mypage.php?id=__ID__');
if (is_array($conf->tabs_modules['delivery']))
{
$i=0;
foreach ($conf->tabs_modules['delivery'] as $value)
{
$values=explode(':',$value);
if ($values[2]) $langs->load($values[2]);
$head[$h][0] = DOL_URL_ROOT . preg_replace('/__ID__/i',$commande->id,$values[3]);
$head[$h][1] = $langs->trans($values[1]);
$head[$h][2] = 'tab'.$values[1];
$h++;
}
}
return $head;
}
/**
* List sendings and receive receipts
*
@ -41,13 +127,13 @@ function show_list_sending_receive($origin='commande',$origin_id,$filter='')
$sql = "SELECT obj.rowid, obj.fk_product, obj.description, obj.product_type as fk_product_type, obj.qty as qty_asked";
$sql.= ", ed.qty as qty_shipped, ed.fk_expedition as expedition_id";
$sql.= ", e.ref as exp_ref, ".$db->pdate("e.date_expedition")." as date_expedition,";
if ($conf->livraison_bon->enabled) $sql .= " l.rowid as livraison_id, l.ref as livraison_ref, ".$db->pdate("l.date_livraison")." as date_delivery, ld.qty as qty_received,";
//if ($conf->livraison_bon->enabled) $sql .= " l.rowid as livraison_id, l.ref as livraison_ref, ".$db->pdate("l.date_delivery")." as date_delivery, ld.qty as qty_received,";
$sql.= ' p.label as product, p.ref, p.fk_product_type, p.rowid as prodid,';
$sql.= ' p.description as product_desc';
$sql.= " FROM (".MAIN_DB_PREFIX."expeditiondet as ed,";
$sql.= " ".MAIN_DB_PREFIX.$origin."det as obj,";
$sql.= " ".MAIN_DB_PREFIX."expedition as e)";
if ($conf->livraison_bon->enabled) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."livraison as l ON l.fk_expedition = e.rowid LEFT JOIN ".MAIN_DB_PREFIX."livraisondet as ld ON ld.fk_livraison = l.rowid AND obj.rowid = ld.fk_origin_line";
//if ($conf->livraison_bon->enabled) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."livraison as l ON l.fk_expedition = e.rowid LEFT JOIN ".MAIN_DB_PREFIX."livraisondet as ld ON ld.fk_livraison = l.rowid AND obj.rowid = ld.fk_origin_line";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON obj.fk_product = p.rowid";
$sql.= " WHERE obj.fk_".$origin." = ".$origin_id;
if ($filter) $sql.=$filter;

View File

@ -128,7 +128,6 @@ if ($_REQUEST["action"] == 'confirm_delete' && $_REQUEST["confirm"] == 'yes' &&
{
$delivery = new Livraison($db);
$delivery->fetch($_GET["id"]);
$expedition_id = $delivery->expedition_id;
$db->begin();
$result=$delivery->delete();
@ -138,7 +137,7 @@ if ($_REQUEST["action"] == 'confirm_delete' && $_REQUEST["confirm"] == 'yes' &&
$db->commit();
if ($conf->expedition_bon->enabled)
{
Header("Location: ".DOL_URL_ROOT.'/expedition/fiche.php?id='.$expedition_id);
Header("Location: ".DOL_URL_ROOT.'/expedition/fiche.php?id='.$delivery->origin_id);
}
else
{
@ -396,7 +395,6 @@ else
if ($delivery->origin_id)
{
$object = $delivery->origin;
$delivery->fetch_object();
}
@ -405,20 +403,8 @@ else
$soc = new Societe($db);
$soc->fetch($delivery->socid);
$h=0;
if ($conf->expedition_bon->enabled)
{
$head[$h][0] = DOL_URL_ROOT."/expedition/fiche.php?id=".$delivery->expedition_id;
$head[$h][1] = $langs->trans("SendingCard");
$h++;
}
$head[$h][0] = DOL_URL_ROOT."/livraison/fiche.php?id=".$delivery->id;
$head[$h][1] = $langs->trans("DeliveryCard");
$hselected = $h;
$h++;
dol_fiche_head($head, $hselected, $langs->trans("Sending"), 0, 'sending');
$head=delivery_prepare_head($delivery);
dol_fiche_head($head, 'delivery', $langs->trans("Sending"), 0, 'sending');
/*
* Confirmation de la suppression
@ -480,7 +466,7 @@ else
// Ref client
print '<tr><td>'.$langs->trans("RefCustomer").'</td>';
print '<td colspan="3">'.$delivery->ref_client."</a></td>\n";
print '<td colspan="3">'.$delivery->ref_customer."</a></td>\n";
print '</tr>';
// Date

View File

@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2005-2010 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2006-2007 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerke@telenet.be>
*
@ -20,10 +20,10 @@
*/
/**
\file htdocs/livraison/livraison.class.php
\ingroup livraison
\brief Fichier de la classe de gestion des bons de livraison
\version $Id$
* \file htdocs/livraison/livraison.class.php
* \ingroup delivery
* \brief Fichier de la classe de gestion des bons de livraison
* \version $Id$
*/
require_once(DOL_DOCUMENT_ROOT."/commonobject.class.php");
@ -34,8 +34,8 @@ if ($conf->commande->enabled) require_once(DOL_DOCUMENT_ROOT."/commande/commande
/**
\class Livraison
\brief Classe de gestion des bons de livraison
* \class Livraison
* \brief Classe de gestion des bons de livraison
*/
class Livraison extends CommonObject
{
@ -50,11 +50,11 @@ class Livraison extends CommonObject
var $origin;
var $origin_id;
var $socid;
var $ref_client;
var $ref_customer;
var $expedition_id;
var $date_livraison;
var $date_delivery;
var $date_creation;
var $date_valid;
@ -98,21 +98,18 @@ class Livraison extends CommonObject
$sql.= "ref";
$sql.= ", entity";
$sql.= ", fk_soc";
$sql.= ", ref_client";
$sql.= ", ref_customer";
$sql.= ", date_creation";
$sql.= ", fk_user_author";
$sql.= ", fk_adresse_livraison";
$sql.= ", fk_expedition";
$sql.= ")";
$sql.= " VALUES (";
$sql.= ") VALUES (";
$sql.= "'(PROV)'";
$sql.= ", ".$conf->entity;
$sql.= ", ".$this->socid;
$sql.= ", '".$this->ref_client."'";
$sql.= ", '".$this->ref_customer."'";
$sql.= ", ".$this->db->idate(mktime());
$sql.= ", ".$user->id;
$sql.= ", ".($this->fk_delivery_address > 0 ? $this->fk_delivery_address : "null");
$sql.= ", ".($this->expedition_id ? $this->expedition_id : "null");
$sql.= ")";
dol_syslog("Livraison::create sql=".$sql, LOG_DEBUG);
@ -131,7 +128,7 @@ class Livraison extends CommonObject
$resql=$this->db->query($sql);
if ($resql)
{
if (! $conf->expedition->enabled)
if (! $conf->expedition_bon->enabled)
{
$commande = new Commande($this->db);
$commande->id = $this->commande_id;
@ -163,15 +160,8 @@ class Livraison extends CommonObject
if (! $conf->expedition_bon->enabled)
{
if ($conf->commande->enabled)
{
$ret = $this->setStatut(2,$this->origin_id,$this->origin);
}
else
{
// TODO definir un statut
$ret = $this->setStatut(9,$this->origin_id,$this->origin);
}
// TODO uniformiser les statuts
$ret = $this->setStatut(2,$this->origin_id,$this->origin);
if (! $ret)
{
$error++;
@ -248,12 +238,12 @@ class Livraison extends CommonObject
{
global $conf;
$sql = "SELECT l.rowid, l.fk_soc, l.date_creation, l.date_valid, l.ref, l.ref_client, l.fk_user_author,";
$sql.=" l.total_ht, l.fk_statut, l.fk_expedition, l.fk_user_valid, l.note, l.note_public";
$sql.= ", l.date_livraison as date_livraison, l.fk_adresse_livraison, l.model_pdf";
$sql.= ", el.fk_source as origin_id";
$sql = "SELECT l.rowid, l.fk_soc, l.date_creation, l.date_valid, l.ref, l.ref_customer, l.fk_user_author,";
$sql.=" l.total_ht, l.fk_statut, l.fk_user_valid, l.note, l.note_public";
$sql.= ", l.date_delivery, l.fk_adresse_livraison, l.model_pdf";
$sql.= ", el.fk_source as origin_id, el.sourcetype as origin";
$sql.= " FROM ".MAIN_DB_PREFIX."livraison as l";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."element_element as el ON l.rowid = el.fk_target";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."element_element as el ON el.fk_target = l.rowid AND el.targettype = '".$this->element."'";
$sql.= " WHERE l.rowid = ".$id;
dol_syslog("Livraison::fetch sql=".$sql, LOG_DEBUG);
@ -265,15 +255,13 @@ class Livraison extends CommonObject
$obj = $this->db->fetch_object($result);
$this->id = $obj->rowid;
$this->date_livraison = $this->db->jdate($obj->date_livraison);
$this->date_delivery = $this->db->jdate($obj->date_delivery);
$this->date_creation = $this->db->jdate($obj->date_creation);
$this->date_valid = $this->db->jdate($obj->date_valid);
$this->ref = $obj->ref;
$this->ref_client = $obj->ref_client;
$this->ref_customer = $obj->ref_customer;
$this->socid = $obj->fk_soc;
$this->statut = $obj->fk_statut;
$this->origin_id = $obj->origin_id;
$this->expedition_id = $obj->fk_expedition;
$this->user_author_id = $obj->fk_user_author;
$this->user_valid_id = $obj->fk_user_valid;
$this->adresse_livraison_id = $obj->fk_adresse_livraison; // TODO obsolete
@ -281,21 +269,11 @@ class Livraison extends CommonObject
$this->note = $obj->note;
$this->note_public = $obj->note_public;
$this->modelpdf = $obj->model_pdf;
$this->origin = $obj->origin;
$this->origin_id = $obj->origin_id;
$this->db->free($result);
if ($this->origin_id)
{
if ($conf->commande->enabled)
{
$this->origin = "commande";
}
else
{
$this->origin = "propal";
}
}
if ($this->statut == 0) $this->brouillon = 1;
$file = $conf->livraison->dir_output . "/" .get_exdir($livraison->id,2) . "/" . $this->id.".pdf";
@ -344,14 +322,14 @@ class Livraison extends CommonObject
if ($user->rights->expedition->livraison->valider)
{
if (defined('LIVRAISON_ADDON'))
if ($conf->global->LIVRAISON_ADDON)
{
if (is_readable(DOL_DOCUMENT_ROOT .'/includes/modules/livraison/'.LIVRAISON_ADDON.'.php'))
// Definition du nom de module de numerotation de commande
$modName = $conf->global->LIVRAISON_ADDON;
if (is_readable(DOL_DOCUMENT_ROOT .'/includes/modules/livraison/'.$modName.'.php'))
{
require_once DOL_DOCUMENT_ROOT .'/includes/modules/livraison/'.LIVRAISON_ADDON.'.php';
// Definition du nom de module de numerotation de commande
$modName=LIVRAISON_ADDON;
require_once DOL_DOCUMENT_ROOT .'/includes/modules/livraison/'.$modName.'.php';
// Recuperation de la nouvelle reference
$objMod = new $modName($this->db);
@ -367,7 +345,12 @@ class Livraison extends CommonObject
// Tester si non deja au statut valide. Si oui, on arrete afin d'eviter
// de decrementer 2 fois le stock.
$sql = "SELECT ref FROM ".MAIN_DB_PREFIX."livraison where ref='".$this->ref."' AND fk_statut <> 0";
$sql = "SELECT ref";
$sql.= " FROM ".MAIN_DB_PREFIX."livraison";
$sql.= " WHERE ref = '".$this->ref."'";
$sql.= " AND fk_statut <> 0";
$sql.= " AND entity = ".$conf->entity;
$resql=$this->db->query($sql);
if ($resql)
{
@ -378,9 +361,14 @@ class Livraison extends CommonObject
}
}
$sql = "UPDATE ".MAIN_DB_PREFIX."livraison ";
$sql.= " SET ref='".addslashes($this->ref)."', fk_statut = 1, date_valid = ".$this->db->idate(mktime()).", fk_user_valid = ".$user->id;
$sql.= " WHERE rowid = ".$this->id." AND fk_statut = 0";
$sql = "UPDATE ".MAIN_DB_PREFIX."livraison SET";
$sql.= " ref='".addslashes($this->ref)."'";
$sql.= ", fk_statut = 1";
$sql.= ", date_valid = ".$this->db->idate(mktime());
$sql.= ", fk_user_valid = ".$user->id;
$sql.= " WHERE rowid = ".$this->id;
$sql.= " AND fk_statut = 0";
$resql=$this->db->query($sql);
if ($resql)
{
@ -390,7 +378,6 @@ class Livraison extends CommonObject
//Enregistrement d'un mouvement de stock pour chaque produit de l'expedition
dol_syslog("livraison.class.php::valid enregistrement des mouvements");
$sql = "SELECT cd.fk_product, cd.subprice, ld.qty ";
@ -491,8 +478,6 @@ class Livraison extends CommonObject
$result=$expedition->fetch($sending_id);
$this->lignes = array();
$this->date_livraison = time();
$this->expedition_id = $sending_id;
for ($i = 0 ; $i < sizeof($expedition->lignes) ; $i++)
{
@ -506,15 +491,15 @@ class Livraison extends CommonObject
$this->lignes[$i] = $LivraisonLigne;
}
$this->origin = $expedition->origin;
$this->origin_id = $expedition->origin_id;
$this->origin = $expedition->element;
$this->origin_id = $expedition->id;
$this->note = $expedition->note;
$this->fk_project = $expedition->fk_project;
$this->date_livraison = $expedition->date_livraison;
$this->date_delivery = $expedition->date_delivery;
$this->adresse_livraison_id = $expedition->adresse_livraison_id; // TODO obsolete
$this->fk_delivery_address = $expedition->adresse_livraison_id;
$this->socid = $expedition->socid;
$this->ref_client = $expedition->ref_client;
$this->ref_customer = $expedition->ref_customer;
return $this->create($user);
}
@ -571,46 +556,60 @@ class Livraison extends CommonObject
$sql.= " WHERE fk_livraison = ".$this->id;
if ( $this->db->query($sql) )
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."livraison";
$sql.= " WHERE rowid = ".$this->id;
$sql = "DELETE FROM ".MAIN_DB_PREFIX."element_element";
$sql.= " WHERE fk_target = ".$this->id;
$sql.= " AND targettype = '".$this->element."'";
if ( $this->db->query($sql) )
{
$this->db->commit();
// On efface le repertoire de pdf provisoire
$livref = dol_sanitizeFileName($this->ref);
if ($conf->livraison->dir_output)
$sql = "DELETE FROM ".MAIN_DB_PREFIX."livraison";
$sql.= " WHERE rowid = ".$this->id;
if ( $this->db->query($sql) )
{
$dir = $conf->livraison->dir_output . "/" . $livref ;
$file = $conf->livraison->dir_output . "/" . $livref . "/" . $livref . ".pdf";
if (file_exists($file))
$this->db->commit();
// On efface le repertoire de pdf provisoire
$livref = dol_sanitizeFileName($this->ref);
if ($conf->livraison->dir_output)
{
if (!dol_delete_file($file))
$dir = $conf->livraison->dir_output . "/" . $livref ;
$file = $conf->livraison->dir_output . "/" . $livref . "/" . $livref . ".pdf";
if (file_exists($file))
{
$this->error=$langs->trans("ErrorCanNotDeleteFile",$file);
return 0;
}
}
if (file_exists($dir))
{
if (!dol_delete_dir($dir))
{
$this->error=$langs->trans("ErrorCanNotDeleteDir",$dir);
return 0;
if (!dol_delete_file($file))
{
$this->error=$langs->trans("ErrorCanNotDeleteFile",$file);
return 0;
}
}
if (file_exists($dir))
{
if (!dol_delete_dir($dir))
{
$this->error=$langs->trans("ErrorCanNotDeleteDir",$dir);
return 0;
}
}
}
return 1;
}
else
{
$this->error=$this->db->lasterror()." - sql=$sql";
$this->db->rollback();
return -3;
}
return 1;
}
else
{
$this->error=$this->db->lasterror()." - sql=$sql";
$this->db->rollback();
return -2;
}
}
else
{
$this->error=$this->db->lasterror()." - sql=$sql";
$this->db->rollback();
return -1;
}
@ -765,7 +764,7 @@ class Livraison extends CommonObject
$this->specimen=1;
$socid = rand(1, $num_socs);
$this->socid = $socids[$socid];
$this->date_livraison = time();
$this->date_delivery = time();
$this->note_public='SPECIMEN';
$i=0;