diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 10c087af07d..d9adb0ccc1a 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -4,6 +4,7 @@ * Copyright (C) 2005-2009 Regis Houssin * Copyright (C) 2007 Franky Van Liedekerke * Copyright (C) 2010-2011 Juanjo Menent + * Copyright (C) 2010-2011 Philippe Grand * * 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 @@ -67,6 +68,8 @@ class CommandeFournisseur extends Commande var $note_public; var $model_pdf; var $fk_project; + var $cond_reglement_id; + var $cond_reglement_code; /** \brief Constructeur @@ -103,10 +106,12 @@ class CommandeFournisseur extends Commande $sql = "SELECT c.rowid, c.ref, c.date_creation, c.fk_soc, c.fk_user_author, c.fk_statut, c.amount_ht, c.total_ht, c.total_ttc, c.tva,"; $sql.= " c.localtax1, c.localtax2, "; - $sql.= " c.date_commande as date_commande, c.fk_projet as fk_project, c.remise_percent, c.source, c.fk_methode_commande,"; + $sql.= " c.date_commande as date_commande, c.fk_cond_reglement, c.fk_projet as fk_project, c.remise_percent, c.source, c.fk_methode_commande,"; $sql.= " c.note, c.note_public, c.model_pdf,"; - $sql.= " cm.libelle as methode_commande"; + $sql.= " cm.libelle as methode_commande,"; + $sql.= " cr.code as cond_reglement_code, cr.libelle as cond_reglement_libelle"; $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur as c"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_payment_term as cr ON (c.fk_cond_reglement = cr.rowid)"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_input_method as cm ON cm.rowid = c.fk_methode_commande"; $sql.= " WHERE c.entity = ".$conf->entity; if ($ref) $sql.= " AND c.ref='".$ref."'"; @@ -139,6 +144,9 @@ class CommandeFournisseur extends Commande $this->source = $obj->source; $this->facturee = $obj->facture; $this->fk_project = $obj->fk_project; + $this->cond_reglement_id = $obj->fk_cond_reglement; + $this->cond_reglement_code = $obj->cond_reglement_code; + $this->cond_reglement = $obj->cond_reglement_libelle;; $this->note = $obj->note; $this->note_public = $obj->note_public; $this->modelpdf = $obj->model_pdf; @@ -1148,6 +1156,39 @@ class CommandeFournisseur extends Commande } } + /** + * \brief Change les conditions de reglement de la commande + * \param cond_reglement_id Id de la nouvelle condition de reglement + * \return int >0 si ok, <0 si ko + */ + function cond_reglement($cond_reglement_id) + { + dol_syslog('CommandeFournisseur::cond_reglement('.$cond_reglement_id.')'); + if ($this->statut >= 0) + { + $sql = 'UPDATE '.MAIN_DB_PREFIX.'commande_fournisseur'; + $sql .= ' SET fk_cond_reglement = '.$cond_reglement_id; + $sql .= ' WHERE rowid='.$this->id; + if ( $this->db->query($sql) ) + { + $this->cond_reglement_id = $cond_reglement_id; + return 1; + } + else + { + dol_syslog('CommandeFournisseur::cond_reglement Erreur '.$sql.' - '.$this->db->error(), LOG_ERR); + $this->error=$this->db->lasterror(); + return -1; + } + } + else + { + dol_syslog('CommandeFournisseur::cond_reglement, etat commande incompatible', LOG_ERR); + $this->error='Etat commande incompatible '.$this->statut; + return -2; + } + } + /** * Set a delivery in database for this supplier order * @param user User that input data diff --git a/htdocs/fourn/commande/fiche.php b/htdocs/fourn/commande/fiche.php index 6d555bc2593..6cfa0d30767 100644 --- a/htdocs/fourn/commande/fiche.php +++ b/htdocs/fourn/commande/fiche.php @@ -4,6 +4,7 @@ * Copyright (C) 2005 Eric Seigne * Copyright (C) 2005-2010 Regis Houssin * Copyright (C) 2010 Juanjo Menent + * Copyright (C) 2011 Philippe Grand * * 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 @@ -68,6 +69,14 @@ $mesg=''; * Actions */ + // conditions de reglement +if ($action == 'setconditions' && $user->rights->fournisseur->commande->creer) +{ + $commande = new CommandeFournisseur($db); + $commande->fetch($id); + $result=$commande->cond_reglement($_POST['cond_reglement_id']); +} + // Set project if ($action == 'classin') { @@ -940,6 +949,1584 @@ if ($id > 0 || ! empty($ref)) print ''.$author->getNomUrl(1).''; print ''; + // Conditions de reglement par defaut + $langs->load('bills'); + $html = new Form($db); + print ''; + print ''; + print '
'; + print $langs->trans('PaymentConditions'); + print ''; + if ($_GET['action'] != 'editconditions') print 'id.'">'.img_edit($langs->trans('SetConditions'),1).'
'; + print ''; + if ($_GET['action'] == 'editconditions') + { + $html->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$commande->id, $commande->cond_reglement_id,'cond_reglement_id'); + } + else + { + $html->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$commande->id, $commande->cond_reglement_id,'none'); + } + print ""; + print ''; + + // Project + if ($conf->projet->enabled) + { + $langs->load('projects'); + print ''; + print ''; + if ($_GET['action'] != 'classer') print ''; + print '
'; + print $langs->trans('Project'); + print ''.img_edit($langs->trans('SetProject')).'
'; + print ''; + //print "$commande->id, $commande->socid, $commande->fk_project"; + if ($_GET['action'] == 'classer') + { + $html->form_project($_SERVER['PHP_SELF'].'?id='.$commande->id, $commande->socid, $commande->fk_project, 'projectid'); + } + else + { + $html->form_project($_SERVER['PHP_SELF'].'?id='.$commande->id, $commande->socid, $commande->fk_project, 'none'); + } + print ''; + print ''; + } + + // Ligne de 3 colonnes + print ''.$langs->trans("AmountHT").''; + print ''.price($commande->total_ht).''; + print ''.$langs->trans("Currency".$conf->monnaie).''; + + print ''.$langs->trans("AmountVAT").''.price($commande->total_tva).''; + print ''.$langs->trans("Currency".$conf->monnaie).''; + + // Amount Local Taxes + if ($mysoc->pays_code=='ES') + { + if ($mysoc->localtax1_assuj=="1") //Localtax1 RE + { + print ''.$langs->transcountry("AmountLT1",$mysoc->pays_code).''; + print ''.price($commande->total_localtax1).''; + print ''.$langs->trans("Currency".$conf->monnaie).''; + } + if ($mysoc->localtax2_assuj=="1") //Localtax2 IRPF + { + print ''.$langs->transcountry("AmountLT2",$mysoc->pays_code).''; + print ''.price($commande->total_localtax2).''; + print ''.$langs->trans("Currency".$conf->monnaie).''; + } + } + print ''.$langs->trans("AmountTTC").''.price($commande->total_ttc).''; + print ''.$langs->trans("Currency".$conf->monnaie).''; + + print ""; + + if ($mesg) print $mesg; + else print '
'; + + /* + * Lines + */ + print ''; + + $num = sizeof($commande->lines); + $i = 0; $total = 0; + + if ($num) + { + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + } + $var=true; + while ($i < $num) + { + $line = $commande->lines[$i]; + $var=!$var; + + // Show product and description + $type=$line->product_type?$line->product_type:$line->fk_product_type; + // Try to enhance type detection using date_start and date_end for free lines where type + // was not saved. + if (! empty($line->date_start)) $type=1; + if (! empty($line->date_end)) $type=1; + + // Ligne en mode visu + if ($_GET['action'] != 'editline' || $_GET['rowid'] != $line->id) + { + print ''; + + // Show product and description + print ''; + + print ''; + + print '\n"; + + print ''; + + if ($line->remise_percent > 0) + { + print '\n"; + } + else + { + print ''; + } + + print ''; + if ($commande->statut == 0 && $user->rights->fournisseur->commande->creer) + { + print ''; + + $actiondelete='delete_product_line'; + print ''; + } + else + { + print ''; + } + print ""; + } + + // Ligne en mode update + if ($_GET["action"] == 'editline' && $user->rights->fournisseur->commande->creer && ($_GET["rowid"] == $line->id)) + { + print "\n"; + print 'id.'" method="post">'; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print '' . "\n"; + print "\n"; + } + $i++; + } + + /* + * Form to add new line + */ + if ($commande->statut == 0 && $user->rights->fournisseur->commande->creer && $_GET["action"] <> 'editline') + { + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + // Add free products/services form + print ''; + print ''; + print ''; + print ''; + + $var=true; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + print ''; + + // Ajout de produits/services predefinis + if ($conf->product->enabled || $conf->service->enabled) + { + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + print ''; + print ''; + print ''; + print ''; + + $var=!$var; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + print ''; + } + } + print '
'.$langs->trans('Label').''.$langs->trans('VAT').''.$langs->trans('PriceUHT').''.$langs->trans('Qty').''.$langs->trans('ReductionShort').''.$langs->trans('TotalHTShort').' 
'; + if ($line->fk_product > 0) + { + print ''; // ancre pour retourner sur la ligne + + $product_static=new ProductFournisseur($db); + $product_static->fetch($line->fk_product); + $text=$product_static->getNomUrl(1,'supplier'); + $text.= ' - '.$product_static->libelle; + $description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($line->description)); + print $html->textwithtooltip($text,$description,3,'','',$i); + + // Show range + print_date_range($line->date_start,$line->date_end); + + // Add description in form + if ($conf->global->PRODUIT_DESC_IN_FORM) print ($line->description && $line->description!=$product_static->libelle)?'
'.dol_htmlentitiesbr($line->description):''; + } + + // Description - Editor wysiwyg + if (! $line->fk_product) + { + if ($type==1) $text = img_object($langs->trans('Service'),'service'); + else $text = img_object($langs->trans('Product'),'product'); + print $text.' '.nl2br($line->description); + + // Show range + print_date_range($line->date_start,$line->date_end); + } + + print '
'.vatrate($line->tva_tx).'%'.price($line->subprice)."'.$line->qty.''.dol_print_reduction($line->remise_percent,$langs)." '.price($line->total_ht).'id.'#'.$line->id.'">'; + print img_edit(); + print ''; + print img_delete(); + print '  
'; + print ''; // ancre pour retourner sur la ligne + if (($conf->product->enabled || $conf->service->enabled) && $line->fk_product > 0) + { + $product_static=new ProductFournisseur($db); + $product_static->fetch($line->fk_product); + $text=$product_static->getNomUrl(1,'supplier'); + $text.= ' - '.$product_static->libelle; + $description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($line->description)); + print $html->textwithtooltip($text,$description,3,'','',$i); + + // Show range + print_date_range($line->date_start,$line->date_end); + print '
'; + } + else + { + print $html->select_type_of_lines($line->product_type,'type',1); + if ($conf->product->enabled && $conf->service->enabled) print '
'; + } + + // Description - Editor wysiwyg + require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php"); + $nbrows=ROWS_2; + if (! empty($conf->global->MAIN_INPUT_DESC_HEIGHT)) $nbrows=$conf->global->MAIN_INPUT_DESC_HEIGHT; + $doleditor=new DolEditor('eldesc',$line->description,'',200,'dolibarr_details','',false,true,$conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS,$nbrows,70); + $doleditor->Create(); + + print '
'; + $html->select_tva('tva_tx',$line->tva_tx); + print '%'; + print '
'; + print ''; // ancre + print $langs->trans('AddNewLine').' - '.$langs->trans("FreeZone").''.$langs->trans('VAT').''.$langs->trans('PriceUHT').''.$langs->trans('Qty').''.$langs->trans('ReductionShort').' 
'; + + $forceall=1; + print $html->select_type_of_lines(isset($_POST["type"])?$_POST["type"]:-1,'type',1,0,$forceall); + if ($forceall || ($conf->product->enabled && $conf->service->enabled) + || (empty($conf->product->enabled) && empty($conf->service->enabled))) print '
'; + + // Editor wysiwyg + require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php"); + $nbrows=ROWS_2; + if (! empty($conf->global->MAIN_INPUT_DESC_HEIGHT)) $nbrows=$conf->global->MAIN_INPUT_DESC_HEIGHT; + $doleditor=new DolEditor('dp_desc',$_POST["dp_desc"],'',100,'dolibarr_details','',false,true,$conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS,$nbrows,70); + $doleditor->Create(); + + print '
'; + //if($soc->tva_assuj == "0") + //print '0'; + //else + print $html->select_tva('tva_tx',($_POST["tva_tx"]?$_POST["tva_tx"]:$conf->defaulttx),$soc,$mysoc); + print 'remise_client).'">%
'; + print $langs->trans("AddNewLine").' - '; + if ($conf->service->enabled) + { + print $langs->trans('RecordedProductsAndServices'); + } + else + { + print $langs->trans('RecordedProducts'); + } + print ''.$langs->trans('Qty').''.$langs->trans('ReductionShort').' 
'; + $html->select_produits_fournisseurs($commande->fourn_id,'','idprodfournprice','',$filtre); + + if (! $conf->global->PRODUIT_USE_SEARCH_TO_SELECT) print '
'; + + // Editor wysiwyg + require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php"); + $nbrows=ROWS_2; + if (! empty($conf->global->MAIN_INPUT_DESC_HEIGHT)) $nbrows=$conf->global->MAIN_INPUT_DESC_HEIGHT; + $doleditor=new DolEditor('np_desc',$_POST["np_desc"],'',100,'dolibarr_details','',false,true,$conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS,$nbrows,70); + $doleditor->Create(); + + print '
remise_client).'">%
'; + print ''; + + + if ($_GET['action'] != 'presend') + { + + /** + * Boutons actions + */ + if ($user->societe_id == 0 && $_GET['action'] != 'editline' && $_GET['action'] != 'delete') + { + print '
'; + + // Validate + if ($commande->statut == 0 && $num > 0) + { + if ($user->rights->fournisseur->commande->valider) + { + print ''.$langs->trans('Validate').''; + } + } + + // Approve + if ($commande->statut == 1) + { + if ($user->rights->fournisseur->commande->approuver) + { + print ''.$langs->trans("ApproveOrder").''; + print ''.$langs->trans("RefuseOrder").''; + } + else + { + print ''.$langs->trans("ApproveOrder").''; + print ''.$langs->trans("RefuseOrder").''; + } + } + + // Send + if (in_array($commande->statut,array(2,3,4,5))) + { + if ($user->rights->fournisseur->commande->commander) + { + $comref = dol_sanitizeFileName($commande->ref); + $file = $conf->fournisseur->commande->dir_output . '/'.$comref.'/'.$comref.'.pdf'; + if (file_exists($file)) + { + print ''.$langs->trans('SendByMail').''; + } + } + } + + // Reopen + if ($commande->statut == 5 || $commande->statut == 6 || $commande->statut == 7 || $commande->statut == 9) + { + if ($user->rights->fournisseur->commande->commander) + { + print ''.$langs->trans("ReOpen").''; + } + } + + // Create bill + if ($conf->fournisseur->enabled && $commande->statut >= 2) // 2 means accepted + { + if ($user->rights->fournisseur->facture->creer) + { + print ''.$langs->trans("CreateBill").''; + } + + //if ($user->rights->fournisseur->commande->creer && $object->statut > 2) + //{ + // print ''.$langs->trans("ClassifyBilled").''; + //} + } + + // Cancel + if ($commande->statut == 2) + { + if ($user->rights->fournisseur->commande->commander) + { + print ''.$langs->trans("CancelOrder").''; + } + } + + // Delete + if ($user->rights->fournisseur->commande->supprimer) + { + print ''.$langs->trans("Delete").''; + } + + + print "
"; + } + + + print '
'; + print ''; // ancre + + /* + * Documents generes + */ + $comfournref = dol_sanitizeFileName($commande->ref); + $file = $conf->fournisseur->dir_output . '/commande/' . $comfournref . '/' . $comfournref . '.pdf'; + $relativepath = $comfournref.'/'.$comfournref.'.pdf'; + $filedir = $conf->fournisseur->dir_output . '/commande/' . $comfournref; + $urlsource=$_SERVER["PHP_SELF"]."?id=".$commande->id; + $genallowed=$user->rights->fournisseur->commande->creer; + $delallowed=$user->rights->fournisseur->commande->supprimer; + + $somethingshown=$formfile->show_documents('commande_fournisseur',$comfournref,$filedir,$urlsource,$genallowed,$delallowed,$commande->modelpdf); + + $object=$commande; + + /* + * Linked object block + */ + $object->load_object_linked($object->id,$object->element); + + foreach($object->linked_object as $linked_object => $linked_objectid) + { + $tmpmodule=$linked_object; + if ($linked_object == 'invoice_supplier') $tmpmodule='fournisseur'; + if ($linked_object == 'order_supplier') $tmpmodule='fournisseur'; + if($conf->$tmpmodule->enabled && $linked_object != $object->element) + { + $somethingshown=$object->showLinkedObjectBlock($linked_object,$linked_objectid,$somethingshown); + } + } + + + print ''; + + if ( $user->rights->fournisseur->commande->commander && $commande->statut == 2) + { + /** + * Commander (action=commande) + */ + print '
'; + print '
'; + print ''; + print ''; + print ''; + print ''; + print ''; + + print ''; + + print ''; + print ''; + print '
'.$langs->trans("ToOrder").'
'.$langs->trans("OrderDate").''; + $date_com = dol_mktime(0,0,0,$_POST["remonth"],$_POST["reday"],$_POST["reyear"]); + print $html->select_date($date_com,'','','','',"commande"); + print '
'.$langs->trans("OrderMode").''; + $formorder->select_methodes_commande($_POST["methodecommande"],"methodecommande",1); + print '
'.$langs->trans("Comment").'
'; + print '
'; + } + + if ( $user->rights->fournisseur->commande->receptionner && ($commande->statut == 3 ||$commande->statut == 4 )) + { + /** + * Receptionner (action=livraison) + */ + print '
'; + print '
'; + print ''; + print ''; + print ''; + print ''; + print '\n"; + + print "'; + print ''; + print ''; + print "
'.$langs->trans("Receive").'
'.$langs->trans("DeliveryDate").''; + print $html->select_date('','','','','',"commande"); + print "
".$langs->trans("Delivery")."\n"; + $liv = array(); + $liv[''] = ' '; + $liv['tot'] = $langs->trans("TotalWoman"); + $liv['par'] = $langs->trans("PartialWoman"); + $liv['nev'] = $langs->trans("NeverReceived"); + $liv['can'] = $langs->trans("Canceled"); + + print $html->selectarray("type",$liv); + + print '
'.$langs->trans("Comment").'
\n"; + print "
\n"; + } + + // List of actions on element + /* Hidden because" available into "Log" tab + print '
'; + include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'); + $formactions=new FormActions($db); + $somethingshown=$formactions->showactions($commande,'order_supplier',$socid); + */ + + print '
'; + } + + + + /* + * Action presend + * + */ + if ($_GET['action'] == 'presend') + { + $ref = dol_sanitizeFileName($commande->ref); + $file = $conf->fournisseur->commande->dir_output . '/' . $ref . '/' . $ref . '.pdf'; + + print '
'; + print_titre($langs->trans('SendOrderByMail')); + + // Cree l'objet formulaire mail + include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'); + $formmail = new FormMail($db); + $formmail->fromtype = 'user'; + $formmail->fromid = $user->id; + $formmail->fromname = $user->getFullName($langs); + $formmail->frommail = $user->email; + $formmail->withfrom=1; + $formmail->withto=empty($_POST["sendto"])?1:$_POST["sendto"]; + $formmail->withtosocid=$soc->id; + $formmail->withtocc=1; + $formmail->withtoccsocid=0; + $formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC; + $formmail->withtocccsocid=0; + $formmail->withtopic=$langs->trans('SendOrderRef','__ORDERREF__'); + $formmail->withfile=2; + $formmail->withbody=1; + $formmail->withdeliveryreceipt=1; + $formmail->withcancel=1; + // Tableau des substitutions + $formmail->substit['__ORDERREF__']=$commande->ref; + // Tableau des parametres complementaires + $formmail->param['action']='send'; + $formmail->param['models']='order_supplier_send'; + $formmail->param['orderid']=$commande->id; + $formmail->param['returnurl']=$_SERVER["PHP_SELF"].'?id='.$commande->id; + + // Init list of files + if (! empty($_REQUEST["mode"]) && $_REQUEST["mode"]=='init') + { + $formmail->clear_attached_files(); + $formmail->add_attached_files($file,dol_sanitizeFilename($ref.'.pdf'),'application/pdf'); + } + + // Show form + $formmail->show_form(); + + print '
'; + } + + print ''; + + } + else + { + // Commande non trouvee + dol_print_error($db); + } +} + +$db->close(); + +llxFooter('$Date$ - $Revision$'); +?> + + * Copyright (C) 2004-2010 Laurent Destailleur + * Copyright (C) 2005 Eric Seigne + * Copyright (C) 2005-2010 Regis Houssin + * Copyright (C) 2010 Juanjo Menent + * Copyright (C) 2011 Philippe Grand + * + * 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. + */ + +/** + * \file htdocs/fourn/commande/fiche.php + * \ingroup supplier, order + * \brief Card supplier order + * \version $Id$ + */ + +require("../../main.inc.php"); +require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php"); +require_once(DOL_DOCUMENT_ROOT."/core/class/html.formorder.class.php"); +require_once(DOL_DOCUMENT_ROOT.'/includes/modules/supplier_order/modules_commandefournisseur.php'); +require_once DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.commande.class.php"; +require_once DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.product.class.php"; +require_once DOL_DOCUMENT_ROOT."/product/class/product.class.php"; +require_once DOL_DOCUMENT_ROOT."/lib/fourn.lib.php"; +require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php"); +if ($conf->projet->enabled) require_once(DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'); + +$langs->load('orders'); +$langs->load('sendings'); +$langs->load('companies'); +$langs->load('bills'); +$langs->load('propal'); +$langs->load('deliveries'); +$langs->load('products'); +$langs->load('stocks'); + +$comclientid = GETPOST("comid"); +$socid = GETPOST("socid"); +$action = GETPOST('action'); + + +// Security check +$id = GETPOST("id"); +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'commande_fournisseur', $id,''); + +// Recuperation de l'id de projet +$projectid = 0; +if ($_GET["projectid"]) $projectid = $_GET["projectid"]; + +$mesg=''; + + +/* + * Actions + */ + + // conditions de reglement +if ($action == 'setconditions' && $user->rights->fournisseur->commande->creer) +{ + $commande = new CommandeFournisseur($db); + $commande->fetch($id); + $result=$commande->cond_reglement($_POST['cond_reglement_id']); +} + +// Set project +if ($action == 'classin') +{ + $commande = new CommandeFournisseur($db); + $commande->fetch($id); + $commande->setProject($_POST["projectid"]); +} + +if ($action == 'setremisepercent' && $user->rights->fournisseur->commande->creer) +{ + $commande = new CommandeFournisseur($db); + $commande->fetch($id); + $result = $commande->set_remise($user, $_POST['remise_percent']); +} + +if ($action == 'reopen' && $user->rights->fournisseur->commande->approuver) +{ + $order = new CommandeFournisseur($db); + $result = $order->fetch($id); + if ($order->statut == 5 || $order->statut == 6 || $order->statut == 7 || $order->statut == 9) + { + if ($order->statut == 5) $newstatus=4; // Received->Received partially + if ($order->statut == 6) $newstatus=2; // Canceled->Approved + if ($order->statut == 7) $newstatus=3; // Canceled->Process running + if ($order->statut == 9) $newstatus=1; // Refused->Validated + + $result = $order->setStatus($user,$newstatus); + if ($result > 0) + { + Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$_REQUEST['id']); + exit; + } + else + { + $mesg='
'.$order->error.'
'; + } + } +} + +/* + * Add a line into product + */ +if ($action == 'addline' && $user->rights->fournisseur->commande->creer) +{ + if (($_POST['qty'] || $_POST['pqty']) && (($_POST['pu'] && ($_POST['np_desc'] || $_POST['dp_desc'])) || $_POST['idprodfournprice'])) + { + $commande = new CommandeFournisseur($db); + $ret=$commande->fetch($id); + if ($ret < 0) + { + dol_print_error($db,$commande->error); + exit; + } + + // Ecrase $pu par celui du produit + // Ecrase $desc par celui du produit + // Ecrase $txtva par celui du produit + if ($_POST["idprodfournprice"]) // >0 or -1 + { + $qty = $_POST['qty'] ? $_POST['qty'] : $_POST['pqty']; + + $product = new ProductFournisseur($db); + $idprod=$product->get_buyprice($_POST['idprodfournprice'], $qty); + + //$societe=''; + if ($commande->socid) + { + $societe=new Societe($db); + $societe->fetch($commande->socid); + } + + if ($idprod > 0) + { + $res=$product->fetch($idprod); + + // cas special pour lequel on a les meme reference que le fournisseur + // $label = '['.$nv_prod->ref.'] - '. $nv_prod->libelle; + $label = $product->libelle; + + $desc = $product->description; + $desc.= $product->description && $_POST['np_desc'] ? "\n" : ""; + $desc.= $_POST['np_desc']; + + $remise_percent = $_POST["remise_percent"] ? $_POST["remise_percent"] : $_POST["p_remise_percent"]; + + $tva_tx = get_default_tva($societe,$mysoc,$product->id); + $type = $product->type; + + // Local Taxes + $localtax1_tx= get_localtax($tva_tx, 1, $societe); + $localtax2_tx= get_localtax($tva_tx, 2, $societe); + + $result=$commande->addline( + $desc, + $pu, + $qty, + $tva_tx, + $localtax1_tx, + $localtax2_tx, + $product->id, + $_POST['idprodfournprice'], + $product->fourn_ref, + $remise_percent, + 'HT', + $type + ); + } + if ($idprod == -1) + { + // Quantity too low + $langs->load("errors"); + $mesg='
'.$langs->trans("ErrorQtyTooLowForThisSupplier").'
'; + } + } + else + { + $type=$_POST["type"]; + $desc=$_POST['dp_desc']; + $tva_tx = price2num($_POST['tva_tx']); + + // Local Taxes + $localtax1_tx= get_localtax($tva_tx, 1, $societe); + $localtax2_tx= get_localtax($tva_tx, 2, $societe); + + if (! $_POST['dp_desc']) + { + $mesg='
'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("Label")).'
'; + } + else + { + if (!empty($_POST['pu'])) + { + $price_base_type = 'HT'; + $ht = price2num($_POST['pu']); + $result=$commande->addline($desc, $ht, $_POST['qty'], $tva_tx, $localtax1_tx, $localtax2_tx, 0, 0, '', $_POST['remise_percent'], $price_base_type, 0, $type); + } + else + { + $ttc = price2num($_POST['amountttc']); + $ht = $ttc / (1 + ($tauxtva / 100)); + $price_base_type = 'HT'; + $result=$commande->addline($desc, $ht, $_POST['qty'], $tva_tx, $localtax1_tx, $localtax2_tx, 0, 0, '', $_POST['remise_percent'], $price_base_type, $ttc, $type); + } + } + } + + //print "xx".$tva_tx; exit; + if ($result > 0) + { + $outputlangs = $langs; + if (! empty($_REQUEST['lang_id'])) + { + $outputlangs = new Translate("",$conf); + $outputlangs->setDefaultLang($_REQUEST['lang_id']); + } + supplier_order_pdf_create($db, $commande, $commande->modelpdf, $outputlangs); + + unset($_POST['qty']); + unset($_POST['type']); + unset($_POST['idprodfournprice']); + unset($_POST['remmise_percent']); + unset($_POST['dp_desc']); + unset($_POST['np_desc']); + unset($_POST['pu']); + unset($_POST['tva_tx']); + unset($localtax1_tx); + unset($localtax2_tx); + } + else if (empty($mesg)) + { + $mesg='
'.$commande->error.'
'; + } + } +} + +/* + * Mise a jour d'une ligne dans la commande + */ +if ($action == 'updateligne' && $user->rights->fournisseur->commande->creer && $_POST['save'] == $langs->trans('Save')) +{ + $product=new Product($db); + if ($_POST["elrowid"]) + { + if ($product->fetch($_POST["elrowid"]) < 0) dol_print_error($db); + } + $commande = new CommandeFournisseur($db,"",$id); + if ($commande->fetch($id) < 0) dol_print_error($db); + + $societe=new Societe($db); + $societe->fetch($commande->socid); + + $localtax1_tx=get_localtax($_POST['tva_tx'],1,$societe); + $localtax2_tx=get_localtax($_POST['tva_tx'],2,$societe); + + $result = $commande->updateline($_POST['elrowid'], + $_POST['eldesc'], + $_POST['pu'], + $_POST['qty'], + $_POST['remise_percent'], + $_POST['tva_tx'], + $localtax1_tx, + $localtax2_tx, + 'HT', + 0, + isset($_POST["type"])?$_POST["type"]:$product->type + ); + + if ($result >= 0) + { + $outputlangs = $langs; + if (! empty($_REQUEST['lang_id'])) + { + $outputlangs = new Translate("",$conf); + $outputlangs->setDefaultLang($_REQUEST['lang_id']); + } + supplier_order_pdf_create($db, $commande, $commande->modelpdf, $outputlangs); + } + else + { + dol_print_error($db,$commande->error); + exit; + } +} + +if ($action == 'confirm_deleteproductline' && $_REQUEST['confirm'] == 'yes') +{ + if ($user->rights->fournisseur->commande->creer) + { + $commande = new CommandeFournisseur($db); + $commande->fetch($id); + $result = $commande->deleteline($_GET['lineid']); + + $outputlangs = $langs; + if (! empty($_REQUEST['lang_id'])) + { + $outputlangs = new Translate("",$conf); + $outputlangs->setDefaultLang($_REQUEST['lang_id']); + } + supplier_order_pdf_create($db, $commande, $commande->modelpdf, $outputlangs); + } +} + +if ($action == 'confirm_valid' && $_REQUEST['confirm'] == 'yes' && $user->rights->fournisseur->commande->valider) +{ + $commande = new CommandeFournisseur($db); + $commande->fetch($id); + + $commande->date_commande=dol_now(); + $result = $commande->valid($user); + if ($result >= 0) + { + $outputlangs = $langs; + if (! empty($_REQUEST['lang_id'])) + { + $outputlangs = new Translate("",$conf); + $outputlangs->setDefaultLang($_REQUEST['lang_id']); + } + supplier_order_pdf_create($db, $commande, $commande->modelpdf, $outputlangs); + } + else + { + $mesg=$commande->error; + } + + // If we have permission, we go directly on approved step + if ($user->rights->fournisseur->commande->approuver) + { + $action='confirm_approve'; + } +} + +if ($action == 'confirm_approve' && $_REQUEST["confirm"] == 'yes' && $user->rights->fournisseur->commande->approuver) +{ + $commande = new CommandeFournisseur($db); + $commande->fetch($id); + $result = $commande->approve($user); + if ($result > 0) + { + Header("Location: fiche.php?id=".$id); + exit; + } + else + { + $mesg=$commande->error; + } +} + +if ($action == 'confirm_refuse' && $_REQUEST['confirm'] == 'yes' && $user->rights->fournisseur->commande->approuver) +{ + $commande = new CommandeFournisseur($db); + $commande->fetch($id); + $result = $commande->refuse($user); + if ($result > 0) + { + Header("Location: fiche.php?id=".$id); + exit; + } + else + { + $mesg=$commande->error; + } +} + +if ($action == 'confirm_commande' && $_REQUEST['confirm'] == 'yes' && $user->rights->fournisseur->commande->commander) +{ + $commande = new CommandeFournisseur($db); + $commande->fetch($id); + $result = $commande->commande($user, $_REQUEST["datecommande"], $_REQUEST["methode"], $_REQUEST['comment']); + if ($result > 0) + { + Header("Location: fiche.php?id=".$id); + exit; + } + else + { + $mesg=$commande->error; + } +} + + +if ($action == 'confirm_delete' && $_REQUEST['confirm'] == 'yes' && $user->rights->fournisseur->commande->supprimer) +{ + $commande = new CommandeFournisseur($db); + $commande->fetch($id); + $result=$commande->delete($user); + if ($result > 0) + { + Header("Location: ".DOL_URL_ROOT.'/fourn/commande/liste.php'); + exit; + } + else + { + $mesg=$commande->error; + } +} + +// Receive +if ($_POST["action"] == 'livraison' && $user->rights->fournisseur->commande->receptionner) +{ + $commande = new CommandeFournisseur($db); + $commande->fetch($id); + + if ($_POST["type"]) + { + $date_liv = dol_mktime(0,0,0,$_POST["remonth"],$_POST["reday"],$_POST["reyear"]); + + $result = $commande->Livraison($user, $date_liv, $_POST["type"], $_POST["comment"]); + if ($result > 0) + { + Header("Location: fiche.php?id=".$id); + exit; + } + else if($result == -3) + { + $mesg='
'.$langs->trans("NotAuthorized").'
'; + } + else + { + dol_print_error($db,$commande->error); + exit; + } + } + else + { + $mesg='
'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("Delivery")).'
'; + } +} + +if ($action == 'confirm_cancel' && $_REQUEST["confirm"] == 'yes' && $user->rights->fournisseur->commande->commander) +{ + $commande = new CommandeFournisseur($db); + $commande->fetch($id); + $result = $commande->cancel($user); + if ($result > 0) + { + Header("Location: fiche.php?id=".$id); + exit; + } + else + { + $mesg=$commande->error; + } +} + +// Line ordering + +if ($_GET['action'] == 'up' && $user->rights->fournisseur->commande->creer) +{ + $commande = new CommandeFournisseur($db,'',$id); + $commande->fetch($id); + $commande->line_up($_GET['rowid']); + + $outputlangs = $langs; + if (! empty($_REQUEST['lang_id'])) + { + $outputlangs = new Translate("",$conf); + $outputlangs->setDefaultLang($_REQUEST['lang_id']); + } + supplier_order_pdf_create($db, $commande, $commande->modelpdf, $outputlangs); + Header ('Location: '.$_SERVER["PHP_SELF"].'?id='.$id.(empty($conf->global->MAIN_JUMP_TAG)?'':'#'.$_GET['rowid'])); + exit; +} + +if ($_GET['action'] == 'down' && $user->rights->fournisseur->commande->creer) +{ + $commande = new CommandeFournisseur($db,'',$id); + $commande->fetch($id); + $commande->line_down($_GET['rowid']); + + $outputlangs = $langs; + if (! empty($_REQUEST['lang_id'])) + { + $outputlangs = new Translate("",$conf); + $outputlangs->setDefaultLang($_REQUEST['lang_id']); + } + supplier_order_pdf_create($db, $commande, $commande->modelpdf, $outputlangs); + Header ('Location: '.$_SERVER["PHP_SELF"].'?id='.$id.(empty($conf->global->MAIN_JUMP_TAG)?'':'#'.$_GET['rowid'])); + exit; +} + + +if ($action == 'builddoc') // En get ou en post +{ + // Build document + + // Sauvegarde le dernier module choisi pour generer un document + $commande = new CommandeFournisseur($db); + $commande->fetch($_REQUEST['id']); + if ($_REQUEST['model']) + { + $commande->setDocModel($user, $_REQUEST['model']); + } + + $outputlangs = $langs; + if (! empty($_REQUEST['lang_id'])) + { + $outputlangs = new Translate("",$conf); + $outputlangs->setDefaultLang($_REQUEST['lang_id']); + } + $result=supplier_order_pdf_create($db, $commande,$commande->modelpdf,$outputlangs); + if ($result <= 0) + { + dol_print_error($db,$result); + exit; + } + else + { + Header ('Location: '.$_SERVER["PHP_SELF"].'?id='.$commande->id.(empty($conf->global->MAIN_JUMP_TAG)?'':'#builddoc')); + exit; + } +} + +// Delete file in doc form +if ($action=='remove_file') +{ + require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); + $commande = new CommandeFournisseur($db); + + if ($commande->fetch($id)) + { + $upload_dir = $conf->fournisseur->commande->dir_output . "/"; + $file = $upload_dir . '/' . $_GET['file']; + dol_delete_file($file); + $mesg = '
'.$langs->trans("FileWasRemoved").'
'; + } +} + + +/* + * Create an order + */ +if ($action == 'create') +{ + $fourn = new Fournisseur($db); + $result=$fourn->fetch($socid); + + $db->begin(); + + $orderid=$fourn->create_commande($user); + + if ($orderid > 0) + { + $idc = $fourn->single_open_commande; + + if ($comclientid != '') + { + $fourn->updateFromCommandeClient($user,$idc,$comclientid); + + } + + $id=$orderid; + $_GET['id']=$id; + $_REQUEST['id']=$id; + $db->commit(); + } + else + { + $db->rollback(); + $mesg=$fourn->error; + } +} + +/* + * Add file in email form + */ +if ($_POST['addfile']) +{ + require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); + + // Set tmp user directory TODO Use a dedicated directory for temp mails files + $vardir=$conf->user->dir_output."/".$user->id; + $upload_dir = $vardir.'/temp/'; + + $mesg=dol_add_file_process($upload_dir,0,0); + + $_GET["action"]='presend'; + $_POST["action"]='presend'; +} + +/* + * Remove file in email form + */ +if (! empty($_POST['removedfile'])) +{ + require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); + + // Set tmp user directory + $vardir=$conf->user->dir_output."/".$user->id; + $upload_dir = $vardir.'/temp/'; + + $mesg=dol_remove_file_process($_POST['removedfile'],0); + + $_GET["action"]='presend'; + $_POST["action"]='presend'; +} + +/* + * Send mail + */ +if ($_POST['action'] == 'send' && ! $_POST['addfile'] && ! $_POST['removedfile'] && ! $_POST['cancel']) +{ + $langs->load('mails'); + + $commande= new CommandeFournisseur($db); + $result=$commande->fetch($_POST['orderid']); + $result=$commande->fetch_thirdparty(); + + if ($result > 0) + { + $ref = dol_sanitizeFileName($commande->ref); + $file = $conf->fournisseur->commande->dir_output . '/' . $ref . '/' . $ref . '.pdf'; + + if (is_readable($file)) + { + if ($_POST['sendto']) + { + // Le destinataire a ete fourni via le champ libre + $sendto = $_POST['sendto']; + $sendtoid = 0; + } + elseif ($_POST['receiver']) + { + // Le destinataire a ete fourni via la liste deroulante + if ($_POST['receiver'] < 0) // Id du tiers + { + $sendto = $commande->client->email; + $sendtoid = 0; + } + else // Id du contact + { + $sendto = $commande->client->contact_get_property($_POST['receiver'],'email'); + $sendtoid = $_POST['receiver']; + } + } + + if (dol_strlen($sendto)) + { + $langs->load("commercial"); + + $from = $_POST['fromname'] . ' <' . $_POST['frommail'] .'>'; + $replyto = $_POST['replytoname']. ' <' . $_POST['replytomail'].'>'; + $message = $_POST['message']; + $sendtocc = $_POST['sendtocc']; + $deliveryreceipt = $_POST['deliveryreceipt']; + + if ($_POST['action'] == 'send') + { + if (dol_strlen($_POST['subject'])) $subject=$_POST['subject']; + else $subject = $langs->transnoentities('CustomerOrder').' '.$commande->ref; + $actiontypecode='AC_SUP_ORD'; + $actionmsg = $langs->transnoentities('MailSentBy').' '.$from.' '.$langs->transnoentities('To').' '.$sendto.".\n"; + if ($message) + { + $actionmsg.=$langs->transnoentities('MailTopic').": ".$subject."\n"; + $actionmsg.=$langs->transnoentities('TextUsedInTheMessageBody').":\n"; + $actionmsg.=$message; + } + $actionmsg2=$langs->transnoentities('Action'.$actiontypecode); + } + + // Create form object + include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'); + $formmail = new FormMail($db); + + $attachedfiles=$formmail->get_attached_files(); + $filepath = $attachedfiles['paths']; + $filename = $attachedfiles['names']; + $mimetype = $attachedfiles['mimes']; + + // Send mail + require_once(DOL_DOCUMENT_ROOT.'/lib/CMailFile.class.php'); + $mailfile = new CMailFile($subject,$sendto,$from,$message,$filepath,$mimetype,$filename,$sendtocc,'',$deliveryreceipt); + if ($mailfile->error) + { + $mesg='
'.$mailfile->error.'
'; + } + else + { + $result=$mailfile->sendfile(); + if ($result) + { + $mesg=$langs->trans('MailSuccessfulySent',$from,$sendto); // Must not contain " + + $error=0; + + // Initialisation donnees + $commande->sendtoid=$sendtoid; + $commande->actiontypecode=$actiontypecode; + $commande->actionmsg = $actionmsg; + $commande->actionmsg2= $actionmsg2; + $commande->supplierorderrowid=$commande->id; + + // Appel des triggers + include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); + $interface=new Interfaces($db); + $result=$interface->run_triggers('ORDER_SUPPLIER_SENTBYMAIL',$commande,$user,$langs,$conf); + if ($result < 0) { $error++; $this->errors=$interface->errors; } + // Fin appel triggers + + if ($error) + { + dol_print_error($db); + } + else + { + // Redirect here + // This avoid sending mail twice if going out and then back to page + Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$commande->id.'&mesg='.urlencode($mesg)); + exit; + } + } + else + { + $langs->load("other"); + $mesg='
'; + if ($mailfile->error) + { + $mesg.=$langs->trans('ErrorFailedToSendMail',$from,$sendto); + $mesg.='
'.$mailfile->error; + } + else + { + $mesg.='No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS'; + } + $mesg.='
'; + } + } + } + else + { + $langs->load("other"); + $mesg='
'.$langs->trans('ErrorMailRecipientIsEmpty').' !
'; + $_GET["action"]='presend'; + dol_syslog('Recipient email is empty'); + } + } + else + { + $langs->load("other"); + $mesg='
'.$langs->trans('ErrorCantReadFile',$file).'
'; + dol_syslog('Failed to read file: '.$file); + } + } + else + { + $langs->load("other"); + $mesg='
'.$langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")).'
'; + dol_syslog('Impossible de lire les donnees de la facture. Le fichier facture n\'a peut-etre pas ete genere.'); + } +} + + +/* + * View + */ + +llxHeader('',$langs->trans("OrderCard"),"CommandeFournisseur"); + +$html = new Form($db); +$formfile = new FormFile($db); +$formorder = new FormOrder($db); +$productstatic = new Product($db); + + +/* *************************************************************************** */ +/* */ +/* Mode vue et edition */ +/* */ +/* *************************************************************************** */ + +$now=dol_now(); + +$id = $_REQUEST['id']; +$ref= $_REQUEST['ref']; + +if ($id > 0 || ! empty($ref)) +{ + //if ($mesg) print $mesg.'
'; + + $commande = new CommandeFournisseur($db); + + $result=$commande->fetch($id,$ref); + if ($result >= 0) + { + $soc = new Societe($db); + $soc->fetch($commande->socid); + + $author = new User($db); + $author->fetch($commande->user_author_id); + + $head = ordersupplier_prepare_head($commande); + + $title=$langs->trans("SupplierOrder"); + dol_fiche_head($head, 'card', $title, 0, 'order'); + + /* + * Confirmation de la suppression de la commande + */ + if ($_GET['action'] == 'delete') + { + $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$id, $langs->trans('DeleteOrder'), $langs->trans('ConfirmDeleteOrder'), 'confirm_delete', '', 0, 2); + if ($ret == 'html') print '
'; + } + + /* + * Confirmation de la validation + */ + if ($_GET['action'] == 'valid') + { + $commande->date_commande=gmmktime(); + + // We check if number is temporary number + if (preg_match('/^[\(]?PROV/i',$commande->ref)) $newref = $commande->getNextNumRef($soc); + else $newref = $commande->ref; + + $text=$langs->trans('ConfirmValidateOrder',$newref); + if ($conf->notification->enabled) + { + require_once(DOL_DOCUMENT_ROOT ."/core/class/notify.class.php"); + $notify=new Notify($db); + $text.='
'; + $text.=$notify->confirmMessage(3,$commande->socid); + } + + $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$id, $langs->trans('ValidateOrder'), $text, 'confirm_valid', '', 0, 1); + if ($ret == 'html') print '
'; + } + /* + * Confirmation de l'approbation + */ + if ($_GET['action'] == 'approve') + { + $ret=$html->form_confirm("fiche.php?id=$commande->id",$langs->trans("ApproveThisOrder"),$langs->trans("ConfirmApproveThisOrder",$commande->ref),"confirm_approve", '', 1, 1); + if ($ret == 'html') print '
'; + } + /* + * Confirmation de la desapprobation + */ + if ($_GET['action'] == 'refuse') + { + $ret=$html->form_confirm("fiche.php?id=$commande->id",$langs->trans("DenyingThisOrder"),$langs->trans("ConfirmDenyingThisOrder",$commande->ref),"confirm_refuse", '', 0, 1); + if ($ret == 'html') print '
'; + } + /* + * Confirmation de l'annulation + */ + if ($_GET['action'] == 'cancel') + { + $ret=$html->form_confirm("fiche.php?id=$commande->id",$langs->trans("Cancel"),$langs->trans("ConfirmCancelThisOrder",$commande->ref),"confirm_cancel", '', 0, 1); + if ($ret == 'html') print '
'; + } + + /* + * Confirmation de l'envoi de la commande + */ + if ($_GET["action"] == 'commande') + { + $date_com = dol_mktime(0,0,0,$_POST["remonth"],$_POST["reday"],$_POST["reyear"]); + $ret=$html->form_confirm("fiche.php?id=".$commande->id."&datecommande=".$date_com."&methode=".$_POST["methodecommande"]."&comment=".urlencode($_POST["comment"]), + $langs->trans("MakeOrder"),$langs->trans("ConfirmMakeOrder",dol_print_date($date_com,'day')),"confirm_commande",'',0,2); + if ($ret == 'html') print '
'; + } + + /* + * Confirmation de la suppression d'une ligne produit + */ + if ($_GET['action'] == 'delete_product_line') + { + $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$commande->id.'&lineid='.$_GET["lineid"], $langs->trans('DeleteProductLine'), $langs->trans('ConfirmDeleteProductLine'), 'confirm_deleteproductline','',0,2); + if ($ret == 'html') print '
'; + } + + /* + * Commande + */ + $nbrow=8; + if ($conf->projet->enabled) $nbrow++; + + //Local taxes + if ($mysoc->pays_code=='ES') + { + if($mysoc->localtax1_assuj=="1") $nbrow++; + if($mysoc->localtax2_assuj=="1") $nbrow++; + } + + print ''; + + // Ref + print ''; + print ''; + print ''; + + // Ref supplier +/* print '"; + print ''; + print ''; +*/ + // Fournisseur + print '"; + print ''; + print ''; + + // Statut + print ''; + print ''; + print '"; + + // Date + if ($commande->methode_commande_id > 0) + { + print '"; + + if ($commande->methode_commande) + { + print ''; + } + } + + // Author + print ''; + print ''; + print ''; + + // Conditions de reglement par defaut + $langs->load('bills'); + $html = new Form($db); + print '"; + print ''; + // Project if ($conf->projet->enabled) { diff --git a/htdocs/install/mysql/migration/3.0.0-3.1.0.sql b/htdocs/install/mysql/migration/3.0.0-3.1.0.sql index ac5adaf40a5..33725d3b0e2 100755 --- a/htdocs/install/mysql/migration/3.0.0-3.1.0.sql +++ b/htdocs/install/mysql/migration/3.0.0-3.1.0.sql @@ -16,6 +16,7 @@ ALTER TABLE llx_adherent MODIFY login varchar(50); ALTER TABLE llx_c_actioncomm ADD COLUMN position integer NOT NULL DEFAULT 0; ALTER TABLE llx_propal ADD COLUMN fk_demand_reason integer NULL DEFAULT 0; +ALTER TABLE llx_commande_fournisseur ADD COLUMN fk_cond_reglement integer NULL DEFAULT 0; ALTER TABLE llx_commande_fournisseur MODIFY model_pdf varchar(255); ALTER TABLE llx_commande MODIFY model_pdf varchar(255);
'.$langs->trans("Ref").''; + print $html->showrefnav($commande,'ref','',1,'ref','ref'); + print '
'.$langs->trans("RefSupplier")."'.$commande->ref_supplier.'
'.$langs->trans("Supplier")."'.$soc->getNomUrl(1,'supplier').'
'.$langs->trans("Status").''; + print $commande->getLibStatut(4); + print "
'.$langs->trans("Date").''; + if ($commande->date_commande) + { + print dol_print_date($commande->date_commande,"dayhourtext")."\n"; + } + print "
'.$langs->trans("Method").''.$commande->methode_commande.'
'.$langs->trans("AuthorRequest").''.$author->getNomUrl(1).'
'; + print ''; + print '
'; + print $langs->trans('PaymentConditions'); + print ''; + if ($_GET['action'] != 'editconditions') print 'id.'">'.img_edit($langs->trans('SetConditions'),1).'
'; + print '
'; + if ($_GET['action'] == 'editconditions') + { + $html->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$commande->id, $commande->cond_reglement_id,'cond_reglement_id'); + } + else + { + $html->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$commande->id, $commande->cond_reglement_id,'none'); + } + print "