2004-10-19 22:19:58 +02:00
< ? php
2005-08-02 09:23:45 +02:00
/* Copyright ( C ) 2001 - 2005 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
2005-06-27 23:47:44 +02:00
* Copyright ( C ) 2004 - 2005 Laurent Destailleur < eldy @ users . sourceforge . net >
* Copyright ( C ) 2004 Eric Seigne < eric . seigne @ ryxeo . com >
* Copyright ( C ) 2005 Marc Barilley / Ocebo < marc @ ocebo . com >
2006-02-12 11:59:11 +01:00
* Copyright ( C ) 2005 - 2006 Regis Houssin < regis . houssin @ cap - networks . com >
* Copyright ( C ) 2006 Andre Cianfarani < acianfa @ free . fr >
2002-04-30 12:44:42 +02:00
*
* 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 .
*
2003-03-23 16:37:36 +01:00
* $Id $
* $Source $
2002-04-30 12:44:42 +02:00
*/
2003-09-05 08:58:58 +02:00
2005-04-30 16:49:40 +02:00
/**
2006-01-22 22:08:32 +01:00
\file htdocs / comm / propal . php
\ingroup propale
\brief Page liste des propales ( vision commercial )
2003-09-05 08:58:58 +02:00
*/
2005-07-15 01:52:56 +02:00
require ( " ./pre.inc.php " );
2005-11-11 21:11:57 +01:00
require_once ( DOL_DOCUMENT_ROOT . " /includes/modules/propale/modules_propale.php " );
2002-04-30 12:44:42 +02:00
2003-08-06 14:40:53 +02:00
$user -> getrights ( 'propale' );
2004-10-30 00:17:32 +02:00
2003-08-06 14:40:53 +02:00
if ( ! $user -> rights -> propale -> lire )
2005-06-27 23:47:44 +02:00
accessforbidden ();
2003-08-06 14:40:53 +02:00
2005-08-21 21:07:13 +02:00
$langs -> load ( 'companies' );
$langs -> load ( 'propal' );
$langs -> load ( 'compta' );
$langs -> load ( 'bills' );
2005-08-12 03:34:46 +02:00
if ( $conf -> projet -> enabled ) require_once ( DOL_DOCUMENT_ROOT . '/project.class.php' );
2005-08-13 23:23:02 +02:00
if ( $conf -> commande -> enabled ) require_once ( DOL_DOCUMENT_ROOT . '/commande/commande.class.php' );
2005-09-25 00:28:19 +02:00
require_once ( DOL_DOCUMENT_ROOT . '/propal.class.php' );
require_once ( DOL_DOCUMENT_ROOT . '/actioncomm.class.php' );
2005-07-06 01:50:50 +02:00
require_once ( DOL_DOCUMENT_ROOT . '/lib/CMailFile.class.php' );
2003-09-01 14:40:50 +02:00
2005-08-25 00:38:00 +02:00
$sall = isset ( $_GET [ " sall " ]) ? $_GET [ " sall " ] : $_POST [ " sall " ];
2005-08-24 01:11:26 +02:00
if ( isset ( $_GET [ " msg " ])) { $msg = urldecode ( $_GET [ " msg " ]); }
$year = isset ( $_GET [ " year " ]) ? $_GET [ " year " ] : " " ;
$month = isset ( $_GET [ " month " ]) ? $_GET [ " month " ] : " " ;
2005-07-15 01:52:56 +02:00
// S<> curit<69> acc<63> s client
2005-08-24 01:11:26 +02:00
$socidp = '' ;
if ( $_GET [ " socidp " ]) { $socidp = $_GET [ " socidp " ]; }
2003-03-23 16:37:36 +01:00
if ( $user -> societe_id > 0 )
{
2005-08-21 21:07:13 +02:00
$action = '' ;
$socidp = $user -> societe_id ;
2003-03-23 16:37:36 +01:00
}
2005-02-26 19:33:10 +01:00
// Nombre de ligne pour choix de produit/service pr<70> d<EFBFBD> finis
$NBLINES = 4 ;
2005-04-29 01:56:47 +02:00
2005-06-27 23:47:44 +02:00
$form = new Form ( $db );
2005-04-29 01:56:47 +02:00
2005-08-25 00:38:00 +02:00
2002-12-12 18:04:27 +01:00
/******************************************************************************/
/* Actions */
/******************************************************************************/
2002-04-30 12:44:42 +02:00
2005-06-27 23:47:44 +02:00
if ( $_POST [ 'action' ] == 'confirm_delete' && $_POST [ 'confirm' ] == 'yes' )
2003-09-12 14:58:58 +02:00
{
2006-01-22 22:08:32 +01:00
if ( $user -> rights -> propale -> supprimer )
2005-08-02 09:23:45 +02:00
{
2006-01-22 22:08:32 +01:00
$propal = new Propal ( $db , 0 , $_GET [ 'propalid' ]);
$propal -> delete ( $user );
$propalid = 0 ;
$brouillon = 1 ;
2005-08-02 09:23:45 +02:00
}
2006-01-22 22:08:32 +01:00
Header ( 'Location: propal.php' );
exit ;
2003-09-12 14:58:58 +02:00
}
2005-09-01 21:28:15 +02:00
if ( $_POST [ 'action' ] == 'confirm_validate' && $_POST [ 'confirm' ] == 'yes' )
{
2006-01-22 22:08:32 +01:00
if ( $user -> rights -> propale -> valider )
2005-09-01 21:28:15 +02:00
{
2006-01-22 22:08:32 +01:00
$propal = new Propal ( $db );
$propal -> fetch ( $_GET [ 'propalid' ]);
$result = $propal -> update_price ( $_GET [ 'propalid' ]);
propale_pdf_create ( $db , $_GET [ 'propalid' ], $propal -> modelpdf );
$result = $propal -> valid ( $user );
2005-09-01 21:28:15 +02:00
}
2006-01-22 22:08:32 +01:00
Header ( 'Location: propal.php?propalid=' . $_GET [ 'propalid' ]);
exit ;
2005-11-04 21:45:02 +01:00
}
if ( $_POST [ 'action' ] == 'setecheance' )
{
$propal = new Propal ( $db );
$propal -> fetch ( $_GET [ 'propalid' ]);
$result = $propal -> set_echeance ( $user , mktime ( 12 , 1 , 1 , $_POST [ 'echmonth' ], $_POST [ 'echday' ], $_POST [ 'echyear' ]));
if ( $result < 0 ) dolibarr_print_error ( $db , $propal -> error );
2005-09-01 21:28:15 +02:00
}
2003-09-12 14:58:58 +02:00
2005-06-27 23:47:44 +02:00
if ( $_POST [ 'action' ] == 'add' )
2002-12-12 18:04:27 +01:00
{
2005-09-17 02:50:36 +02:00
$propal = new Propal ( $db , $_GET [ 'socidp' ]);
2005-11-04 21:45:02 +01:00
$propal -> datep = mktime ( 12 , 1 , 1 , $_POST [ 'remonth' ], $_POST [ 'reday' ], $_POST [ 'reyear' ]);
2005-09-17 02:50:36 +02:00
$propal -> duree_validite = $_POST [ 'duree_validite' ];
2006-02-16 14:56:20 +01:00
$propal -> cond_reglement_id = $_POST [ 'cond_reglement_id' ];
$propal -> mode_reglement_id = $_POST [ 'mode_reglement_id' ];
2005-09-17 02:50:36 +02:00
$propal -> contactid = $_POST [ 'contactidp' ];
$propal -> projetidp = $_POST [ 'projetidp' ];
2006-01-21 20:08:36 +01:00
$propal -> modelpdf = $_POST [ 'model' ];
2005-09-17 02:50:36 +02:00
$propal -> author = $user -> id ;
$propal -> note = $_POST [ 'note' ];
$propal -> ref = $_POST [ 'ref' ];
for ( $i = 1 ; $i <= PROPALE_NEW_FORM_NB_PRODUCT ; $i ++ )
2005-08-02 09:23:45 +02:00
{
2006-02-12 18:01:39 +01:00
if ( $_POST [ 'idprod' . $i ])
{
$xid = 'idprod' . $i ;
$xqty = 'qty' . $i ;
$xremise = 'remise' . $i ;
$propal -> add_product ( $_POST [ $xid ], $_POST [ $xqty ], $_POST [ $xremise ]);
}
2005-08-02 09:23:45 +02:00
}
2005-09-17 02:50:36 +02:00
$id = $propal -> create ();
/*
* Generation
*/
if ( $id > 0 )
{
2006-01-21 20:08:36 +01:00
propale_pdf_create ( $db , $id , $_POST [ 'model' ]);
2005-09-17 02:50:36 +02:00
Header ( 'Location: propal.php?propalid=' . $id );
exit ;
}
else
2005-08-02 09:23:45 +02:00
{
2005-09-17 02:50:36 +02:00
dolibarr_print_error ( $db , $propal -> error );
exit ;
2005-08-02 09:23:45 +02:00
}
2002-12-12 18:04:27 +01:00
}
2006-01-22 22:08:32 +01:00
if ( $_GET [ 'action' ] == 'builddoc' )
2003-06-19 15:12:27 +02:00
{
2005-11-04 21:45:02 +01:00
$propal = new Propal ( $db );
$propal -> fetch ( $_GET [ 'propalid' ]);
propale_pdf_create ( $db , $_GET [ 'propalid' ], $propal -> modelpdf );
2003-06-19 15:12:27 +02:00
}
2002-12-12 18:04:27 +01:00
2005-11-04 21:45:02 +01:00
/*
* Cloture de la propale
*/
2005-06-27 23:47:44 +02:00
if ( $_POST [ 'action' ] == 'setstatut' && $user -> rights -> propale -> cloturer )
2002-12-12 18:04:27 +01:00
{
2006-01-22 22:08:32 +01:00
if ( ! $_POST [ 'cancel' ])
{
$propal = new Propal ( $db );
$propal -> fetch ( $_GET [ 'propalid' ]);
$propal -> cloture ( $user , $_POST [ 'statut' ], $_POST [ 'note' ]);
}
2005-06-27 23:47:44 +02:00
}
2003-06-20 11:50:11 +02:00
2005-06-25 15:02:17 +02:00
/*
2005-06-27 23:47:44 +02:00
* Envoi de la propale par mail
*/
if ( $_POST [ 'action' ] == 'send' )
2005-06-25 15:02:17 +02:00
{
2005-08-25 00:38:00 +02:00
$langs -> load ( 'mails' );
$propal = new Propal ( $db );
if ( $propal -> fetch ( $_POST [ 'propalid' ]) )
2005-08-02 09:23:45 +02:00
{
2005-08-25 00:38:00 +02:00
$propalref = sanitize_string ( $propal -> ref );
$file = $conf -> propal -> dir_output . '/' . $propalref . '/' . $propalref . '.pdf' ;
if ( is_readable ( $file ))
{
$soc = new Societe ( $db , $propal -> socidp );
if ( $_POST [ 'sendto' ])
{
// Le destinataire a <20> t<EFBFBD> fourni via le champ libre
$sendto = $_POST [ 'sendto' ];
$sendtoid = 0 ;
}
elseif ( $_POST [ 'receiver' ])
{
// Le destinataire a <20> t<EFBFBD> fourni via la liste d<> roulante
$sendto = $soc -> contact_get_email ( $_POST [ 'receiver' ]);
$sendtoid = $_POST [ 'receiver' ];
}
2005-08-02 09:23:45 +02:00
2005-08-25 00:38:00 +02:00
if ( strlen ( $sendto ))
{
$from = $_POST [ 'fromname' ] . ' <' . $_POST [ 'frommail' ] . '>' ;
$replyto = $_POST [ 'replytoname' ] . ' <' . $_POST [ 'replytomail' ] . '>' ;
$message = $_POST [ 'message' ];
if ( $_POST [ 'action' ] == 'send' )
{
$subject = $langs -> trans ( 'Propal' ) . ' ' . $propal -> ref ;
$actiontypeid = 3 ;
$actionmsg = 'Mail envoy<6F> par ' . $from . ' <20> ' . $sendto . '.<br>' ;
if ( $message )
{
$actionmsg .= 'Texte utilis<69> dans le corps du message:<br>' ;
$actionmsg .= $message ;
}
$actionmsg2 = 'Envoi Propal par mail' ;
2005-07-12 00:57:19 +02:00
}
2005-08-25 00:38:00 +02:00
$filepath [ 0 ] = $file ;
$filename [ 0 ] = $propal -> ref . '.pdf' ;
$mimetype [ 0 ] = 'application/pdf' ;
if ( $_FILES [ 'addedfile' ][ 'tmp_name' ])
{
$filepath [ 1 ] = $_FILES [ 'addedfile' ][ 'tmp_name' ];
$filename [ 1 ] = $_FILES [ 'addedfile' ][ 'name' ];
$mimetype [ 1 ] = $_FILES [ 'addedfile' ][ 'type' ];
}
// Envoi de la facture
$mailfile = new CMailFile ( $subject , $sendto , $from , $message , $filepath , $mimetype , $filename , $sendtocc );
if ( $mailfile -> sendfile ())
{
$msg = '<div class="ok">' . $langs -> trans ( 'MailSuccessfulySent' , $from , $sendto ) . '.</div>' ;
// Insertion action
2005-09-07 23:50:09 +02:00
include_once ( DOL_DOCUMENT_ROOT . " /contact.class.php " );
2005-08-25 00:38:00 +02:00
$actioncomm = new ActionComm ( $db );
$actioncomm -> type_id = $actiontypeid ;
$actioncomm -> label = $actionmsg2 ;
$actioncomm -> note = $actionmsg ;
$actioncomm -> date = time (); // L'action est faite maintenant
$actioncomm -> percent = 100 ;
$actioncomm -> contact = new Contact ( $db , $sendtoid );
$actioncomm -> societe = new Societe ( $db , $propal -> socidp );
$actioncomm -> user = $user ; // User qui a fait l'action
$actioncomm -> propalrowid = $propal -> id ;
$ret = $actioncomm -> add ( $user ); // User qui saisi l'action
if ( $ret < 0 )
{
dolibarr_print_error ( $db );
}
else
{
// Renvoie sur la fiche
Header ( 'Location: propal.php?propalid=' . $propal -> id . '&msg=' . urlencode ( $msg ));
exit ;
}
}
else
{
$msg = '<div class="error">' . $langs -> trans ( 'ErrorFailedToSendMail' , $from , $sendto ) . ' - ' . $actioncomm -> error . '</div>' ;
}
}
else
{
$msg = '<div class="error">' . $langs -> trans ( 'ErrorMailRecipientIsEmpty' ) . ' !</div>' ;
dolibarr_syslog ( 'Le mail du destinataire est vide' );
}
}
else
{
dolibarr_syslog ( 'Impossible de lire :' . $file );
}
2005-08-02 09:23:45 +02:00
}
2005-08-25 00:38:00 +02:00
else
2005-08-02 09:23:45 +02:00
{
2005-08-25 00:38:00 +02:00
dolibarr_syslog ( 'Impossible de lire les donn<6E> es de la propale. Le fichier propal n\'a peut-<2D> tre pas <20> t<EFBFBD> g<> n<EFBFBD> r<EFBFBD> .' );
2005-08-02 09:23:45 +02:00
}
2005-06-25 15:02:17 +02:00
}
2005-06-27 23:47:44 +02:00
if ( $_GET [ 'action' ] == 'commande' )
2003-11-19 15:52:09 +01:00
{
2005-08-02 09:23:45 +02:00
/*
* Cloture de la propale
*/
$propal = new Propal ( $db );
$propal -> fetch ( $propalid );
$propal -> create_commande ( $user );
2005-06-27 23:47:44 +02:00
}
2003-06-20 16:23:17 +02:00
2005-06-27 23:47:44 +02:00
if ( $_GET [ 'action' ] == 'modif' && $user -> rights -> propale -> creer )
{
2005-08-02 09:23:45 +02:00
/*
* Repasse la propale en mode brouillon
*/
$propal = new Propal ( $db );
$propal -> fetch ( $_GET [ 'propalid' ]);
$propal -> reopen ( $user -> id );
2003-06-20 16:23:17 +02:00
}
2006-02-12 18:01:39 +01:00
/*
* Ajout d ' une ligne produit dans la propale
*/
2005-08-13 20:52:57 +02:00
if ( $_POST [ 'action' ] == " addligne " && $user -> rights -> propale -> creer )
2003-06-20 11:50:11 +02:00
{
2006-02-12 18:01:39 +01:00
if ( $_POST [ 'qty' ] && (( $_POST [ 'np_price' ] >= 0 && $_POST [ 'np_desc' ]) || $_POST [ 'idprod' ]))
{
$propal = new Propal ( $db );
$ret = $propal -> fetch ( $_POST [ 'propalid' ]);
if ( isset ( $_POST [ 'np_tva_tx' ]))
{
$propal -> insert_product_generic (
$_POST [ 'np_desc' ],
$_POST [ 'np_price' ],
$_POST [ 'qty' ],
$_POST [ 'np_tva_tx' ],
$_POST [ 'np_remise' ]);
}
else
{
$propal -> insert_product (
$_POST [ 'idprod' ],
$_POST [ 'qty' ],
$_POST [ 'remise' ],
$_POST [ 'np_desc' ]);
}
propale_pdf_create ( $db , $_POST [ 'propalid' ], $propal -> modelpdf );
}
2005-06-27 23:47:44 +02:00
}
2005-09-01 21:28:15 +02:00
if ( $_POST [ 'action' ] == 'updateligne' && $user -> rights -> propale -> creer && $_POST [ " save " ] == $langs -> trans ( " Save " ))
2003-08-30 13:45:47 +02:00
{
2005-09-01 21:28:15 +02:00
/*
* Mise <EFBFBD> jour d ' une ligne dans la propale
*/
$propal = new Propal ( $db );
$propal -> fetch ( $_GET [ 'propalid' ]);
$propal -> UpdateLigne ( $_POST [ 'ligne' ], $_POST [ 'subprice' ], $_POST [ 'qty' ], $_POST [ 'remise_percent' ], $_POST [ 'tva_tx' ], $_POST [ 'desc' ]);
propale_pdf_create ( $db , $_GET [ 'propalid' ], $propal -> modelpdf );
2003-09-05 21:36:37 +02:00
}
2006-01-08 18:08:20 +01:00
if ( $_POST [ 'action' ] == 'builddoc' && $user -> rights -> propale -> creer )
2003-09-06 17:13:29 +02:00
{
2005-09-01 21:28:15 +02:00
$propal = new Propal ( $db , 0 , $_GET [ 'propalid' ]);
2006-01-21 20:08:36 +01:00
$propal -> set_pdf_model ( $user , $_POST [ 'model' ]);
propale_pdf_create ( $db , $_GET [ 'propalid' ], $_POST [ 'model' ]);
2005-06-27 23:47:44 +02:00
}
2003-09-06 17:13:29 +02:00
2003-08-30 13:45:47 +02:00
2005-06-27 23:47:44 +02:00
if ( $_GET [ 'action' ] == 'del_ligne' && $user -> rights -> propale -> creer )
2003-06-20 11:50:11 +02:00
{
2005-08-02 09:23:45 +02:00
/*
* Supprime une ligne produit dans la propale
*/
$propal = new Propal ( $db );
$propal -> fetch ( $_GET [ 'propalid' ]);
$propal -> delete_product ( $_GET [ 'ligne' ]);
propale_pdf_create ( $db , $_GET [ 'propalid' ], $propal -> modelpdf );
2003-06-20 11:50:11 +02:00
}
2006-02-18 22:43:34 +01:00
if ( $_POST [ 'action' ] == 'set_discount' && $user -> rights -> propale -> creer )
2005-08-02 09:23:45 +02:00
{
$propal = new Propal ( $db );
$propal -> fetch ( $_GET [ 'propalid' ]);
$propal -> set_remise ( $user , $_POST [ 'remise' ]);
propale_pdf_create ( $db , $_GET [ 'propalid' ], $propal -> modelpdf );
2003-09-05 21:36:37 +02:00
}
2005-06-27 23:47:44 +02:00
if ( $_POST [ 'action' ] == 'set_project' )
{
2005-08-02 09:23:45 +02:00
$propal = new Propal ( $db );
$propal -> fetch ( $_GET [ 'propalid' ]);
$propal -> set_project ( $user , $_POST [ 'projetidp' ]);
2005-06-27 23:47:44 +02:00
}
2002-12-12 18:04:27 +01:00
2005-06-27 23:47:44 +02:00
if ( $_POST [ 'action' ] == 'set_contact' )
{
2005-08-02 09:23:45 +02:00
$propal = new Propal ( $db );
$propal -> fetch ( $_GET [ 'propalid' ]);
$propal -> set_contact ( $user , $_POST [ 'contactidp' ]);
2005-06-27 23:47:44 +02:00
}
2004-10-30 00:17:32 +02:00
2006-02-18 22:43:34 +01:00
// Conditions de r<> glement
2006-02-15 19:05:07 +01:00
if ( $_POST [ " action " ] == 'setconditions' )
{
$propal = new Propal ( $db , $_GET [ " propalid " ]);
2006-02-18 22:43:34 +01:00
$propal -> cond_reglement_id = $_POST [ 'cond_reglement_id' ];
$sql = " UPDATE " . MAIN_DB_PREFIX . " propal " ;
$sql .= " SET fk_cond_reglement=' " . $_POST [ 'cond_reglement_id' ] . " ' " ;
$sql .= " WHERE rowid=' " . $_GET [ " propalid " ] . " ' " ;
$resql = $db -> query ( $sql );
if ( $resql < 0 ) dolibarr_print_error ( $db );
2006-02-15 19:05:07 +01:00
}
2006-02-18 22:43:34 +01:00
// Mode de r<> glement
2006-02-15 19:05:07 +01:00
if ( $_POST [ " action " ] == 'setmode' )
{
2006-02-18 22:43:34 +01:00
$propal = new Propal ( $db , $_GET [ " propalid " ]);
$propal -> mode_reglement_id = $_POST [ 'mode_reglement_id' ];
// \todo Cr<43> er une methode propal->cond_reglement
$sql = " UPDATE " . MAIN_DB_PREFIX . " propal " ;
$sql .= " SET fk_mode_reglement=' " . $_POST [ 'mode_reglement_id' ] . " ' " ;
$sql .= " WHERE rowid=' " . $_GET [ " propalid " ] . " ' " ;
$resql = $db -> query ( $sql );
if ( $resql < 0 ) dolibarr_print_error ( $db );
2006-02-15 19:05:07 +01:00
}
2004-10-30 00:17:32 +02:00
2003-09-12 14:58:58 +02:00
llxHeader ();
2005-11-04 21:45:02 +01:00
$html = new Form ( $db );
2004-10-30 00:17:32 +02:00
2002-05-04 01:01:45 +02:00
/*
2004-10-30 00:17:32 +02:00
* Affichage fiche propal en mode visu
2002-05-04 01:01:45 +02:00
*
*/
2005-08-21 18:33:38 +02:00
if ( $_GET [ 'propalid' ] > 0 )
2003-06-28 16:33:27 +02:00
{
2005-08-02 09:23:45 +02:00
if ( $msg ) print " $msg <br> " ;
$propal = new Propal ( $db );
$propal -> fetch ( $_GET [ 'propalid' ]);
$societe = new Societe ( $db );
$societe -> fetch ( $propal -> soc_id );
$h = 0 ;
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/comm/propal.php?propalid=' . $propal -> id ;
$head [ $h ][ 1 ] = $langs -> trans ( 'CommercialCard' );
$hselected = $h ;
$h ++ ;
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/compta/propal.php?propalid=' . $propal -> id ;
$head [ $h ][ 1 ] = $langs -> trans ( 'AccountancyCard' );
$h ++ ;
2005-09-16 03:23:29 +02:00
if ( $conf -> use_preview_tabs )
{
2005-08-13 17:11:49 +02:00
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/comm/propal/apercu.php?propalid=' . $propal -> id ;
$head [ $h ][ 1 ] = $langs -> trans ( " Preview " );
$h ++ ;
2005-09-16 03:23:29 +02:00
}
2005-08-02 09:23:45 +02:00
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/comm/propal/note.php?propalid=' . $propal -> id ;
$head [ $h ][ 1 ] = $langs -> trans ( 'Note' );
$h ++ ;
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/comm/propal/info.php?propalid=' . $propal -> id ;
$head [ $h ][ 1 ] = $langs -> trans ( 'Info' );
$h ++ ;
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/comm/propal/document.php?propalid=' . $propal -> id ;
$head [ $h ][ 1 ] = $langs -> trans ( 'Documents' );
$h ++ ;
2006-02-12 17:30:43 +01:00
dolibarr_fiche_head ( $head , $hselected , $langs -> trans ( 'Proposal' ));
2005-08-02 09:23:45 +02:00
/*
* Confirmation de la suppression de la propale
*/
if ( $_GET [ 'action' ] == 'delete' )
{
$html -> form_confirm ( 'propal.php?propalid=' . $propal -> id , $langs -> trans ( 'DeleteProp' ), $langs -> trans ( 'ConfirmDeleteProp' ), 'confirm_delete' );
print '<br>' ;
}
2005-09-01 21:28:15 +02:00
/*
* Confirmation de la validation de la propale
*/
if ( $_GET [ 'action' ] == 'validate' )
{
2005-10-08 17:54:06 +02:00
$html -> form_confirm ( 'propal.php?propalid=' . $propal -> id , $langs -> trans ( 'ValidateProp' ), $langs -> trans ( 'ConfirmValidateProp' ), 'confirm_validate' );
2005-09-01 21:28:15 +02:00
print '<br>' ;
}
2005-08-02 09:23:45 +02:00
/*
* Fiche propal
*
*/
2006-02-16 17:07:34 +01:00
$sql = 'SELECT s.nom, s.idp, p.price, p.fk_projet, p.remise, p.tva, p.total, p.ref, p.fk_statut, p.fk_cond_reglement, p.fk_mode_reglement, ' . $db -> pdate ( 'p.datep' ) . ' as dp, p.note,' ;
2005-08-02 09:23:45 +02:00
$sql .= ' x.firstname, x.name, x.fax, x.phone, x.email, p.fk_user_author, p.fk_user_valid, p.fk_user_cloture, p.datec, p.date_valid, p.date_cloture' ;
$sql .= ' FROM ' . MAIN_DB_PREFIX . 'societe as s, ' . MAIN_DB_PREFIX . 'propal as p, ' . MAIN_DB_PREFIX . 'socpeople as x' ;
$sql .= ' WHERE p.fk_soc = s.idp AND p.fk_soc_contact = x.idp AND p.rowid = ' . $propal -> id ;
if ( $socidp ) $sql .= ' AND s.idp = ' . $socidp ;
2005-08-13 23:04:48 +02:00
$resql = $db -> query ( $sql );
if ( $resql )
2005-08-02 09:23:45 +02:00
{
2006-02-18 22:43:34 +01:00
if ( $db -> num_rows ( $resql ))
2005-08-24 01:11:26 +02:00
{
$obj = $db -> fetch_object ( $resql );
$societe = new Societe ( $db );
$societe -> fetch ( $obj -> idp );
print '<table class="border" width="100%">' ;
2006-02-12 17:30:43 +01:00
print '<tr><td>' . $langs -> trans ( 'Ref' ) . '</td><td colspan="5">' . $propal -> ref_url . '</td></tr>' ;
2005-08-24 01:11:26 +02:00
$rowspan = 6 ;
2005-11-04 21:45:02 +01:00
// Soci<63> t<EFBFBD>
print '<tr><td>' . $langs -> trans ( 'Company' ) . '</td><td colspan="5">' ;
2005-08-24 01:11:26 +02:00
if ( $societe -> client == 1 )
{
$url = 'fiche.php?socid=' . $societe -> id ;
}
else
{
$url = DOL_URL_ROOT . '/comm/prospect/fiche.php?socid=' . $societe -> id ;
}
print '<a href="' . $url . '">' . $societe -> nom . '</a></td>' ;
print '</tr>' ;
2005-11-04 21:45:02 +01:00
// Dates
2005-08-24 01:11:26 +02:00
print '<tr><td>' . $langs -> trans ( 'Date' ) . '</td><td colspan="3">' ;
print dolibarr_print_date ( $propal -> date , '%a %d %B %Y' );
print '</td>' ;
2005-11-04 21:45:02 +01:00
print '<td>' ;
print '<table class="nobordernopadding" width="100%"><tr><td>' ;
print $langs -> trans ( 'DateEndPropal' );
print '</td>' ;
if ( $_GET [ 'action' ] != 'editecheance' && $propal -> brouillon ) print '<td align="right"><a href="' . $_SERVER [ " PHP_SELF " ] . '?action=editecheance&propalid=' . $propal -> id . '">' . img_edit ( $langs -> trans ( 'SetConditions' ), 1 ) . '</a></td>' ;
print '</tr></table>' ;
print '<td>' ;
if ( $propal -> brouillon && $_GET [ 'action' ] == 'editecheance' )
2005-08-24 01:11:26 +02:00
{
2005-11-04 21:45:02 +01:00
print '<form action="' . $_SERVER [ " PHP_SELF " ] . '?propalid=' . $propal -> id . '" method="post">' ;
print '<input type="hidden" name="action" value="setecheance">' ;
$html -> select_date ( $propal -> fin_validite , 'ech' );
print '<input type="submit" class="button" value="' . $langs -> trans ( 'Modify' ) . '">' ;
print '</form>' ;
2005-08-24 01:11:26 +02:00
}
else
{
2005-11-04 21:45:02 +01:00
if ( $propal -> fin_validite )
{
print dolibarr_print_date ( $propal -> fin_validite , '%a %d %B %Y' );
if ( $propal -> statut == 1 && $propal -> fin_validite < ( time () - $conf -> propal -> cloture -> warning_delay )) print img_warning ( $langs -> trans ( " Late " ));
}
else
{
print $langs -> trans ( " Unknown " );
}
2005-08-24 01:11:26 +02:00
}
print '</td>' ;
print '</tr>' ;
2005-11-04 21:45:02 +01:00
// Conditions et modes de r<> glement
print '<tr><td>' ;
print '<table class="nobordernopadding" width="100%"><tr><td>' ;
print $langs -> trans ( 'PaymentConditions' );
print '</td>' ;
2006-02-15 18:54:04 +01:00
if ( $_GET [ 'action' ] != 'editconditions' && $propal -> brouillon ) print '<td align="right"><a href="' . $_SERVER [ " PHP_SELF " ] . '?action=editconditions&propalid=' . $propal -> id . '">' . img_edit ( $langs -> trans ( 'SetConditions' ), 1 ) . '</a></td>' ;
2005-11-04 21:45:02 +01:00
print '</tr></table>' ;
print '</td><td colspan="3">' ;
if ( $_GET [ 'action' ] == 'editconditions' )
{
2006-02-16 17:38:15 +01:00
$html -> form_conditions_reglement ( $_SERVER [ 'PHP_SELF' ] . '?propalid=' . $propal -> id , $propal -> cond_reglement_id , 'cond_reglement_id' );
2005-11-04 21:45:02 +01:00
}
else
{
2006-02-16 17:38:15 +01:00
$html -> form_conditions_reglement ( $_SERVER [ 'PHP_SELF' ] . '?propalid=' . $propal -> id , $propal -> cond_reglement_id , 'none' );
2005-11-04 21:45:02 +01:00
}
print '</td>' ;
2006-02-18 22:43:34 +01:00
2005-11-04 21:45:02 +01:00
print '<td width="25%">' ;
print '<table class="nobordernopadding" width="100%"><tr><td>' ;
print $langs -> trans ( 'PaymentMode' );
print '</td>' ;
2006-02-15 18:54:04 +01:00
if ( $_GET [ 'action' ] != 'editmode' && $propal -> brouillon ) print '<td align="right"><a href="' . $_SERVER [ " PHP_SELF " ] . '?action=editmode&propalid=' . $propal -> id . '">' . img_edit ( $langs -> trans ( 'SetMode' ), 1 ) . '</a></td>' ;
2005-11-04 21:45:02 +01:00
print '</tr></table>' ;
print '</td><td width="25%">' ;
if ( $_GET [ 'action' ] == 'editmode' )
{
2006-02-16 17:38:15 +01:00
$html -> form_modes_reglement ( $_SERVER [ 'PHP_SELF' ] . '?propalid=' . $propal -> id , $propal -> mode_reglement_id , 'mode_reglement_id' );
2005-11-04 21:45:02 +01:00
}
else
{
2006-02-16 17:38:15 +01:00
$html -> form_modes_reglement ( $_SERVER [ 'PHP_SELF' ] . '?propalid=' . $propal -> id , $propal -> mode_reglement_id , 'none' );
2005-11-04 21:45:02 +01:00
}
print '</td></tr>' ;
2005-08-24 01:11:26 +02:00
// Destinataire
$langs -> load ( 'mails' );
2006-02-18 22:43:34 +01:00
print '<tr><td>' ;
print '<table class="nobordernopadding" width="100%"><tr><td>' ;
print $langs -> trans ( 'MailTo' );
print '</td>' ;
if ( $_GET [ 'action' ] != 'editcontact' && $propal -> brouillon ) print '<td align="right"><a href="' . $_SERVER [ " PHP_SELF " ] . '?action=editcontact&propalid=' . $propal -> id . '">' . img_edit ( $langs -> trans ( 'SetReceiver' ), 1 ) . '</a></td>' ;
print '</tr></table>' ;
print '</td><td colspan="3">' ;
if ( $_GET [ 'action' ] == 'editcontact' )
{
$html -> form_contacts ( $_SERVER [ 'PHP_SELF' ] . '?propalid=' . $propal -> id , $societe , $propal -> contactid , 'contactidp' );
}
else
{
$html -> form_contacts ( $_SERVER [ 'PHP_SELF' ] . '?propalid=' . $propal -> id , $societe , $propal -> contactid , 'none' );
}
print '</td>' ;
2006-01-22 22:08:32 +01:00
if ( $conf -> projet -> enabled ) $rowspan ++ ;
2005-08-24 01:11:26 +02:00
print '<td valign="top" colspan="2" width="50%" rowspan="' . $rowspan . '">' . $langs -> trans ( 'Note' ) . ' :<br>' . nl2br ( $propal -> note ) . '</td></tr>' ;
2006-02-18 22:43:34 +01:00
// Projet
2005-08-24 01:11:26 +02:00
if ( $conf -> projet -> enabled )
{
$langs -> load ( " projects " );
print '<tr><td>' . $langs -> trans ( 'Project' ) . '</td>' ;
$numprojet = $societe -> has_projects ();
if ( ! $numprojet )
2005-08-13 20:52:57 +02:00
{
2005-08-24 01:11:26 +02:00
print '<td colspan="2">' ;
print $langs -> trans ( " NoProject " ) . '</td><td>' ;
print '<a href=../projet/fiche.php?socidp=' . $societe -> id . '&action=create>' . $langs -> trans ( 'AddProject' ) . '</a>' ;
print '</td>' ;
2005-08-13 20:52:57 +02:00
}
2005-08-24 01:11:26 +02:00
else
2005-08-13 20:52:57 +02:00
{
2005-08-24 01:11:26 +02:00
if ( $propal -> statut == 0 && $user -> rights -> propale -> creer )
{
print '<td colspan="2">' ;
print '<form action="propal.php?propalid=' . $propal -> id . '" method="post">' ;
print '<input type="hidden" name="action" value="set_project">' ;
$form -> select_projects ( $societe -> id , $propal -> projetidp , 'projetidp' );
print '</td><td>' ;
2005-09-07 00:27:14 +02:00
print '<input type="submit" class="button" value="' . $langs -> trans ( 'Modify' ) . '">' ;
2005-08-24 01:11:26 +02:00
print '</form>' ;
print '</td>' ;
}
else
{
if ( ! empty ( $propal -> projetidp ))
{
print '<td colspan="3">' ;
$proj = new Project ( $db );
$proj -> fetch ( $propal -> projetidp );
print '<a href="../projet/fiche.php?id=' . $propal -> projetidp . '" title="' . $langs -> trans ( 'ShowProject' ) . '">' ;
print $proj -> title ;
print '</a>' ;
print '</td>' ;
}
else {
print '<td colspan="3"> </td>' ;
}
}
2005-08-13 20:52:57 +02:00
}
2005-08-24 01:11:26 +02:00
print '</tr>' ;
}
2006-02-18 22:43:34 +01:00
// Remise globale
print '<tr><td>' ;
print '<table class="nobordernopadding" width="100%"><tr><td>' ;
print $langs -> trans ( 'GlobalDiscount' );
print '</td>' ;
if ( $_GET [ 'action' ] != 'editdiscount' && $propal -> brouillon ) print '<td align="right"><a href="' . $_SERVER [ " PHP_SELF " ] . '?action=editdiscount&propalid=' . $propal -> id . '">' . img_edit ( $langs -> trans ( 'SetGlobalDiscount' ), 1 ) . '</a></td>' ;
print '</tr></table>' ;
print '</td><td colspan="3">' ;
if ( $_GET [ 'action' ] == 'editdiscount' && $propal -> brouillon == 1 && $user -> rights -> propale -> creer )
{
2005-08-24 01:11:26 +02:00
print '<form action="propal.php?propalid=' . $propal -> id . '" method="post">' ;
2006-02-18 22:43:34 +01:00
print '<input type="hidden" name="action" value="set_discount">' ;
print '<input type="text" name="remise" size="3" value="' . $propal -> remise_percent . '">% ' ;
2005-09-07 00:27:14 +02:00
print '<input type="submit" class="button" value="' . $langs -> trans ( 'Modify' ) . '">' ;
2005-08-24 01:11:26 +02:00
print ' <a href="propal/aideremise.php?propalid=' . $propal -> id . '">?</a>' ;
print '</form>' ;
2006-02-18 22:43:34 +01:00
}
else
{
print $propal -> remise_percent . '%' ;
}
print '</td></tr>' ;
// Amount
2005-08-24 01:11:26 +02:00
print '<tr><td height="10">' . $langs -> trans ( 'AmountHT' ) . '</td>' ;
print '<td align="right" colspan="2"><b>' . price ( $propal -> price ) . '</b></td>' ;
print '<td>' . $langs -> trans ( " Currency " . $conf -> monnaie ) . '</td></tr>' ;
2005-09-26 00:04:38 +02:00
print '<tr><td height="10">' . $langs -> trans ( 'AmountVAT' ) . '</td><td align="right" colspan="2">' . price ( $propal -> total_tva ) . '</td>' ;
2005-08-24 01:11:26 +02:00
print '<td>' . $langs -> trans ( " Currency " . $conf -> monnaie ) . '</td></tr>' ;
print '<tr><td height="10">' . $langs -> trans ( 'AmountTTC' ) . '</td><td align="right" colspan="2">' . price ( $propal -> total_ttc ) . '</td>' ;
print '<td>' . $langs -> trans ( " Currency " . $conf -> monnaie ) . '</td></tr>' ;
// Statut
print '<tr><td height="10">' . $langs -> trans ( 'Status' ) . '</td><td align="left" colspan="3">' . $propal -> getLibStatut () . '</td></tr>' ;
print '</table><br>' ;
/*
* Lignes de propale
*
*/
2006-02-18 22:43:34 +01:00
print '<table class="noborder" width="100%">' ;
2005-08-24 01:11:26 +02:00
$sql = 'SELECT pt.rowid, pt.description, pt.price, pt.fk_product, pt.qty, pt.tva_tx, pt.remise_percent, pt.subprice,' ;
2006-02-18 22:43:34 +01:00
$sql .= ' p.label as product, p.ref, p.fk_product_type, p.rowid as prodid,' ;
$sql .= ' p.description as product_desc' ;
2005-08-24 01:11:26 +02:00
$sql .= ' FROM ' . MAIN_DB_PREFIX . 'propaldet as pt' ;
$sql .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'product as p ON pt.fk_product=p.rowid' ;
$sql .= ' WHERE pt.fk_propal = ' . $propal -> id ;
$sql .= ' ORDER BY pt.rowid ASC' ;
$resql = $db -> query ( $sql );
if ( $resql )
{
$num = $db -> num_rows ( $resql );
$i = 0 ; $total = 0 ;
if ( $num )
{
print '<tr class="liste_titre">' ;
print '<td>' . $langs -> trans ( 'Description' ) . '</td>' ;
print '<td align="right" width="50">' . $langs -> trans ( 'VAT' ) . '</td>' ;
print '<td align="right" width="80">' . $langs -> trans ( 'PriceUHT' ) . '</td>' ;
print '<td align="right" width="50">' . $langs -> trans ( 'Qty' ) . '</td>' ;
print '<td align="right" width="50">' . $langs -> trans ( 'Discount' ) . '</td>' ;
print '<td align="right" width="50">' . $langs -> trans ( 'AmountHT' ) . '</td>' ;
2006-02-18 22:43:34 +01:00
print '<td width="16"> </td>' ;
print '<td width="16"> </td>' ;
2005-08-24 01:11:26 +02:00
print " </tr> \n " ;
}
$var = true ;
while ( $i < $num )
{
$objp = $db -> fetch_object ( $resql );
$var =! $var ;
2005-09-01 21:28:15 +02:00
// Ligne en mode visu
if ( $_GET [ 'action' ] != 'editline' || $_GET [ 'ligne' ] != $objp -> rowid )
2005-08-24 01:11:26 +02:00
{
print '<tr ' . $bc [ $var ] . '>' ;
if ( $objp -> fk_product > 0 )
{
print '<td><a href="' . DOL_URL_ROOT . '/product/fiche.php?id=' . $objp -> fk_product . '">' ;
if ( $objp -> fk_product_type ) print img_object ( $langs -> trans ( 'ShowService' ), 'service' );
else print img_object ( $langs -> trans ( 'ShowProduct' ), 'product' );
2005-09-01 21:28:15 +02:00
print ' ' . $objp -> ref . '</a>' ;
2006-02-18 22:43:34 +01:00
print ' - ' . nl2br ( stripslashes ( $objp -> product ));
2006-02-09 17:12:34 +01:00
2006-02-18 22:43:34 +01:00
if ( $conf -> global -> PROP_ADD_PROD_DESC && ! $conf -> global -> CHANGE_PROD_DESC )
2006-02-09 17:12:34 +01:00
{
2006-02-09 17:16:34 +01:00
print '<br>' . nl2br ( stripslashes ( $objp -> product_desc ));
2006-02-09 17:14:00 +01:00
}
2006-02-09 17:12:34 +01:00
2005-08-24 01:11:26 +02:00
if ( $objp -> date_start && $objp -> date_end )
{
print ' (Du ' . dolibarr_print_date ( $objp -> date_start ) . ' au ' . dolibarr_print_date ( $objp -> date_end ) . ')' ;
}
if ( $objp -> date_start && ! $objp -> date_end )
{
print ' (A partir du ' . dolibarr_print_date ( $objp -> date_start ) . ')' ;
}
if ( ! $objp -> date_start && $objp -> date_end )
{
print " (Jusqu'au " . dolibarr_print_date ( $objp -> date_end ) . ')' ;
}
2006-02-12 13:58:34 +01:00
print ( $objp -> description && $objp -> description != $objp -> product ) ? '<br>' . stripslashes ( nl2br ( $objp -> description )) : '' ;
2005-08-24 01:11:26 +02:00
print '</td>' ;
}
else
{
print '<td>' . stripslashes ( nl2br ( $objp -> description ));
if ( $objp -> date_start && $objp -> date_end )
{
print ' (Du ' . dolibarr_print_date ( $objp -> date_start ) . ' au ' . dolibarr_print_date ( $objp -> date_end ) . ')' ;
}
if ( $objp -> date_start && ! $objp -> date_end )
{
print ' (A partir du ' . dolibarr_print_date ( $objp -> date_start ) . ')' ;
}
if ( ! $objp -> date_start && $objp -> date_end )
{
print " (Jusqu'au " . dolibarr_print_date ( $objp -> date_end ) . ')' ;
}
print " </td> \n " ;
}
print '<td align="right">' . $objp -> tva_tx . '%</td>' ;
print '<td align="right">' . price ( $objp -> subprice ) . " </td> \n " ;
print '<td align="right">' . $objp -> qty . '</td>' ;
if ( $objp -> remise_percent > 0 )
{
print '<td align="right">' . $objp -> remise_percent . " %</td> \n " ;
}
else
{
print '<td> </td>' ;
}
print '<td align="right">' . price ( $objp -> subprice * $objp -> qty * ( 100 - $objp -> remise_percent ) / 100 ) . " </td> \n " ;
// Icone d'edition et suppression
if ( $propal -> statut == 0 && $user -> rights -> propale -> creer )
{
print '<td align="right"><a href="propal.php?propalid=' . $propal -> id . '&action=editline&ligne=' . $objp -> rowid . '">' ;
print img_edit ();
print '</a></td>' ;
print '<td align="right"><a href="propal.php?propalid=' . $propal -> id . '&action=del_ligne&ligne=' . $objp -> rowid . '">' ;
print img_delete ();
print '</a></td>' ;
}
else
{
print '<td> </td><td> </td>' ;
}
print '</tr>' ;
}
2005-09-01 21:28:15 +02:00
// Ligne en mode update
if ( $propal -> statut == 0 && $_GET [ " action " ] == 'editline' && $user -> rights -> propale -> creer && $_GET [ " ligne " ] == $objp -> rowid )
2005-08-24 01:11:26 +02:00
{
print '<form action="propal.php?propalid=' . $propal -> id . '" method="post">' ;
print '<input type="hidden" name="action" value="updateligne">' ;
2005-09-01 21:28:15 +02:00
print '<input type="hidden" name="propalid" value="' . $propal -> id . '">' ;
2005-08-24 01:11:26 +02:00
print '<input type="hidden" name="ligne" value="' . $_GET [ " ligne " ] . '">' ;
print '<tr ' . $bc [ $var ] . '>' ;
2005-09-01 21:28:15 +02:00
print '<td>' ;
if ( $objp -> fk_product > 0 )
{
print '<a href="' . DOL_URL_ROOT . '/product/fiche.php?id=' . $objp -> fk_product . '">' ;
if ( $objp -> fk_product_type ) print img_object ( $langs -> trans ( 'ShowService' ), 'service' );
else print img_object ( $langs -> trans ( 'ShowProduct' ), 'product' );
print ' ' . $objp -> ref . '</a>' ;
print ' - ' . stripslashes ( nl2br ( $objp -> product ));
print '<br>' ;
}
2005-10-08 17:54:06 +02:00
print '<textarea name="desc" cols="50" rows="' . ROWS_2 . '">' . stripslashes ( $objp -> description ) . '</textarea></td>' ;
2005-09-01 21:28:15 +02:00
print '<td align="right">' ;
2005-11-23 01:43:19 +01:00
print $html -> select_tva ( " tva_tx " , $objp -> tva_tx , $mysoc , $societe );
2005-09-01 21:28:15 +02:00
print '</td>' ;
print '<td align="right"><input size="6" type="text" name="subprice" value="' . price ( $objp -> subprice ) . '"></td>' ;
print '<td align="right"><input size="2" type="text" name="qty" value="' . $objp -> qty . '"></td>' ;
print '<td align="right" nowrap><input size="2" type="text" name="remise_percent" value="' . $objp -> remise_percent . '">%</td>' ;
print '<td align="center" colspan="4" valign="center"><input type="submit" class="button" name="save" value="' . $langs -> trans ( " Save " ) . '">' ;
print '<br /><input type="submit" class="button" name="cancel" value="' . $langs -> trans ( " Cancel " ) . '"></td>' ;
print '</tr>' . " \n " ;
/*
if ( $conf -> service -> enabled )
{
print " <tr $bc[$var] > " ;
print '<td colspan="5">Si produit de type service <20> dur<75> e limit<69> e: Du ' ;
print $html -> select_date ( $objp -> date_start , " date_start " , 0 , 0 , $objp -> date_start ? 0 : 1 );
print ' au ' ;
print $html -> select_date ( $objp -> date_end , " date_end " , 0 , 0 , $objp -> date_end ? 0 : 1 );
print '</td>' ;
print '</tr>' . " \n " ;
}
*/
print " </form> \n " ;
2005-08-24 01:11:26 +02:00
}
$total = $total + ( $objp -> qty * $objp -> price );
$i ++ ;
}
2005-09-01 21:28:15 +02:00
2005-08-24 01:11:26 +02:00
$db -> free ( $resql );
}
else
{
dolibarr_print_error ( $db );
}
/*
2006-02-18 22:43:34 +01:00
* Ajouter une ligne
*/
2005-08-24 01:11:26 +02:00
if ( $propal -> statut == 0 && $user -> rights -> propale -> creer && $_GET [ " action " ] <> 'editline' )
{
print '<tr class="liste_titre">' ;
print '<td>' . $langs -> trans ( 'Description' ) . '</td>' ;
print '<td align="right">' . $langs -> trans ( 'VAT' ) . '</td>' ;
print '<td align="right">' . $langs -> trans ( 'PriceUHT' ) . '</td>' ;
print '<td align="right">' . $langs -> trans ( 'Qty' ) . '</td>' ;
print '<td align="right">' . $langs -> trans ( 'Discount' ) . '</td>' ;
print '<td> </td>' ;
print '<td> </td>' ;
print '<td> </td>' ;
print " </tr> \n " ;
// Ajout produit produits/services personalis<69> s
print '<form action="propal.php?propalid=' . $propal -> id . '" method="post">' ;
print '<input type="hidden" name="propalid" value="' . $propal -> id . '">' ;
print '<input type="hidden" name="action" value="addligne">' ;
2006-02-18 22:43:34 +01:00
2005-08-24 01:11:26 +02:00
$var = true ;
2006-02-18 22:43:34 +01:00
2005-08-24 01:11:26 +02:00
print '<tr ' . $bc [ $var ] . " > \n " ;
2006-02-18 22:43:34 +01:00
print '<td><textarea cols="50" name="np_desc" rows="' . ROWS_2 . '"></textarea></td>' ;
print '<td align="center">' ;
$html -> select_tva ( 'np_tva_tx' , $conf -> defaulttx , $mysoc , $societe );
print " </td> \n " ;
print '<td align="right"><input type="text" size="5" name="np_price"></td>' ;
print '<td align="right"><input type="text" size="2" value="1" name="qty"></td>' ;
print '<td align="right" nowrap><input type="text" size="2" value="' . $societe -> remise_client . '" name="np_remise">%</td>' ;
print '<td align="center" colspan="3"><input type="submit" class="button" value="' . $langs -> trans ( 'Add' ) . '" name="addligne"></td>' ;
2005-08-24 01:11:26 +02:00
print '</tr>' ;
print '</form>' ;
2006-02-18 22:43:34 +01:00
2005-08-24 01:11:26 +02:00
// Ajout de produits/services pr<70> d<EFBFBD> finis
2005-10-08 17:54:06 +02:00
if ( $conf -> produit -> enabled )
{
print '<form action="propal.php?propalid=' . $propal -> id . '" method="post">' ;
print '<input type="hidden" name="propalid" value="' . $propal -> id . '">' ;
print '<input type="hidden" name="action" value="addligne">' ;
$var =! $var ;
2006-02-18 22:43:34 +01:00
2005-10-08 17:54:06 +02:00
print '<tr ' . $bc [ $var ] . '>' ;
print '<td colspan="2">' ;
2006-02-03 17:42:39 +01:00
// multiprix
if ( $conf -> global -> PRODUIT_MULTIPRICES == 1 )
$html -> select_produits ( '' , 'idprod' , '' , $conf -> produit -> limit_size , $societe -> price_level );
else
$html -> select_produits ( '' , 'idprod' , '' , $conf -> produit -> limit_size );
2005-10-08 17:54:06 +02:00
print '<br>' ;
print '<textarea cols="50" name="np_desc" rows="' . ROWS_2 . '"></textarea>' ;
print '</td>' ;
print '<td> </td>' ;
print '<td align="right"><input type="text" size="2" name="qty" value="1"></td>' ;
print '<td align="right" nowrap><input type="text" size="2" name="remise" value="' . $societe -> remise_client . '">%</td>' ;
print '<td align="center" colspan="3"><input type="submit" class="button" value="' . $langs -> trans ( " Add " ) . '" name="addligne"></td>' ;
print " </tr> \n " ;
2006-02-18 22:43:34 +01:00
2005-10-08 17:54:06 +02:00
print '</form>' ;
}
2005-08-24 01:11:26 +02:00
}
2006-02-18 22:43:34 +01:00
2005-08-24 01:11:26 +02:00
print '</table>' ;
}
2005-08-02 09:23:45 +02:00
}
else
{
dolibarr_print_error ( $db );
}
print '</div>' ;
/*
* Formulaire cloture ( sign<EFBFBD> ou non )
*/
if ( $_GET [ 'action' ] == 'statut' )
{
print '<form action="propal.php?propalid=' . $propal -> id . '" method="post">' ;
print '<table class="border" width="100%">' ;
2005-10-08 17:54:06 +02:00
print '<tr><td>' . $langs -> trans ( 'Note' ) . '</td><td><textarea cols="60" rows="' . ROWS_3 . '" wrap="soft" name="note">' ;
2005-08-24 01:11:26 +02:00
print $propal -> note ;
2005-08-13 23:23:02 +02:00
print '</textarea></td></tr>' ;
print '<tr><td>' . $langs -> trans ( " CloseAs " ) . '</td><td>' ;
2005-08-02 09:23:45 +02:00
print '<input type="hidden" name="action" value="setstatut">' ;
print '<select name="statut">' ;
print '<option value="2">' . $propal -> labelstatut [ 2 ] . '</option>' ;
print '<option value="3">' . $propal -> labelstatut [ 3 ] . '</option>' ;
print '</select>' ;
2005-08-13 23:23:02 +02:00
print '</td></tr>' ;
2006-01-22 22:08:32 +01:00
print '<tr><td align="center" colspan="2">' ;
print '<input type="submit" class="button" name="validate" value="' . $langs -> trans ( 'Validate' ) . '">' ;
print ' <input type="submit" class="button" name="cancel" value="' . $langs -> trans ( 'Cancel' ) . '">' ;
print '</td>' ;
2005-08-02 09:23:45 +02:00
print '</tr></table></form>' ;
}
2005-08-14 03:25:05 +02:00
/*
* Boutons Actions
*/
print '<div class="tabsAction">' ;
2006-01-22 22:08:32 +01:00
if ( $_GET [ 'action' ] != 'statut' )
2005-08-02 09:23:45 +02:00
{
2006-01-22 22:08:32 +01:00
// Valid
if ( $propal -> statut == 0 )
2005-08-14 03:25:05 +02:00
{
2006-01-22 22:08:32 +01:00
if ( $user -> rights -> propale -> valider )
{
print '<a class="butAction" href="propal.php?propalid=' . $propal -> id . '&action=validate">' . $langs -> trans ( 'Validate' ) . '</a>' ;
}
2005-08-14 03:25:05 +02:00
}
2006-01-22 22:08:32 +01:00
// Save
if ( $propal -> statut == 1 )
2005-08-14 03:25:05 +02:00
{
2006-01-22 22:08:32 +01:00
if ( $user -> rights -> propale -> creer )
{
print '<a class="butAction" href="propal.php?propalid=' . $propal -> id . '&action=modif">' . $langs -> trans ( 'Edit' ) . '</a>' ;
}
2005-08-14 03:25:05 +02:00
}
2006-01-22 22:08:32 +01:00
// Build PDF
if ( $user -> rights -> propale -> creer )
2005-08-14 03:25:05 +02:00
{
2006-01-22 22:08:32 +01:00
if ( $propal -> statut < 2 )
{
print '<a class="butAction" href="propal.php?propalid=' . $propal -> id . '&action=builddoc">' . $langs -> trans ( " BuildPDF " ) . '</a>' ;
}
else
{
print '<a class="butAction" href="propal.php?propalid=' . $propal -> id . '&action=builddoc">' . $langs -> trans ( " RebuildPDF " ) . '</a>' ;
}
2005-08-14 03:25:05 +02:00
}
2006-01-22 22:08:32 +01:00
// Send
if ( $propal -> statut == 1 )
2005-08-14 03:25:05 +02:00
{
2006-01-22 22:08:32 +01:00
if ( $user -> rights -> propale -> envoyer )
{
$propref = sanitize_string ( $propal -> ref );
$file = $conf -> propal -> dir_output . '/' . $propref . '/' . $propref . '.pdf' ;
if ( file_exists ( $file ))
{
print '<a class="butAction" href="propal.php?propalid=' . $propal -> id . '&action=presend">' . $langs -> trans ( 'Send' ) . '</a>' ;
}
}
2005-08-14 03:25:05 +02:00
}
2006-01-22 22:08:32 +01:00
// Close
if ( $propal -> statut != 0 )
2005-08-14 03:25:05 +02:00
{
2006-01-22 22:08:32 +01:00
if ( $propal -> statut == 1 && $user -> rights -> propale -> cloturer )
2005-08-14 03:25:05 +02:00
{
2006-01-22 22:08:32 +01:00
print '<a class="butAction" href="propal.php?propalid=' . $propal -> id . '&action=statut">' . $langs -> trans ( 'Close' ) . '</a>' ;
2005-08-14 03:25:05 +02:00
}
}
2006-01-22 22:08:32 +01:00
// Delete
if ( $propal -> statut == 0 )
2005-08-14 03:25:05 +02:00
{
2006-01-22 22:08:32 +01:00
if ( $user -> rights -> propale -> supprimer )
{
print '<a class="butActionDelete" href="propal.php?propalid=' . $propal -> id . '&action=delete">' . $langs -> trans ( 'Delete' ) . '</a>' ;
}
2005-08-14 03:25:05 +02:00
}
}
print '</div>' ;
2005-08-23 21:31:25 +02:00
print '<table width="100%"><tr><td width="50%" valign="top">' ;
2005-08-14 03:25:05 +02:00
2005-08-02 09:23:45 +02:00
2005-08-23 21:31:25 +02:00
/*
* Documents g<EFBFBD> n<EFBFBD> r<EFBFBD> s
*/
$filename = sanitize_string ( $propal -> ref );
$filedir = $conf -> propal -> dir_output . " / " . sanitize_string ( $propal -> ref );
$urlsource = $_SERVER [ " PHP_SELF " ] . " ?propalid= " . $propal -> id ;
$genallowed = $user -> rights -> propale -> creer ;
$delallowed = $user -> rights -> propale -> supprimer ;
$var = true ;
2005-11-04 21:45:02 +01:00
$html -> show_documents ( 'propal' , $filename , $filedir , $urlsource , $genallowed , $delallowed , $propal -> modelpdf );
2005-08-02 09:23:45 +02:00
/*
* Commandes rattach<EFBFBD> es
*/
if ( $conf -> commande -> enabled )
{
$coms = $propal -> associated_orders ();
if ( sizeof ( $coms ) > 0 )
2003-06-19 15:12:27 +02:00
{
2005-08-02 09:23:45 +02:00
print '<br>' ;
print_titre ( $langs -> trans ( 'RelatedOrders' ));
print '<table class="noborder" width="100%">' ;
print '<tr class="liste_titre">' ;
print '<td>' . $langs -> trans ( " Ref " ) . '</td>' ;
print '<td align="center">' . $langs -> trans ( " Date " ) . '</td>' ;
print '<td align="right">' . $langs -> trans ( " Price " ) . '</td>' ;
print '</tr>' ;
$var = true ;
for ( $i = 0 ; $i < sizeof ( $coms ) ; $i ++ )
{
$var =! $var ;
print '<tr ' . $bc [ $var ] . '><td>' ;
print '<a href="' . DOL_URL_ROOT . '/commande/fiche.php?id=' . $coms [ $i ] -> id . '">' . img_object ( $langs -> trans ( " ShowOrder " ), " order " ) . ' ' . $coms [ $i ] -> ref . " </a></td> \n " ;
print '<td align="center">' . dolibarr_print_date ( $coms [ $i ] -> date ) . '</td>' ;
print '<td align="right">' . $coms [ $i ] -> total_ttc . '</td>' ;
print " </tr> \n " ;
}
print '</table>' ;
2005-06-27 23:47:44 +02:00
}
2005-08-02 09:23:45 +02:00
}
print '</td><td valign="top" width="50%">' ;
/*
* Liste des actions propres <EFBFBD> la propal
*/
$sql = 'SELECT id, ' . $db -> pdate ( 'a.datea' ) . ' as da, label, note, fk_user_author' ;
$sql .= ' FROM ' . MAIN_DB_PREFIX . 'actioncomm as a' ;
2005-08-24 01:11:26 +02:00
$sql .= ' WHERE a.propalrowid = ' . $propal -> id ;
if ( $socidp ) $sql .= ' AND a.fk_soc = ' . $socidp ;
2005-08-13 21:16:50 +02:00
$resql = $db -> query ( $sql );
if ( $resql )
2005-08-02 09:23:45 +02:00
{
2005-08-13 21:16:50 +02:00
$num = $db -> num_rows ( $resql );
2005-08-02 09:23:45 +02:00
if ( $num )
2005-07-10 16:51:20 +02:00
{
2005-08-02 09:23:45 +02:00
print_titre ( $langs -> trans ( 'ActionsOnPropal' ));
$i = 0 ;
$total = 0 ;
$var = true ;
print '<table class="border" width="100%">' ;
print '<tr ' . $bc [ $var ] . '><td>' . $langs -> trans ( 'Ref' ) . '</td><td>' . $langs -> trans ( 'Date' ) . '</td><td>' . $langs -> trans ( 'Action' ) . '</td><td>' . $langs -> trans ( 'By' ) . '</td></tr>' ;
print " \n " ;
while ( $i < $num )
{
2005-08-13 21:16:50 +02:00
$objp = $db -> fetch_object ( $resql );
2005-08-02 09:23:45 +02:00
$var =! $var ;
print '<tr ' . $bc [ $var ] . '>' ;
print '<td><a href="' . DOL_URL_ROOT . '/comm/action/fiche.php?id=' . $objp -> id . '">' . img_object ( $langs -> trans ( 'ShowTask' ), 'task' ) . ' ' . $objp -> id . '</a></td>' ;
print '<td>' . dolibarr_print_date ( $objp -> da ) . " </td> \n " ;
print '<td>' . stripslashes ( $objp -> label ) . '</td>' ;
$authoract = new User ( $db );
$authoract -> id = $objp -> fk_user_author ;
$authoract -> fetch ( '' );
print '<td>' . $authoract -> code . '</td>' ;
print " </tr> \n " ;
$i ++ ;
}
print '</table>' ;
2005-07-10 16:51:20 +02:00
}
2005-08-02 09:23:45 +02:00
}
else
{
dolibarr_print_error ( $db );
}
print '</td></tr></table>' ;
/*
* Action presend
*
*/
if ( $_GET [ 'action' ] == 'presend' )
{
print '<br>' ;
print_titre ( $langs -> trans ( 'SendPropalByMail' ));
$liste [ 0 ] = " " ;
2005-08-21 21:07:13 +02:00
foreach ( $societe -> contact_email_array () as $key => $value )
{
$liste [ $key ] = $value ;
}
2005-08-02 09:23:45 +02:00
// Cr<43> <72> l'objet formulaire mail
include_once ( '../html.formmail.class.php' );
$formmail = new FormMail ( $db );
$formmail -> fromname = $user -> fullname ;
$formmail -> frommail = $user -> email ;
$formmail -> withfrom = 1 ;
$formmail -> withto = $liste ;
$formmail -> withcc = 1 ;
$formmail -> withtopic = $langs -> trans ( 'SendPropalRef' , '__PROPREF__' );
$formmail -> withfile = 1 ;
$formmail -> withbody = 1 ;
// Tableau des substitutions
$formmail -> substit [ '__PROPREF__' ] = $propal -> ref ;
// Tableau des param<61> tres compl<70> mentaires
$formmail -> param [ 'action' ] = 'send' ;
$formmail -> param [ 'models' ] = 'propal_send' ;
$formmail -> param [ 'propalid' ] = $propal -> id ;
$formmail -> param [ 'returnurl' ] = DOL_URL_ROOT . '/comm/propal.php?propalid=' . $propal -> id ;
$formmail -> show_form ();
}
2005-07-10 16:51:20 +02:00
2004-10-30 00:17:32 +02:00
}
else
{
2005-08-02 09:23:45 +02:00
/****************************************************************************
* *
* Mode Liste des propales *
* *
****************************************************************************/
$sortorder = $_GET [ 'sortorder' ];
$sortfield = $_GET [ 'sortfield' ];
$page = $_GET [ 'page' ];
$viewstatut = $_GET [ 'viewstatut' ];
if ( ! $sortfield ) $sortfield = 'p.datep' ;
if ( ! $sortorder ) $sortorder = 'DESC' ;
$limit = $conf -> liste_limit ;
$offset = $limit * $page ;
$pageprev = $page - 1 ;
$pagenext = $page + 1 ;
$sql = 'SELECT s.nom, s.idp, s.client, p.rowid as propalid, p.price, p.ref, p.fk_statut, ' . $db -> pdate ( 'p.datep' ) . ' as dp,' . $db -> pdate ( 'p.fin_validite' ) . ' as dfv' ;
$sql .= ' FROM ' . MAIN_DB_PREFIX . 'societe as s, ' . MAIN_DB_PREFIX . 'propal as p' ;
2005-08-25 00:38:00 +02:00
if ( $sall ) $sql .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'propaldet as pd ON p.rowid=pd.fk_propal' ;
2005-08-02 09:23:45 +02:00
$sql .= ' WHERE p.fk_soc = s.idp' ;
if ( ! empty ( $_GET [ 'search_ref' ]))
{
$sql .= " AND p.ref LIKE '% " . $_GET [ 'search_ref' ] . " %' " ;
}
if ( ! empty ( $_GET [ 'search_societe' ]))
{
$sql .= " AND s.nom LIKE '% " . $_GET [ 'search_societe' ] . " %' " ;
}
if ( ! empty ( $_GET [ 'search_montant_ht' ]))
{
$sql .= " AND p.price=' " . $_GET [ 'search_montant_ht' ] . " ' " ;
}
2005-08-25 00:38:00 +02:00
if ( $sall ) $sql .= " AND (s.nom like '% " . $sall . " %' OR p.note like '% " . $sall . " %' OR pd.description like '% " . $sall . " %') " ;
2005-09-27 00:29:55 +02:00
if ( $socidp ) $sql .= ' AND s.idp = ' . $socidp ;
2005-08-02 09:23:45 +02:00
if ( $_GET [ 'viewstatut' ] <> '' )
{
$sql .= ' AND p.fk_statut in (' . $_GET [ 'viewstatut' ] . ')' ;
}
if ( $month > 0 )
{
$sql .= " AND date_format(p.datep, '%Y-%m') = ' $year - $month ' " ;
}
if ( $year > 0 )
{
$sql .= " AND date_format(p.datep, '%Y') = $year " ;
}
if ( strlen ( $_POST [ 'sf_ref' ]) > 0 )
{
$sql .= " AND p.ref like '% " . $_POST [ " sf_ref " ] . " %' " ;
}
$sql .= ' ORDER BY ' . $sortfield . ' ' . $sortorder . ', p.ref DESC' ;
$sql .= $db -> plimit ( $limit + 1 , $offset );
$result = $db -> query ( $sql );
if ( $result )
{
$num = $db -> num_rows ( $result );
print_barre_liste ( $langs -> trans ( 'ListOfProposals' ), $page , 'propal.php' , '&socidp=' . $socidp , $sortfield , $sortorder , '' , $num );
$i = 0 ;
2005-08-15 18:22:20 +02:00
print '<table class="liste" width="100%">' ;
2005-08-02 09:23:45 +02:00
print '<tr class="liste_titre">' ;
print_liste_field_titre ( $langs -> trans ( 'Ref' ), 'propal.php' , 'p.ref' , '' , '&socidp=' . $socidp . '&viewstatut=' . $viewstatut , '' , $sortfield );
print_liste_field_titre ( $langs -> trans ( 'Company' ), 'propal.php' , 's.nom' , '' , '&socidp=' . $socidp . '&viewstatut=' . $viewstatut , '' , $sortfield );
print_liste_field_titre ( $langs -> trans ( 'Date' ), 'propal.php' , 'p.datep' , '' , '&socidp=' . $socidp . '&viewstatut=' . $viewstatut , 'align="center"' , $sortfield );
print_liste_field_titre ( $langs -> trans ( 'DateEndPropalShort' ), 'propal.php' , 'dfv' , '' , '&socidp=' . $socidp . '&viewstatut=' . $viewstatut , 'align="center"' , $sortfield );
print_liste_field_titre ( $langs -> trans ( 'Price' ), 'propal.php' , 'p.price' , '' , '&socidp=' . $socidp . '&viewstatut=' . $viewstatut , 'align="right"' , $sortfield );
print_liste_field_titre ( $langs -> trans ( 'Status' ), 'propal.php' , 'p.fk_statut' , '' , '&socidp=' . $socidp . '&viewstatut=' . $viewstatut , 'align="center"' , $sortfield );
print " </tr> \n " ;
// Lignes des champs de filtre
print '<form method="get" action="propal.php">' ;
2005-08-21 21:07:13 +02:00
2005-08-02 09:23:45 +02:00
print '<tr class="liste_titre">' ;
2005-08-15 18:22:20 +02:00
print '<td class="liste_titre" valign="right">' ;
2005-08-02 09:23:45 +02:00
print '<input class="flat" size="10" type="text" name="search_ref" value="' . $_GET [ 'search_ref' ] . '">' ;
print '</td>' ;
2005-08-15 18:22:20 +02:00
print '<td class="liste_titre" align="left">' ;
2005-08-02 09:23:45 +02:00
print '<input class="flat" type="text" size="40" name="search_societe" value="' . $_GET [ 'search_societe' ] . '">' ;
print '</td>' ;
2005-08-15 18:22:20 +02:00
print '<td class="liste_titre" colspan="2"> </td>' ;
print '<td class="liste_titre" align="right">' ;
2005-08-02 09:23:45 +02:00
print '<input class="flat" type="text" size="10" name="search_montant_ht" value="' . $_GET [ 'search_montant_ht' ] . '">' ;
print '</td>' ;
print '<td class="liste_titre" align="right"><input class="liste_titre" type="image" src="' . DOL_URL_ROOT . '/theme/' . $conf -> theme . '/img/search.png" alt="' . $langs -> trans ( " Search " ) . '">' ;
print '</td>' ;
print " </tr> \n " ;
print '</form>' ;
$var = true ;
while ( $i < min ( $num , $limit ))
2005-11-04 21:45:02 +01:00
{
$objp = $db -> fetch_object ( $result );
$now = time ();
$var =! $var ;
print '<tr ' . $bc [ $var ] . '>' ;
print '<td><a href="propal.php?propalid=' . $objp -> propalid . '">' . img_object ( $langs -> trans ( 'ShowPropal' ), 'propal' ) . ' ' . $objp -> ref . " </a></td> \n " ;
if ( $objp -> client == 1 )
{
$url = DOL_URL_ROOT . '/comm/fiche.php?socid=' . $objp -> idp ;
}
else
{
$url = DOL_URL_ROOT . '/comm/prospect/fiche.php?socid=' . $objp -> idp ;
}
print '<td><a href="' . $url . '">' . img_object ( $langs -> trans ( 'ShowCompany' ), 'company' ) . ' ' . $objp -> nom . '</a></td>' ;
// Date propale
print '<td align="center">' ;
$y = strftime ( '%Y' , $objp -> dp );
$m = strftime ( '%m' , $objp -> dp );
print strftime ( '%d' , $objp -> dp ) . " \n " ;
print ' <a href="propal.php?year=' . $y . '&month=' . $m . '">' ;
print dolibarr_print_date ( $objp -> dp , '%b' ) . " </a> \n " ;
print ' <a href="propal.php?year=' . $y . '">' ;
print strftime ( '%Y' , $objp -> dp ) . " </a></td> \n " ;
// Date fin validite
if ( $objp -> dfv )
{
print '<td align="center">' . dolibarr_print_date ( $objp -> dfv );
if ( $objp -> fk_statut == 1 && $objp -> dfv < ( time () - $conf -> propal -> cloture -> warning_delay )) print img_warning ( $langs -> trans ( " Late " ));
print '</td>' ;
}
else
{
print '<td> </td>' ;
}
print '<td align="right">' . price ( $objp -> price ) . " </td> \n " ;
$propal = New Propal ( $db );
print '<td align="center">' . $propal -> LibStatut ( $objp -> fk_statut , 0 ) . " </td> \n " ;
print " </tr> \n " ;
$total = $total + $objp -> price ;
$subtotal = $subtotal + $objp -> price ;
$i ++ ;
}
2005-08-02 09:23:45 +02:00
print '</table>' ;
$db -> free ( $result );
}
else
{
dolibarr_print_error ( $db );
}
2002-04-30 12:44:42 +02:00
}
$db -> close ();
2004-10-30 00:17:32 +02:00
2005-04-30 16:49:40 +02:00
llxFooter ( '$Date$ - $Revision$' );
2004-10-30 00:17:32 +02:00
2002-04-30 12:44:42 +02:00
?>