From 760e97f483551d95068d0247c6c716d3d692a06a Mon Sep 17 00:00:00 2001 From: Rodolphe Quiedeville Date: Mon, 4 Dec 2006 11:39:18 +0000 Subject: [PATCH] Gere le cas d'unicite d'un entrepot pour l'utilisateur en cours --- htdocs/commande/fiche.php | 2914 +++++++++++++++++++------------------ 1 file changed, 1463 insertions(+), 1451 deletions(-) diff --git a/htdocs/commande/fiche.php b/htdocs/commande/fiche.php index cf33620ea6a..ba1a8f0e000 100644 --- a/htdocs/commande/fiche.php +++ b/htdocs/commande/fiche.php @@ -75,168 +75,168 @@ if ($_GET["projetid"]) // Categorisation dans projet if ($_POST['action'] == 'classin' && $user->rights->commande->creer) { - $commande = new Commande($db); - $commande->fetch($_GET['id']); - $commande->classin($_POST['projetid']); + $commande = new Commande($db); + $commande->fetch($_GET['id']); + $commande->classin($_POST['projetid']); } // Ajout commande if ($_POST['action'] == 'add' && $user->rights->commande->creer) { - $datecommande=''; - $datecommande = @mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']); - $datelivraison = @mktime(12, 0, 0, $_POST['liv_month'],$_POST['liv_day'],$_POST['liv_year']); + $datecommande=''; + $datecommande = @mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']); + $datelivraison = @mktime(12, 0, 0, $_POST['liv_month'],$_POST['liv_day'],$_POST['liv_year']); - $commande = new Commande($db); - $commande->socid=$_POST['socid']; - $commande->fetch_client(); + $commande = new Commande($db); + $commande->socid=$_POST['socid']; + $commande->fetch_client(); - $db->begin(); + $db->begin(); - $commande->date_commande = $datecommande; - $commande->note = $_POST['note']; - $commande->source = $_POST['source_id']; - $commande->projetid = $_POST['projetid']; - //$commande->remise_absolue = $_POST['remise_absolue']; //la remise était appliquée sur les lignes et sur le total - //$commande->remise_percent = $_POST['remise_percent']; - $commande->ref_client = $_POST['ref_client']; - $commande->modelpdf = $_POST['model']; - $commande->cond_reglement_id = $_POST['cond_reglement_id']; - $commande->mode_reglement_id = $_POST['mode_reglement_id']; - $commande->date_livraison = $datelivraison; - $commande->adresse_livraison_id = $_POST['adresse_livraison_id']; - $commande->contactid = $_POST['contactidp']; + $commande->date_commande = $datecommande; + $commande->note = $_POST['note']; + $commande->source = $_POST['source_id']; + $commande->projetid = $_POST['projetid']; + //$commande->remise_absolue = $_POST['remise_absolue']; //la remise était appliquée sur les lignes et sur le total + //$commande->remise_percent = $_POST['remise_percent']; + $commande->ref_client = $_POST['ref_client']; + $commande->modelpdf = $_POST['model']; + $commande->cond_reglement_id = $_POST['cond_reglement_id']; + $commande->mode_reglement_id = $_POST['mode_reglement_id']; + $commande->date_livraison = $datelivraison; + $commande->adresse_livraison_id = $_POST['adresse_livraison_id']; + $commande->contactid = $_POST['contactidp']; - $commande->add_product($_POST['idprod1'],$_POST['qty1'],$_POST['remise_percent1']); - $commande->add_product($_POST['idprod2'],$_POST['qty2'],$_POST['remise_percent2']); - $commande->add_product($_POST['idprod3'],$_POST['qty3'],$_POST['remise_percent3']); - $commande->add_product($_POST['idprod4'],$_POST['qty4'],$_POST['remise_percent4']); - $commande->add_product($_POST['idprod5'],$_POST['qty5'],$_POST['remise_percent5']); - $commande->add_product($_POST['idprod6'],$_POST['qty6'],$_POST['remise_percent6']); - $commande->add_product($_POST['idprod7'],$_POST['qty7'],$_POST['remise_percent7']); - $commande->add_product($_POST['idprod8'],$_POST['qty8'],$_POST['remise_percent8']); + $commande->add_product($_POST['idprod1'],$_POST['qty1'],$_POST['remise_percent1']); + $commande->add_product($_POST['idprod2'],$_POST['qty2'],$_POST['remise_percent2']); + $commande->add_product($_POST['idprod3'],$_POST['qty3'],$_POST['remise_percent3']); + $commande->add_product($_POST['idprod4'],$_POST['qty4'],$_POST['remise_percent4']); + $commande->add_product($_POST['idprod5'],$_POST['qty5'],$_POST['remise_percent5']); + $commande->add_product($_POST['idprod6'],$_POST['qty6'],$_POST['remise_percent6']); + $commande->add_product($_POST['idprod7'],$_POST['qty7'],$_POST['remise_percent7']); + $commande->add_product($_POST['idprod8'],$_POST['qty8'],$_POST['remise_percent8']); - $commande_id = $commande->create($user); + $commande_id = $commande->create($user); - if ($commande_id > 0) + if ($commande_id > 0) + { + // Insertion contact par defaut si défini + if ($_POST["contactidp"]) { - // Insertion contact par defaut si défini - if ($_POST["contactidp"]) - { - $result=$commande->add_contact($_POST["contactidp"],'CUSTOMER','external'); + $result=$commande->add_contact($_POST["contactidp"],'CUSTOMER','external'); - if ($result > 0) - { - $error=0; - } - else - { - $mesg = '
'.$langs->trans("ErrorFailedToAddContact").'
'; - $error=1; - } - } + if ($result > 0) + { + $error=0; + } + else + { + $mesg = '
'.$langs->trans("ErrorFailedToAddContact").'
'; + $error=1; + } + } - $_GET['id'] = $commande->id; - $action = ''; - } + $_GET['id'] = $commande->id; + $action = ''; + } - // Fin création facture, on l'affiche - if ($commande_id > 0 && ! $error) - { - $db->commit(); - } - else - { - $db->rollback(); - $_GET["action"]='create'; - $_GET['socid']=$_POST['socid']; - if (! $mesg) $mesg='
'.$commande->error.'
'; - } + // Fin création facture, on l'affiche + if ($commande_id > 0 && ! $error) + { + $db->commit(); + } + else + { + $db->rollback(); + $_GET["action"]='create'; + $_GET['socid']=$_POST['socid']; + if (! $mesg) $mesg='
'.$commande->error.'
'; + } } // Positionne ref commande client if ($_POST['action'] == 'set_ref_client' && $user->rights->commande->creer) { - $commande = new Commande($db); - $commande->fetch($_GET['id']); - $commande->set_ref_client($user, $_POST['ref_client']); + $commande = new Commande($db); + $commande->fetch($_GET['id']); + $commande->set_ref_client($user, $_POST['ref_client']); } if ($_POST['action'] == 'setremise' && $user->rights->commande->creer) { - $commande = new Commande($db); - $commande->fetch($_GET['id']); - $commande->set_remise($user, $_POST['remise']); + $commande = new Commande($db); + $commande->fetch($_GET['id']); + $commande->set_remise($user, $_POST['remise']); } if ($_POST['action'] == "setabsolutediscount" && $user->rights->propale->creer) { - if ($_POST["remise_id"]) + if ($_POST["remise_id"]) + { + $com = new Commande($db); + $com->id=$_GET['id']; + $ret=$com->fetch($_GET['id']); + if ($ret > 0) { - $com = new Commande($db); - $com->id=$_GET['id']; - $ret=$com->fetch($_GET['id']); - if ($ret > 0) - { - $com->insert_discount($_POST["remise_id"]); - } - else - { - dolibarr_print_error($db,$com->error); - } + $com->insert_discount($_POST["remise_id"]); } + else + { + dolibarr_print_error($db,$com->error); + } + } } if ($_POST['action'] == 'setdate_livraison' && $user->rights->commande->creer) { - $datelivraison=@mktime(0, 0, 0, $_POST['liv_month'], $_POST['liv_day'], $_POST['liv_year']); - $commande = new Commande($db); - $commande->fetch($_GET['id']); - $result=$commande->set_date_livraison($user,$datelivraison); - if ($result < 0) - { - $mesg='
'.$commande->error.'
'; - } + $datelivraison=@mktime(0, 0, 0, $_POST['liv_month'], $_POST['liv_day'], $_POST['liv_year']); + $commande = new Commande($db); + $commande->fetch($_GET['id']); + $result=$commande->set_date_livraison($user,$datelivraison); + if ($result < 0) + { + $mesg='
'.$commande->error.'
'; + } } if ($_POST['action'] == 'setdeliveryadress' && $user->rights->commande->creer) { - $commande = new Commande($db); - $commande->fetch($_GET['id']); - $commande->set_adresse_livraison($user,$_POST['adresse_livraison_id']); + $commande = new Commande($db); + $commande->fetch($_GET['id']); + $commande->set_adresse_livraison($user,$_POST['adresse_livraison_id']); } if ($_POST['action'] == 'setmode' && $user->rights->commande->creer) { - $commande = new Commande($db); - $commande->fetch($_GET['id']); - $result=$commande->mode_reglement($_POST['mode_reglement_id']); - if ($result < 0) dolibarr_print_error($db,$commande->error); + $commande = new Commande($db); + $commande->fetch($_GET['id']); + $result=$commande->mode_reglement($_POST['mode_reglement_id']); + if ($result < 0) dolibarr_print_error($db,$commande->error); } if ($_POST['action'] == 'setconditions' && $user->rights->commande->creer) { - $commande = new Commande($db); - $commande->fetch($_GET['id']); - $result=$commande->cond_reglement($_POST['cond_reglement_id']); - if ($result < 0) dolibarr_print_error($db,$commande->error); + $commande = new Commande($db); + $commande->fetch($_GET['id']); + $result=$commande->cond_reglement($_POST['cond_reglement_id']); + if ($result < 0) dolibarr_print_error($db,$commande->error); } if ($_REQUEST['action'] == 'setremisepercent' && $user->rights->facture->creer) { - $commande = new Commande($db); - $commande->fetch($_REQUEST['id']); - $result = $commande->set_remise($user, $_POST['remise_percent']); - $_GET['id']=$_REQUEST['id']; + $commande = new Commande($db); + $commande->fetch($_REQUEST['id']); + $result = $commande->set_remise($user, $_POST['remise_percent']); + $_GET['id']=$_REQUEST['id']; } if ($_REQUEST['action'] == 'setremiseabsolue' && $user->rights->facture->creer) { - $commande = new Commande($db); - $commande->fetch($_REQUEST['id']); - $result = $commande->set_remise_absolue($user, $_POST['remise_absolue']); - $_GET['id']=$_REQUEST['id']; + $commande = new Commande($db); + $commande->fetch($_REQUEST['id']); + $result = $commande->set_remise_absolue($user, $_POST['remise_absolue']); + $_GET['id']=$_REQUEST['id']; } /* @@ -244,74 +244,74 @@ if ($_REQUEST['action'] == 'setremiseabsolue' && $user->rights->facture->creer) */ if ($_POST['action'] == 'addligne' && $user->rights->commande->creer) { - if ($_POST['qty'] && (($_POST['pu'] && $_POST['desc']) || $_POST['idprod'])) + if ($_POST['qty'] && (($_POST['pu'] && $_POST['desc']) || $_POST['idprod'])) + { + $commande = new Commande($db); + $ret=$commande->fetch($_POST['id']); + $soc = new Societe($db, $commande->socid); + $soc->fetch($commande->socid); + + if ($ret < 0) { - $commande = new Commande($db); - $ret=$commande->fetch($_POST['id']); - $soc = new Societe($db, $commande->socid); - $soc->fetch($commande->socid); - - if ($ret < 0) - { - dolibarr_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['idprod']) - { - $prod = new Product($db, $_POST['idprod']); - $prod->fetch($_POST['idprod']); - - $libelle = $prod->libelle; - - // multiprix - if ($conf->global->PRODUIT_MULTIPRICES == 1) - { - $pu = $prod->multiprices[$soc->price_level]; - } - else - { - $pu=$prod->price; - } - - // La description de la ligne est celle saisie ou - // celle du produit si (non saisi + PRODUIT_CHANGE_PROD_DESC défini) - // \todo Ne faut-il pas rendre $conf->global->PRODUIT_CHANGE_PROD_DESC toujours a on - $desc=$_POST['np_desc']; - if (! $desc && $conf->global->PRODUIT_CHANGE_PROD_DESC) - { - $desc = $prod->description; - } - - $tva_tx = get_default_tva($mysoc,$soc,$prod->tva_tx); - } - else - { - $pu=$_POST['pu']; - $tva_tx=$_POST['tva_tx']; - $desc=$_POST['desc']; - } - - $commande->addline( - $_POST['id'], - $desc, - $pu, - $_POST['qty'], - $tva_tx, - $_POST['idprod'], - $_POST['remise_percent'] - ); - - if ($_REQUEST['lang_id']) - { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); - $outputlangs->setDefaultLang($_REQUEST['lang_id']); - } - commande_pdf_create($db, $commande->id, $commande->modelpdf, $outputlangs); + dolibarr_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['idprod']) + { + $prod = new Product($db, $_POST['idprod']); + $prod->fetch($_POST['idprod']); + + $libelle = $prod->libelle; + + // multiprix + if ($conf->global->PRODUIT_MULTIPRICES == 1) + { + $pu = $prod->multiprices[$soc->price_level]; + } + else + { + $pu=$prod->price; + } + + // La description de la ligne est celle saisie ou + // celle du produit si (non saisi + PRODUIT_CHANGE_PROD_DESC défini) + // \todo Ne faut-il pas rendre $conf->global->PRODUIT_CHANGE_PROD_DESC toujours a on + $desc=$_POST['np_desc']; + if (! $desc && $conf->global->PRODUIT_CHANGE_PROD_DESC) + { + $desc = $prod->description; + } + + $tva_tx = get_default_tva($mysoc,$soc,$prod->tva_tx); + } + else + { + $pu=$_POST['pu']; + $tva_tx=$_POST['tva_tx']; + $desc=$_POST['desc']; + } + + $commande->addline( + $_POST['id'], + $desc, + $pu, + $_POST['qty'], + $tva_tx, + $_POST['idprod'], + $_POST['remise_percent'] + ); + + if ($_REQUEST['lang_id']) + { + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs->setDefaultLang($_REQUEST['lang_id']); + } + commande_pdf_create($db, $commande->id, $commande->modelpdf, $outputlangs); + } } /* @@ -319,107 +319,107 @@ if ($_POST['action'] == 'addligne' && $user->rights->commande->creer) */ if ($_POST['action'] == 'updateligne' && $user->rights->commande->creer && $_POST['save'] == $langs->trans('Save')) { - $commande = new Commande($db,'',$_POST['id']); - if (! $commande->fetch($_POST['id']) > 0) dolibarr_print_error($db); + $commande = new Commande($db,'',$_POST['id']); + if (! $commande->fetch($_POST['id']) > 0) dolibarr_print_error($db); - $result = $commande->updateline($_POST['elrowid'], - $_POST['eldesc'], - $_POST['pu'], - $_POST['qty'], - $_POST['elremise_percent'], - $_POST['tva_tx'] - ); + $result = $commande->updateline($_POST['elrowid'], + $_POST['eldesc'], + $_POST['pu'], + $_POST['qty'], + $_POST['elremise_percent'], + $_POST['tva_tx'] + ); - if ($result >= 0) + if ($result >= 0) + { + if ($_REQUEST['lang_id']) { - if ($_REQUEST['lang_id']) - { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); - $outputlangs->setDefaultLang($_REQUEST['lang_id']); - } - commande_pdf_create($db, $commande->id, $commande->modelpdf, $outputlangs); - } - else - { - dolibarr_print_error($db,$commande->error); - exit; + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs->setDefaultLang($_REQUEST['lang_id']); } + commande_pdf_create($db, $commande->id, $commande->modelpdf, $outputlangs); + } + else + { + dolibarr_print_error($db,$commande->error); + exit; + } - $_GET['id']=$_POST['id']; // Pour réaffichage de la fiche en cours d'édition + $_GET['id']=$_POST['id']; // Pour réaffichage de la fiche en cours d'édition } if ($_POST['action'] == 'updateligne' && $user->rights->commande->creer && $_POST['cancel'] == $langs->trans('Cancel')) { - Header('Location: fiche.php?id='.$_POST['id']); // Pour réaffichage de la fiche en cours d'édition - exit; + Header('Location: fiche.php?id='.$_POST['id']); // Pour réaffichage de la fiche en cours d'édition + exit; } if ($_GET['action'] == 'deleteline' && $user->rights->commande->creer && !$conf->global->PRODUIT_CONFIRM_DELETE_LINE) { - $commande = new Commande($db); - $commande->fetch($_GET['id']); - $result = $commande->delete_line($_GET['lineid']); - if ($_REQUEST['lang_id']) - { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); - $outputlangs->setDefaultLang($_REQUEST['lang_id']); - } - commande_pdf_create($db, $_GET['id'], $commande->modelpdf, $outputlangs); - Header('Location: fiche.php?id='.$_GET['id']); - exit; + $commande = new Commande($db); + $commande->fetch($_GET['id']); + $result = $commande->delete_line($_GET['lineid']); + if ($_REQUEST['lang_id']) + { + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs->setDefaultLang($_REQUEST['lang_id']); + } + commande_pdf_create($db, $_GET['id'], $commande->modelpdf, $outputlangs); + Header('Location: fiche.php?id='.$_GET['id']); + exit; } if ($_POST['action'] == 'confirm_valid' && $_POST['confirm'] == 'yes' && $user->rights->commande->valider) { - $commande = new Commande($db); - $commande->fetch($_GET['id']); - $soc = new Societe($db); - $soc->fetch($commande->socid); - $result = $commande->valid($user); + $commande = new Commande($db); + $commande->fetch($_GET['id']); + $soc = new Societe($db); + $soc->fetch($commande->socid); + $result = $commande->valid($user); } if ($_POST['action'] == 'confirm_close' && $_POST['confirm'] == 'yes' && $user->rights->commande->creer) { - $commande = new Commande($db); - $commande->fetch($_GET['id']); - $result = $commande->cloture($user); + $commande = new Commande($db); + $commande->fetch($_GET['id']); + $result = $commande->cloture($user); } if ($_POST['action'] == 'confirm_cancel' && $_POST['confirm'] == 'yes' && $user->rights->commande->valider) { - $commande = new Commande($db); - $commande->fetch($_GET['id']); - $result = $commande->cancel($user); + $commande = new Commande($db); + $commande->fetch($_GET['id']); + $result = $commande->cancel($user); } if ($_POST['action'] == 'confirm_delete' && $_POST['confirm'] == 'yes') { - if ($user->rights->commande->supprimer ) - { - $commande = new Commande($db); - $commande->fetch($_GET['id']); - $commande->delete(); - Header('Location: index.php'); - exit; - } + if ($user->rights->commande->supprimer ) + { + $commande = new Commande($db); + $commande->fetch($_GET['id']); + $commande->delete(); + Header('Location: index.php'); + exit; + } } if ($_POST['action'] == 'confirm_deleteproductline' && $_POST['confirm'] == 'yes' && $conf->global->PRODUIT_CONFIRM_DELETE_LINE) { - if ($user->rights->commande->creer) + if ($user->rights->commande->creer) { - $commande = new Commande($db); - $commande->fetch($_GET['id']); - $commande->delete_line($_GET['lineid']); - if ($_REQUEST['lang_id']) - { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); - $outputlangs->setDefaultLang($_REQUEST['lang_id']); - } - commande_pdf_create($db, $_GET['id'], $commande->modelpdf, $outputlangs); + $commande = new Commande($db); + $commande->fetch($_GET['id']); + $commande->delete_line($_GET['lineid']); + if ($_REQUEST['lang_id']) + { + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs->setDefaultLang($_REQUEST['lang_id']); + } + commande_pdf_create($db, $_GET['id'], $commande->modelpdf, $outputlangs); } - Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$_GET['id']); - exit; + Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$_GET['id']); + exit; } if ($_GET['action'] == 'modif' && $user->rights->commande->creer) @@ -438,74 +438,74 @@ if ($_GET['action'] == 'modif' && $user->rights->commande->creer) if ($_GET['action'] == 'up' && $user->rights->commande->creer) { - $commande = new Commande($db,'',$_GET['id']); - $commande->fetch($_GET['id']); - $commande->line_up($_GET['rowid']); - if ($_REQUEST['lang_id']) - { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); - $outputlangs->setDefaultLang($_REQUEST['lang_id']); - } + $commande = new Commande($db,'',$_GET['id']); + $commande->fetch($_GET['id']); + $commande->line_up($_GET['rowid']); + if ($_REQUEST['lang_id']) + { + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs->setDefaultLang($_REQUEST['lang_id']); + } commande_pdf_create($db, $commande->id, $commande->modelpdf, $outputlangs); - Header ('Location: '.$_SERVER["PHP_SELF"].'?id='.$_GET["id"].'#'.$_GET['rowid']); + Header ('Location: '.$_SERVER["PHP_SELF"].'?id='.$_GET["id"].'#'.$_GET['rowid']); } if ($_GET['action'] == 'down' && $user->rights->commande->creer) { - $commande = new Commande($db,'',$_GET['id']); - $commande->fetch($_GET['id']); - $commande->line_down($_GET['rowid']); - if ($_REQUEST['lang_id']) - { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); - $outputlangs->setDefaultLang($_REQUEST['lang_id']); - } + $commande = new Commande($db,'',$_GET['id']); + $commande->fetch($_GET['id']); + $commande->line_down($_GET['rowid']); + if ($_REQUEST['lang_id']) + { + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs->setDefaultLang($_REQUEST['lang_id']); + } commande_pdf_create($db, $commande->id, $commande->modelpdf, $outputlangs); - Header ('Location: '.$_SERVER["PHP_SELF"].'?id='.$_GET["id"].'#'.$_GET['rowid']); + Header ('Location: '.$_SERVER["PHP_SELF"].'?id='.$_GET["id"].'#'.$_GET['rowid']); } if ($_REQUEST['action'] == 'builddoc') // En get ou en post { - /* - * Generation de la commande - * définit dans /includes/modules/commande/modules_commande.php - */ + /* + * Generation de la commande + * définit dans /includes/modules/commande/modules_commande.php + */ - // Sauvegarde le dernier modèle choisi pour générer un document - $commande = new Commande($db, 0, $_REQUEST['id']); - $commande->fetch($_REQUEST['id']); - if ($_REQUEST['model']) - { - $commande->set_pdf_model($user, $_REQUEST['model']); - } - - if ($_REQUEST['lang_id']) - { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); - $outputlangs->setDefaultLang($_REQUEST['lang_id']); - } - $result=commande_pdf_create($db, $commande->id,$commande->modelpdf,$outputlangs); - if ($result <= 0) + // Sauvegarde le dernier modèle choisi pour générer un document + $commande = new Commande($db, 0, $_REQUEST['id']); + $commande->fetch($_REQUEST['id']); + if ($_REQUEST['model']) { - dolibarr_print_error($db,$result); - exit; + $commande->set_pdf_model($user, $_REQUEST['model']); } - else + + if ($_REQUEST['lang_id']) { - Header ('Location: '.$_SERVER["PHP_SELF"].'?id='.$commande->id.'#builddoc'); + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs->setDefaultLang($_REQUEST['lang_id']); + } + $result=commande_pdf_create($db, $commande->id,$commande->modelpdf,$outputlangs); + if ($result <= 0) + { + dolibarr_print_error($db,$result); + exit; + } + else + { + Header ('Location: '.$_SERVER["PHP_SELF"].'?id='.$commande->id.'#builddoc'); } } // Efface les fichiers if ($action=='remove_file') { - $com = new Commande($db); + $com = new Commande($db); - if ($com->fetch($id)) + if ($com->fetch($id)) { $upload_dir = $conf->commande->dir_output . "/"; - $file = $upload_dir . '/' . urldecode($_GET['file']); - dol_delete_file($file); + $file = $upload_dir . '/' . urldecode($_GET['file']); + dol_delete_file($file); $mesg = '
'.$langs->trans("FileWasRemoved").'
'; } } @@ -515,153 +515,153 @@ if ($action=='remove_file') */ if ($_POST['action'] == 'send') { - $langs->load('mails'); + $langs->load('mails'); - $commande= new Commande($db); - if ( $commande->fetch($_POST['orderid']) ) + $commande= new Commande($db); + if ( $commande->fetch($_POST['orderid']) ) { - $orderref = sanitize_string($commande->ref); - $file = $conf->commande->dir_output . '/' . $orderref . '/' . $orderref . '.pdf'; + $orderref = sanitize_string($commande->ref); + $file = $conf->commande->dir_output . '/' . $orderref . '/' . $orderref . '.pdf'; - if (is_readable($file)) + if (is_readable($file)) { - $commande->fetch_client(); + $commande->fetch_client(); - if ($_POST['sendto']) - { - // Le destinataire a été fourni via le champ libre - $sendto = $_POST['sendto']; - $sendtoid = 0; - } - elseif ($_POST['receiver']) - { - // Le destinataire a été fourni via la liste déroulante - if ($_POST['receiver'] < 0) // Id du tiers - { - $sendto = $commande->client->email; - $sendtoid = 0; - } - else // Id du contact - { - $sendto = $commande->client->contact_get_email($_POST['receiver']); - $sendtoid = $_POST['receiver']; - } - } + if ($_POST['sendto']) + { + // Le destinataire a été fourni via le champ libre + $sendto = $_POST['sendto']; + $sendtoid = 0; + } + elseif ($_POST['receiver']) + { + // Le destinataire a été fourni via la liste déroulante + if ($_POST['receiver'] < 0) // Id du tiers + { + $sendto = $commande->client->email; + $sendtoid = 0; + } + else // Id du contact + { + $sendto = $commande->client->contact_get_email($_POST['receiver']); + $sendtoid = $_POST['receiver']; + } + } - if (strlen($sendto)) + if (strlen($sendto)) { - $from = $_POST['fromname'] . ' <' . $_POST['frommail'] .'>'; - $replyto = $_POST['replytoname']. ' <' . $_POST['replytomail'].'>'; - $message = $_POST['message']; - $sendtocc = $_POST['sendtocc']; - $deliveryreceipt = $_POST['deliveryreceipt']; + $from = $_POST['fromname'] . ' <' . $_POST['frommail'] .'>'; + $replyto = $_POST['replytoname']. ' <' . $_POST['replytomail'].'>'; + $message = $_POST['message']; + $sendtocc = $_POST['sendtocc']; + $deliveryreceipt = $_POST['deliveryreceipt']; - if ($_POST['action'] == 'send') + if ($_POST['action'] == 'send') { - $subject = $_POST['subject']; + $subject = $_POST['subject']; - if($subject == '') - { - $subject = $langs->trans('Order').' '.$commande->ref; - } + if($subject == '') + { + $subject = $langs->trans('Order').' '.$commande->ref; + } $actiontypeid=8; $actionmsg ='Mail envoyé par '.$from.' à '.$sendto.'.
'; if ($message) - { - $actionmsg.='Texte utilisé dans le corps du message:
'; - $actionmsg.=$message; - } + { + $actionmsg.='Texte utilisé dans le corps du message:
'; + $actionmsg.=$message; + } $actionmsg2='Envoi commande par mail'; } - $filepath[0] = $file; - $filename[0] = $commande->ref.'.pdf'; - $mimetype[0] = 'application/pdf'; - if ($_FILES['addedfile']['tmp_name']) + $filepath[0] = $file; + $filename[0] = $commande->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']; + $filepath[1] = $_FILES['addedfile']['tmp_name']; + $filename[1] = $_FILES['addedfile']['name']; + $mimetype[1] = $_FILES['addedfile']['type']; } - // Envoi de la commande - $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).'.
'; + // Envoi de la commande + $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).'.
'; - // Insertion action - require_once(DOL_DOCUMENT_ROOT."/contact.class.php"); - require_once(DOL_DOCUMENT_ROOT.'/actioncomm.class.php'); - $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,$commande->socid); - $actioncomm->user = $user; // User qui a fait l'action - $actioncomm->orderrowid = $commande->id; + // Insertion action + require_once(DOL_DOCUMENT_ROOT."/contact.class.php"); + require_once(DOL_DOCUMENT_ROOT.'/actioncomm.class.php'); + $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,$commande->socid); + $actioncomm->user = $user; // User qui a fait l'action + $actioncomm->orderrowid = $commande->id; - $ret=$actioncomm->add($user); // User qui saisit l'action - if ($ret < 0) - { - dolibarr_print_error($db); - } - else - { - // Renvoie sur la fiche - Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$commande->id.'&msg='.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.='
'; - } - } + $ret=$actioncomm->add($user); // User qui saisit l'action + if ($ret < 0) + { + dolibarr_print_error($db); + } + else + { + // Renvoie sur la fiche + Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$commande->id.'&msg='.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 + else { - $langs->load("other"); - $mesg='
'.$langs->trans('ErrorMailRecipientIsEmpty').' !
'; - dolibarr_syslog('Recipient email is empty'); + $langs->load("other"); + $mesg='
'.$langs->trans('ErrorMailRecipientIsEmpty').' !
'; + dolibarr_syslog('Recipient email is empty'); } } - else + else { - $langs->load("other"); - $mesg='
'.$langs->trans('ErrorCantReadFile',$file).'
'; - dolibarr_syslog('Failed to read file: '.$file); + $langs->load("other"); + $mesg='
'.$langs->trans('ErrorCantReadFile',$file).'
'; + dolibarr_syslog('Failed to read file: '.$file); } } - else + else { - $langs->load("other"); - $mesg='
'.$langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")).'
'; - dolibarr_syslog('Impossible de lire les données de la facture. Le fichier facture n\'a peut-être pas été généré.'); + $langs->load("other"); + $mesg='
'.$langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")).'
'; + dolibarr_syslog('Impossible de lire les données de la facture. Le fichier facture n\'a peut-être pas été généré.'); } } @@ -678,306 +678,306 @@ $html = new Form($db); *********************************************************************/ if ($_GET['action'] == 'create' && $user->rights->commande->creer) { - print_titre($langs->trans('CreateOrder')); + print_titre($langs->trans('CreateOrder')); - if ($mesg) print $mesg.'
'; + if ($mesg) print $mesg.'
'; - $new_commande = new Commande($db); + $new_commande = new Commande($db); - if ($propalid) + if ($propalid) + { + $sql = 'SELECT s.nom, s.prefix_comm, s.idp, p.price, p.remise, p.remise_percent, p.tva, p.total, p.ref, p.fk_cond_reglement, p.fk_mode_reglement, '.$db->pdate('p.datep').' as dp, c.id as statut, c.label as lst'; + $sql .= ' FROM '.MAIN_DB_PREFIX.'societe as s, '.MAIN_DB_PREFIX.'propal as p, '.MAIN_DB_PREFIX.'c_propalst as c'; + $sql .= ' WHERE p.fk_soc = s.idp AND p.fk_statut = c.id'; + $sql .= ' AND p.rowid = '.$propalid; + } + else + { + $sql = 'SELECT s.nom, s.prefix_comm, s.idp, s.mode_reglement, s.cond_reglement '; + $sql .= 'FROM '.MAIN_DB_PREFIX.'societe as s '; + $sql .= 'WHERE s.idp = '.$_GET['socid']; + } + $resql = $db->query($sql); + if ( $resql ) + { + $num = $db->num_rows($resql); + if ($num) { - $sql = 'SELECT s.nom, s.prefix_comm, s.idp, p.price, p.remise, p.remise_percent, p.tva, p.total, p.ref, p.fk_cond_reglement, p.fk_mode_reglement, '.$db->pdate('p.datep').' as dp, c.id as statut, c.label as lst'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'societe as s, '.MAIN_DB_PREFIX.'propal as p, '.MAIN_DB_PREFIX.'c_propalst as c'; - $sql .= ' WHERE p.fk_soc = s.idp AND p.fk_statut = c.id'; - $sql .= ' AND p.rowid = '.$propalid; - } - else - { - $sql = 'SELECT s.nom, s.prefix_comm, s.idp, s.mode_reglement, s.cond_reglement '; - $sql .= 'FROM '.MAIN_DB_PREFIX.'societe as s '; - $sql .= 'WHERE s.idp = '.$_GET['socid']; - } - $resql = $db->query($sql); - if ( $resql ) - { - $num = $db->num_rows($resql); - if ($num) - { - $obj = $db->fetch_object($resql); + $obj = $db->fetch_object($resql); - $soc = new Societe($db); - $soc->fetch($obj->idp); + $soc = new Societe($db); + $soc->fetch($obj->idp); - $nbrow=7; + $nbrow=7; - print '
'; - print ''; - print '' ."\n"; - print ''; - print ''; + print ''; + print ''; + print '' ."\n"; + print ''; + print ''; - print ''; + print '
'; - // Reference - print ''; - print ''; + // Reference + print ''; + print ''; - // Reference client - print ''; - print ''; - print ''; + // Reference client + print ''; + print ''; + print ''; - // Client - print ''; - print ''; + // Client + print ''; + print ''; - /* - * Contact de la propale - */ - print "'; + /* + * Contact de la propale + */ + print "'; - // Ligne info remises tiers - print ''; + // Ligne info remises tiers + print ''; - // Date - print ''; + // Date + print ''; - // Date de livraison - if ($conf->expedition->enabled) + // Date de livraison + if ($conf->expedition->enabled) + { + print ""; + $tmpdte = time() + ((7*$conf->global->DATE_LIVRAISON_WEEK_DELAY) * 24 * 60 * 60); + $html->select_date($tmpdte,'liv_','','',1,"crea_commande"); + } + else + { + $html->select_date(-1,'liv_','','',1,"crea_commande"); + } + print ""; - // Adresse de livraison - print ''; + if ($numaddress==0) + { + print '   '.$langs->trans("AddAddress").''; } - // Conditions de réglement - print ''; + print ''; + } - // Mode de réglement - print ''; + // Conditions de réglement + print ''; - // Réductions relatives (Remises-Ristournes-Rabbais) -/* Une réduction doit s'appliquer obligatoirement sur des lignes de factures - et non globalement - $relative_discount=$soc->remise_client; - print ''; - print ''; -*/ + // Mode de réglement + print ''; - // Réductions (Remises-Ristournes-Rabbais) -/* Les remises absolues doivent s'appliquer par ajout de lignes spécialisées - $absolute_discount=$soc->getCurrentDiscount(); - print ''; - print ''; -*/ + // Réductions relatives (Remises-Ristournes-Rabbais) + /* Une réduction doit s'appliquer obligatoirement sur des lignes de factures + et non globalement + $relative_discount=$soc->remise_client; + print ''; + print ''; + */ - // Projet - if ($conf->projet->enabled) - { - print ''; - } + // Réductions (Remises-Ristournes-Rabbais) + /* Les remises absolues doivent s'appliquer par ajout de lignes spécialisées + $absolute_discount=$soc->getCurrentDiscount(); + print ''; + print ''; + */ - print ''; - print ''; - print '"; - - if ($propalid > 0) - { - $amount = ($obj->price); - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''; - - print ''; - print ''; - print ''; - print ''; - } - else - { - if ($conf->global->PRODUCT_SHOW_WHEN_CREATE) - { - /* - * Services/produits prédéfinis - */ - $NBLINES=8; - - print ''; - } - } - - /* - * - */ - print ''; - print '
'.$langs->trans('Ref').''.$langs->trans("Draft").''.$langs->trans('NotePublic').'
'.$langs->trans('Ref').''.$langs->trans("Draft").''.$langs->trans('NotePublic').'
'.$langs->trans('RefCustomer').''; - print '
'.$langs->trans('RefCustomer').''; + print '
'.$langs->trans('Customer').''.$soc->getNomUrl(1).'
'.$langs->trans('Customer').''.$soc->getNomUrl(1).'
".$langs->trans("DefaultContact").''; - $html->select_contacts($soc->id,$setcontact,'contactidp',1); - print '
".$langs->trans("DefaultContact").''; + $html->select_contacts($soc->id,$setcontact,'contactidp',1); + print '
'.$langs->trans('Discounts').''; - if ($soc->remise_client) print $langs->trans("CompanyHasRelativeDiscount",$soc->remise_client); - else print $langs->trans("CompanyHasNoRelativeDiscount"); - $absolute_discount=$soc->getCurrentDiscount(); - print '. '; - if ($absolute_discount) print $langs->trans("CompanyHasAbsoluteDiscount",$absolute_discount,$langs->trans("Currency".$conf->monnaie)); - else print $langs->trans("CompanyHasNoAbsoluteDiscount"); - print '.'; - print '
'.$langs->trans('Discounts').''; + if ($soc->remise_client) print $langs->trans("CompanyHasRelativeDiscount",$soc->remise_client); + else print $langs->trans("CompanyHasNoRelativeDiscount"); + $absolute_discount=$soc->getCurrentDiscount(); + print '. '; + if ($absolute_discount) print $langs->trans("CompanyHasAbsoluteDiscount",$absolute_discount,$langs->trans("Currency".$conf->monnaie)); + else print $langs->trans("CompanyHasNoAbsoluteDiscount"); + print '.'; + print '
'.$langs->trans('Date').''; - $html->select_date('','re','','','',"crea_commande"); - print '
'.$langs->trans('Date').''; + $html->select_date('','re','','','',"crea_commande"); + print '
".$langs->trans("DateDelivery").""; + if ($conf->global->DATE_LIVRAISON_WEEK_DELAY) { - print "
".$langs->trans("DateDelivery").""; - if ($conf->global->DATE_LIVRAISON_WEEK_DELAY) - { - $tmpdte = time() + ((7*$conf->global->DATE_LIVRAISON_WEEK_DELAY) * 24 * 60 * 60); - $html->select_date($tmpdte,'liv_','','',1,"crea_commande"); - } - else - { - $html->select_date(-1,'liv_','','',1,"crea_commande"); - } - print "
'.$langs->trans('DeliveryAddress').''; - $numaddress = $html->select_adresse_livraison($soc->adresse_livraison_id, $_GET['socid'],'adresse_livraison_id',1); + // Adresse de livraison + print '
'.$langs->trans('DeliveryAddress').''; + $numaddress = $html->select_adresse_livraison($soc->adresse_livraison_id, $_GET['socid'],'adresse_livraison_id',1); - if ($numaddress==0) - { - print '   '.$langs->trans("AddAddress").''; - } - - print '
'.$langs->trans('PaymentConditionsShort').''; - $html->select_conditions_paiements($soc->cond_reglement,'cond_reglement_id',-1,1); - print '
'.$langs->trans('PaymentMode').''; - $html->select_types_paiements($soc->mode_reglement,'mode_reglement_id'); - print '
'.$langs->trans('PaymentConditionsShort').''; + $html->select_conditions_paiements($soc->cond_reglement,'cond_reglement_id',-1,1); + print '
'.$langs->trans("CustomerRelativeDiscount").''; - print ' %'; - print ''.img_info().' '; - if ($relative_discount) - { - print $langs->trans("CompanyHasRelativeDiscount",$relative_discount); - } - else - { - print $langs->trans("CompanyHasNoRelativeDiscount"); - } - print '
'.$langs->trans('PaymentMode').''; + $html->select_types_paiements($soc->mode_reglement,'mode_reglement_id'); + print '
'.$langs->trans("CustomerAbsoluteDiscount").''; - print ' '.$langs->trans("Currency".$conf->monnaie); - print ''.img_info().' '; - if ($absolute_discount) - { - print $langs->trans("CompanyHasAbsoluteDiscount",$absolute_discount,$langs->trans("Currency".$conf->monnaie)); - } - else - { - print $langs->trans("CompanyHasNoAbsoluteDiscount"); - } - print '
'.$langs->trans("CustomerRelativeDiscount").''; + print ' %'; + print ''.img_info().' '; + if ($relative_discount) + { + print $langs->trans("CompanyHasRelativeDiscount",$relative_discount); + } + else + { + print $langs->trans("CompanyHasNoRelativeDiscount"); + } + print '
'.$langs->trans('Project').''; - $numprojet=$html->select_projects($soc->id,$projetid,'projetid'); - if ($numprojet==0) - { - print '   id.'&action=create>'.$langs->trans("AddProject").''; - } - print '
'.$langs->trans("CustomerAbsoluteDiscount").''; + print ' '.$langs->trans("Currency".$conf->monnaie); + print ''.img_info().' '; + if ($absolute_discount) + { + print $langs->trans("CompanyHasAbsoluteDiscount",$absolute_discount,$langs->trans("Currency".$conf->monnaie)); + } + else + { + print $langs->trans("CompanyHasNoAbsoluteDiscount"); + } + print '
'.$langs->trans('Source').''; - $html->selectSourcesCommande('','source_id',1); - print '
'.$langs->trans('Model').''; - // pdf - include_once(DOL_DOCUMENT_ROOT.'/includes/modules/commande/modules_commande.php'); - $model=new ModelePDFCommandes(); - $liste=$model->liste_modeles($db); - $html->select_array('model',$liste,$conf->global->COMMANDE_ADDON_PDF); - print "
'.$langs->trans('Ref').''.$obj->ref.'
'.$langs->trans('TotalTTC').''.price($amount).'
'.$langs->trans('VAT').''.price($obj->tva).'
'.$langs->trans('TotalTTC').''.price($obj->total).'
'; - - print ''; - print ''; - print ''; - print ''; - print ''; - for ($i = 1 ; $i <= $NBLINES ; $i++) - { - print ''; - print ''; - print ''; - } - - print '
'.$langs->trans('ProductsAndServices').''.$langs->trans('Qty').''.$langs->trans('ReductionShort').'
'; - // multiprix - if($conf->global->PRODUIT_MULTIPRICES == 1) - print $html->select_produits('','idprod'.$i,'',$conf->produit->limit_size,$soc->price_level); - else - print $html->select_produits('','idprod'.$i,'',$conf->produit->limit_size); - print '%
'; - print '
'; - - print '
'; - - if ($propalid) - { - /* - * Produits - */ - print_titre($langs->trans('Products')); - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - - $var=false; - - $sql = 'SELECT pt.rowid, p.label as product, p.ref, pt.price, pt.qty, p.rowid as prodid, pt.remise_percent'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'propaldet as pt, '.MAIN_DB_PREFIX.'product as p WHERE pt.fk_product = p.rowid AND pt.fk_propal = '.$propalid; - $sql .= ' ORDER BY pt.rowid ASC'; - $result = $db->query($sql); - if ($result) - { - $num = $db->num_rows($result); - $i = 0; - while ($i < $num) - { - $objp = $db->fetch_object($result); - $var=!$var; - print ''; - print ''; - print ''; - print ''; - print ''; - $i++; - } - } - - $sql = 'SELECT pt.rowid, pt.description as product, pt.price, pt.qty, pt.remise_percent'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'propaldet as pt WHERE pt.fk_propal = '.$propalid.' AND pt.fk_product = 0'; - $sql .= ' ORDER BY pt.rowid ASC'; - if ($db->query($sql)) - { - $num = $db->num_rows(); - $i = 0; - while ($i < $num) - { - $objp = $db->fetch_object(); - $var=!$var; - print ''; - print ''; - print ''; - print ''; - print ''; - $i++; - } - } - else - { - dolibarr_print_error($db); - } - - print '
'.$langs->trans('Ref').''.$langs->trans('Product').''.$langs->trans('Price').''.$langs->trans('Qty').''.$langs->trans('Reductionshort').'
['.$objp->ref.']'.img_object($langs->trans('ShowProduct'),'product').' '.$objp->product.''.price($objp->price).''.$objp->qty.'
'.$objp->remise_percent.'%
 '.img_object($langs->trans('ShowProduct'),'product').' '.$objp->product.''.price($objp->price).''.$objp->qty.'
'.$objp->remise_percent.'%
'; - } + // Projet + if ($conf->projet->enabled) + { + print ''.$langs->trans('Project').''; + $numprojet=$html->select_projects($soc->id,$projetid,'projetid'); + if ($numprojet==0) + { + print '   id.'&action=create>'.$langs->trans("AddProject").''; } + print ''; + } + + print ''.$langs->trans('Source').''; + $html->selectSourcesCommande('','source_id',1); + print ''; + print ''.$langs->trans('Model').''; + print ''; + // pdf + include_once(DOL_DOCUMENT_ROOT.'/includes/modules/commande/modules_commande.php'); + $model=new ModelePDFCommandes(); + $liste=$model->liste_modeles($db); + $html->select_array('model',$liste,$conf->global->COMMANDE_ADDON_PDF); + print ""; + + if ($propalid > 0) + { + $amount = ($obj->price); + print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''; + + print ''.$langs->trans('Ref').''.$obj->ref.''; + print ''.$langs->trans('TotalTTC').''.price($amount).''; + print ''.$langs->trans('VAT').''.price($obj->tva).''; + print ''.$langs->trans('TotalTTC').''.price($obj->total).''; + } + else + { + if ($conf->global->PRODUCT_SHOW_WHEN_CREATE) + { + /* + * Services/produits prédéfinis + */ + $NBLINES=8; + + print ''; + + print ''; + print ''; + print ''; + print ''; + print ''; + for ($i = 1 ; $i <= $NBLINES ; $i++) + { + print ''; + print ''; + print ''; + } + + print '
'.$langs->trans('ProductsAndServices').''.$langs->trans('Qty').''.$langs->trans('ReductionShort').'
'; + // multiprix + if($conf->global->PRODUIT_MULTIPRICES == 1) + print $html->select_produits('','idprod'.$i,'',$conf->produit->limit_size,$soc->price_level); + else + print $html->select_produits('','idprod'.$i,'',$conf->produit->limit_size); + print '%
'; + print ''; + } + } + + /* + * + */ + print ''; + print ''; + + print ''; + + if ($propalid) + { + /* + * Produits + */ + print_titre($langs->trans('Products')); + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + $var=false; + + $sql = 'SELECT pt.rowid, p.label as product, p.ref, pt.price, pt.qty, p.rowid as prodid, pt.remise_percent'; + $sql .= ' FROM '.MAIN_DB_PREFIX.'propaldet as pt, '.MAIN_DB_PREFIX.'product as p WHERE pt.fk_product = p.rowid AND pt.fk_propal = '.$propalid; + $sql .= ' ORDER BY pt.rowid ASC'; + $result = $db->query($sql); + if ($result) + { + $num = $db->num_rows($result); + $i = 0; + while ($i < $num) + { + $objp = $db->fetch_object($result); + $var=!$var; + print ''; + print ''; + print ''; + print ''; + print ''; + $i++; + } + } + + $sql = 'SELECT pt.rowid, pt.description as product, pt.price, pt.qty, pt.remise_percent'; + $sql .= ' FROM '.MAIN_DB_PREFIX.'propaldet as pt WHERE pt.fk_propal = '.$propalid.' AND pt.fk_product = 0'; + $sql .= ' ORDER BY pt.rowid ASC'; + if ($db->query($sql)) + { + $num = $db->num_rows(); + $i = 0; + while ($i < $num) + { + $objp = $db->fetch_object(); + $var=!$var; + print ''; + print ''; + print ''; + print ''; + print ''; + $i++; + } + } + else + { + dolibarr_print_error($db); + } + + print '
'.$langs->trans('Ref').''.$langs->trans('Product').''.$langs->trans('Price').''.$langs->trans('Qty').''.$langs->trans('Reductionshort').'
['.$objp->ref.']'.img_object($langs->trans('ShowProduct'),'product').' '.$objp->product.''.price($objp->price).''.$objp->qty.'
'.$objp->remise_percent.'%
 '.img_object($langs->trans('ShowProduct'),'product').' '.$objp->product.''.price($objp->price).''.$objp->qty.'
'.$objp->remise_percent.'%
'; + } } - else - { - dolibarr_print_error($db); - } + } + else + { + dolibarr_print_error($db); + } } else { @@ -1133,791 +1133,803 @@ else if ($commande->source == 0) { // Si source = propal - $propal = new Propal($db); - $propal->fetch($commande->propale_id); - print ' -> '.$propal->ref.''; - } - print ''; - print ''; + $propal = new Propal($db); + $propal->fetch($commande->propale_id); + print ' -> '.$propal->ref.''; + } + print ''; + print ''; - // Date de livraison - if ($conf->expedition->enabled) + // Date de livraison + if ($conf->expedition->enabled) + { + print ''; + print ''; + + if ($_GET['action'] != 'editdate_livraison' && $commande->brouillon) print ''; + print '
'; + print $langs->trans('DateDelivery'); + print 'id.'">'.img_edit($langs->trans('SetDateDelivery'),1).'
'; + print ''; + if ($_GET['action'] == 'editdate_livraison') { - print ''; - print ''; - - if ($_GET['action'] != 'editdate_livraison' && $commande->brouillon) print ''; - print '
'; - print $langs->trans('DateDelivery'); - print 'id.'">'.img_edit($langs->trans('SetDateDelivery'),1).'
'; - print ''; - if ($_GET['action'] == 'editdate_livraison') - { - print '
'; - print ''; - $html->select_date($commande->date_livraison,'liv_','','','',"setdate_livraison"); - print ''; - print '
'; - } - else - { - print dolibarr_print_date($commande->date_livraison,'%A %d %B %Y'); - } - print ''; - print ''.$langs->trans('NotePublic').' :
'; - print nl2br($commande->note_public); - print ''; - print ''; - - - // Adresse de livraison - print ''; - print ''; - - if ($_GET['action'] != 'editdelivery_adress' && $commande->brouillon) print ''; - print '
'; - print $langs->trans('DeliveryAddress'); - print 'socid.'&id='.$commande->id.'">'.img_edit($langs->trans('SetDeliveryAddress'),1).'
'; - print ''; - - if ($_GET['action'] == 'editdelivery_adress') - { - $html->form_adresse_livraison($_SERVER['PHP_SELF'].'?id='.$commande->id,$commande->adresse_livraison_id,$_GET['socid'],'adresse_livraison_id','commande',$commande->id); - } - else - { - $html->form_adresse_livraison($_SERVER['PHP_SELF'].'?id='.$commande->id,$commande->adresse_livraison_id,$_GET['socid'],'none','commande',$commande->id); - } - print ''; + print '
'; + print ''; + $html->select_date($commande->date_livraison,'liv_','','','',"setdate_livraison"); + print ''; + print '
'; } - - // Conditions et modes de réglement - print ''; - print ''; - - if ($_GET['action'] != 'editconditions' && $commande->brouillon) print ''; - print '
'; - print $langs->trans('PaymentConditionsShort'); - 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 ''; - print ''; - if ($_GET['action'] != 'editmode' && $commande->brouillon) print ''; - print '
'; - print $langs->trans('PaymentMode'); - print 'id.'">'.img_edit($langs->trans('SetMode'),1).'
'; - print ''; - if ($_GET['action'] == 'editmode') - { - $html->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$commande->id,$commande->mode_reglement_id,'mode_reglement_id'); - } - else - { - $html->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$commande->id,$commande->mode_reglement_id,'none'); - } - print ''; - - // Projet - if ($conf->projet->enabled) - { - $langs->load('projects'); - print ''; - print ''; - if ($_GET['action'] != 'classer' && $commande->brouillon) print ''; - print '
'; - print $langs->trans('Project'); - print ''.img_edit($langs->trans('SetProject')).'
'; - print ''; - if ($_GET['action'] == 'classer') - { - $html->form_project($_SERVER['PHP_SELF'].'?id='.$commande->id, $commande->socid, $commande->projet_id, 'projetid'); - } - else - { - $html->form_project($_SERVER['PHP_SELF'].'?id='.$commande->id, $commande->socid, $commande->projet_id, 'none'); - } - print ''; - } - - // Lignes de 3 colonnes - - // Total HT - print ''.$langs->trans('AmountHT').''; - print ''.price($commande->total_ht).''; - print ''.$langs->trans('Currency'.$conf->monnaie).''; - - // Total TVA - print ''.$langs->trans('AmountVAT').''.price($commande->total_tva).''; - print ''.$langs->trans('Currency'.$conf->monnaie).''; - - // Total TTC - print ''.$langs->trans('AmountTTC').''.price($commande->total_ttc).''; - print ''.$langs->trans('Currency'.$conf->monnaie).''; - - // Statut - print ''.$langs->trans('Status').''; - print ''.$commande->getLibStatut(4).''; - print ''; - - print '
'; - print "\n"; - - /* - * Lignes de commandes - */ - $sql = 'SELECT l.fk_product, l.description, l.price, l.qty, l.rowid, l.tva_tx, l.remise_percent, l.subprice, l.info_bits,'; - $sql.= ' p.label as product, p.ref, p.fk_product_type, p.rowid as prodid, '; - $sql.= ' p.description as product_desc'; - $sql.= ' FROM '.MAIN_DB_PREFIX.'commandedet as l'; - $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON l.fk_product=p.rowid'; - $sql.= ' WHERE l.fk_commande = '.$commande->id; - $sql.= ' ORDER BY l.rang ASC, l.rowid'; - - $resql = $db->query($sql); - if ($resql) - { - $num = $db->num_rows($resql); - $i = 0; $total = 0; - - print ''; - if ($num) - { - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print "\n"; - } - $var=true; - while ($i < $num) - { - $objp = $db->fetch_object($resql); - $var=!$var; - - // Ligne en mode visu - if ($_GET['action'] != 'editline' || $_GET['rowid'] != $objp->rowid) - { - print ''; - if ($objp->fk_product > 0) - { - print ''; - } - else - { - print ''; - } - - print ''; - print ''; - print ''; - if ($objp->remise_percent > 0) - { - print ''; - } - else - { - print ''; - } - print ''; - - // Icone d'edition et suppression - if ($commande->statut == 0 && $user->rights->commande->creer) - { - print ''; - if ($conf->global->PRODUIT_CONFIRM_DELETE_LINE) - { - print ''; - print ''; - } - else - { - print ''; - } - print ''; - } - - // Ligne en mode update - if ($_GET['action'] == 'editline' && $user->rights->commande->creer && $_GET['rowid'] == $objp->rowid) - { - print 'rowid.'" method="post">'; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - } - - $total = $total + ($objp->qty * $objp->price); - $i++; - } - $db->free($resql); - } - else - { - dolibarr_print_error($db); - } - - /* - * Lignes de remise - */ - - // Réductions relatives (Remises-Ristournes-Rabbais) -/* Une réduction doit s'appliquer obligatoirement sur des lignes de factures - et non globalement - $var=!$var; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - if ($_GET['action'] != 'editrelativediscount') - { - if ($commande->brouillon && $user->rights->facture->creer) - { - print ''; - } - else - { - print ''; - } - if ($commande->brouillon && $user->rights->facture->creer && $commande->remise_percent) - { - print ''; - } - else - { - print ''; - } - print ''; - } - else - { - print ''; - } - print ''; - print ''; -*/ - - // Remise absolue -/* Les remises absolues doivent s'appliquer par ajout de lignes spécialisées - $var=!$var; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - if ($_GET['action'] != 'editabsolutediscount') - { - if ($commande->brouillon && $user->rights->facture->creer) - { - print ''; - } - else - { - print ''; - } - if ($commande->brouillon && $user->rights->facture->creer && $commande->remise_absolue) - { - print ''; - } - else - { - print ''; - } - print ''; - } - else - { - print ''; - } - print ''; - print ''; -*/ - - /* - * Ajouter une ligne - */ - if ($commande->statut == 0 && $user->rights->commande->creer && $_GET["action"] <> 'editline') - { - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - - // Ajout produit produits/services personalisés - print ''; - print ''; - print ''; - - $var=true; - print ''; - print ' '; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - - print ''; - - // Ajout de produits/services prédéfinis - print ''; - print ''; - print ''; - - $var=!$var; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - - print ''; - } - print '
'.$langs->trans('Description').''.$langs->trans('VAT').''.$langs->trans('PriceUHT').''.$langs->trans('Qty').''.$langs->trans('ReductionShort').''.$langs->trans('AmountHT').'   
'; - print ''; // ancre pour retourner sur la ligne - print ''; - if ($objp->fk_product_type) print img_object($langs->trans('ShowService'),'service'); - else print img_object($langs->trans('ShowProduct'),'product'); - print ' '.$objp->ref.' - '.nl2br($objp->product); - print ($objp->description && $objp->description!=$objp->product)?'
'.nl2br($objp->description):''; - // \todo Ne faut-il pas rendre $conf->global->PRODUIT_CHANGE_PROD_DESC toujours a on - if ($conf->global->PRODUIT_DESC_IN_FORM && !$conf->global->PRODUIT_CHANGE_PROD_DESC) - { - print '
'.nl2br($objp->product_desc); - } - print '
'; - print ''; // ancre pour retourner sur la ligne - if (($objp->info_bits & 2) == 2) - { - print ''; - print img_object($langs->trans("ShowReduc"),'reduc').' '.$langs->trans("Discount"); - print ''; - if ($objp->description) print ' - '.nl2br($objp->description); - } - else - { - print nl2br($objp->description); - } - print ''.$objp->tva_tx.'%'.price($objp->subprice).''; - if (($objp->info_bits & 2) != 2) - { - print $objp->qty; - } - else print ' '; - print ''.$objp->remise_percent.'% '.price($objp->subprice*$objp->qty*(100-$objp->remise_percent)/100).'rowid.'#'.$objp->rowid.'">'; - print img_edit(); - print 'rowid.'">'; - } - else - { - print 'rowid.'">'; - } - print img_delete(); - print ''; - if ($i > 0) - { - print 'rowid.'">'; - print img_up(); - print ''; - } - if ($i < $num-1) - { - print 'rowid.'">'; - print img_down(); - print ''; - } - print ' 
'; - print ''; // ancre pour retourner sur la ligne - if ($objp->fk_product > 0) - { - print ''; - if ($objp->fk_product_type) print img_object($langs->trans('ShowService'),'service'); - else print img_object($langs->trans('ShowProduct'),'product'); - print ' '.$objp->ref.''; - print ' - '.nl2br($objp->product); - print '
'; - } - // éditeur wysiwyg - if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS) - { - require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php"); - $doleditor=new DolEditor('eldesc',$objp->description,200,'dolibarr_details'); - $doleditor->Create(); - } - else - { - print ''; - } - print '
'; - if($soc->tva_assuj == "0") - print '0'; - else - print $html->select_tva('tva_tx',$objp->tva_tx,$mysoc,$soc); - print ''; - if (($objp->info_bits & 2) != 2) - { - print ''; - } - else print ' '; - print ''; - if (($objp->info_bits & 2) != 2) - { - print '%'; - } - else print ' '; - print ''; - print '
'; - print $langs->trans('CustomerRelativeDiscount'); - if ($commande->brouillon) print ' ('.($soc->remise_client?$langs->trans("CompanyHasRelativeDiscount",$soc->remise_client):$langs->trans("CompanyHasNoRelativeDiscount")).')'; - print '   '; - if ($_GET['action'] == 'editrelativediscount') - { - print '%'; - } - else - { - print $commande->remise_percent?$commande->remise_percent.'%':' '; - } - print ''; - if ($_GET['action'] != 'editrelativediscount') print $commande->remise_percent?'-'.price($commande->remise_percent*$total/100):$langs->trans("DiscountNone"); - else print ' '; - print 'id.'">'.img_edit($langs->trans('SetRelativeDiscount'),1).' rowid.'">'; - print img_delete(); - print '  
'; - print $langs->trans('CustomerAbsoluteDiscount'); - if ($commande->brouillon) print ' ('.($avoir_en_cours?$langs->trans("CompanyHasAbsoluteDiscount",$avoir_en_cours,$langs->trans("Currency".$conf->monnaie)):$langs->trans("CompanyHasNoAbsoluteDiscount")).')'; - print '    '; - if ($_GET['action'] == 'editabsolutediscount') - { - print '-'; - } - else - { - print $commande->remise_absolue?'-'.price($commande->remise_absolue):$langs->trans("DiscountNone"); - } - print 'id.'">'.img_edit($langs->trans('SetAbsoluteDiscount'),1).' rowid.'">'; - print img_delete(); - print '  
'; - print ''; // ancre - print $langs->trans('Description').''.$langs->trans('VAT').''.$langs->trans('PriceUHT').''.$langs->trans('Qty').''.$langs->trans('ReductionShort').'    
'; - if($soc->tva_assuj == "0") - print '0'; - else - print $html->select_tva('tva_tx',$conf->defaulttx,$mysoc,$soc); - print '%
'; - // multiprix - if($conf->global->PRODUIT_MULTIPRICES == 1) - $html->select_produits('','idprod','',$conf->produit->limit_size,$soc->price_level); - else - $html->select_produits('','idprod','',$conf->produit->limit_size); - if (! $conf->use_ajax) print '
'; - print ''; - print '
 %
'; - print ''; - - /* - * Boutons actions - */ - if ($user->societe_id == 0) - { - print '
'; - - // Valid - if ($commande->statut == 0) - { - if ($user->rights->commande->valider) - { - print ''.$langs->trans('Valid').''; - } - } - - // Edit - if ($commande->statut == 1) - { - if ($user->rights->commande->creer) - { - print ''.$langs->trans('Edit').''; - } - } - - // Build PDF - if ($user->rights->commande->creer && $commande->statut < 3) - { - print ''.$langs->trans("BuildPDF").''; - } - - // ReBuild PDF - if ($user->rights->commande->creer && $commande->statut >= 3) - { - print ''.$langs->trans("RebuildPDF").''; - } - - // Send - if ($commande->statut > 0) - { - if ($user->rights->commande->envoyer) - { - $comref = sanitize_string($commande->ref); - $file = $conf->commande->dir_output . '/'.$comref.'/'.$comref.'.pdf'; - if (file_exists($file)) - { - print ''.$langs->trans('SendByMail').''; - } - } - } - - // Ship - if ($commande->statut > 0 && $commande->statut < 3 && $user->rights->expedition->creer - && $commande->getNbOfProductsLines() > 0) - { - print ''.$langs->trans('ShipProduct').''; - } - - if ($commande->statut == 1 || $commande->statut == 2) - { - if ($user->rights->commande->cloturer) - { - print ''.$langs->trans('Close').''; - } - } - - if ($commande->statut == 1) - { - $nb_expedition = $commande->nb_expedition(); - if ($user->rights->commande->annuler && $nb_expedition == 0) - { - print ''.$langs->trans('CancelOrder').''; - } - } - - if ($commande->statut == 0 && $user->rights->commande->supprimer) - { - print ''.$langs->trans('Delete').''; - } - - print '
'; - } - print '
'; - - - print '
'; - print ''; // ancre - - /* - * Documents générés - * - */ - $comref = sanitize_string($commande->ref); - $file = $conf->commande->dir_output . '/' . $comref . '/' . $comref . '.pdf'; - $relativepath = $comref.'/'.$comref.'.pdf'; - $filedir = $conf->commande->dir_output . '/' . $comref; - $urlsource=$_SERVER["PHP_SELF"]."?id=".$commande->id; - $genallowed=$user->rights->commande->creer; - $delallowed=$user->rights->commande->supprimer; - - $somethingshown=$html->show_documents('commande',$comref,$filedir,$urlsource,$genallowed,$delallowed,$commande->modelpdf); - - /* - * Liste des factures - */ - $sql = 'SELECT f.rowid,f.facnumber, f.total_ttc, '.$db->pdate('f.datef').' as df'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'facture as f, '.MAIN_DB_PREFIX.'co_fa as cf'; - $sql .= ' WHERE f.rowid = cf.fk_facture AND cf.fk_commande = '. $commande->id; - - $result = $db->query($sql); - if ($result) - { - $num = $db->num_rows($result); - if ($num) - { - print '
'; - print_titre($langs->trans('RelatedBills')); - $i = 0; $total = 0; - print ''; - print '"; - print ''; - print ''; - print ''; - - $var=True; - while ($i < $num) - { - $objp = $db->fetch_object($result); - $var=!$var; - print ''; - print ''; - print ''; - print ''; - $i++; - } - print '
'.$langs->trans('Ref')."'.$langs->trans('Date').''.$langs->trans('Price').'
'.img_object($langs->trans('ShowBill'),'bill').' '.$objp->facnumber.''.dolibarr_print_date($objp->df).''.$objp->total_ttc.'
'; - } - } - else - { - dolibarr_print_error($db); - } - print '
'; - - /* - * Liste des actions propres à la commande - */ - $sql = 'SELECT id, '.$db->pdate('a.datea'). ' as da, label, note, fk_user_author' ; - $sql .= ' FROM '.MAIN_DB_PREFIX.'actioncomm as a'; - $sql .= ' WHERE a.fk_commande = '.$commande->id ; - if ($socid) $sql .= ' AND a.fk_soc = '.$socid; - $resql = $db->query($sql); - if ($resql) - { - $num = $db->num_rows($resql); - if ($num) - { - //print '
'; - print_titre($langs->trans('ActionsOnOrder')); - $i = 0; - $total = 0; - $var=true; - - print ''; - print ''; - print "\n"; - - while ($i < $num) - { - $objp = $db->fetch_object($resql); - $var=!$var; - print ''; - print ''; - print '\n"; - print ''; - $authoract = new User($db); - $authoract->id = $objp->fk_user_author; - $authoract->fetch(''); - print ''; - print "\n"; - $i++; - } - print '
'.$langs->trans('Ref').''.$langs->trans('Date').''.$langs->trans('Action').''.$langs->trans('By').'
'.img_object($langs->trans('ShowTask'),'task').' '.$objp->id.''.dolibarr_print_date($objp->da)."'.stripslashes($objp->label).''.$authoract->code.'
'; - } - } - else - { - dolibarr_print_error($db); - } - - print '
'; - - - - /* - * Action presend - * - */ - if ($_GET['action'] == 'presend') - { - $orderref = sanitize_string($commande->ref); - $file = $conf->commande->dir_output . '/' . $orderref . '/' . $orderref . '.pdf'; - - // Construit PDF si non existant - if (! is_readable($file)) - { - if ($_REQUEST['lang_id']) - { - $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); - $outputlangs->setDefaultLang($_REQUEST['lang_id']); - } - $result=commande_pdf_create($db, $_REQUEST['id'], '', $_REQUEST['model'], $outputlangs); - if ($result <= 0) - { - dolibarr_print_error($db,$result); - exit; - } - } - - print '
'; - print_titre($langs->trans('SendOrderByMail')); - - $soc = new Societe($db); - $soc->fetch($commande->socid); - - $liste[0]=" "; - foreach ($soc->thirdparty_and_contact_email_array() as $key=>$value) - { - $liste[$key]=$value; - } - - // Créé 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('SendOrderRef','__ORDERREF__'); - $formmail->withfile=1; - $formmail->withbody=1; - $formmail->withdeliveryreceipt=1; - // Tableau des substitutions - $formmail->substit['__ORDERREF__']=$commande->ref; - // Tableau des paramètres complémentaires - $formmail->param['action']='send'; - $formmail->param['models']='order_send'; - $formmail->param['orderid']=$commande->id; - $formmail->param['returnurl']=DOL_URL_ROOT.'/commande/fiche.php?id='.$commande->id; - - $formmail->show_form(); - - print '
'; - } - } - else + else { - // Commande non trouvée - dolibarr_print_error($db); + print dolibarr_print_date($commande->date_livraison,'%A %d %B %Y'); } + print ''; + print ''.$langs->trans('NotePublic').' :
'; + print nl2br($commande->note_public); + print ''; + print ''; + + + // Adresse de livraison + print ''; + print ''; + + if ($_GET['action'] != 'editdelivery_adress' && $commande->brouillon) print ''; + print '
'; + print $langs->trans('DeliveryAddress'); + print 'socid.'&id='.$commande->id.'">'.img_edit($langs->trans('SetDeliveryAddress'),1).'
'; + print ''; + + if ($_GET['action'] == 'editdelivery_adress') + { + $html->form_adresse_livraison($_SERVER['PHP_SELF'].'?id='.$commande->id,$commande->adresse_livraison_id,$_GET['socid'],'adresse_livraison_id','commande',$commande->id); + } + else + { + $html->form_adresse_livraison($_SERVER['PHP_SELF'].'?id='.$commande->id,$commande->adresse_livraison_id,$_GET['socid'],'none','commande',$commande->id); + } + print ''; + } + + // Conditions et modes de réglement + print ''; + print ''; + + if ($_GET['action'] != 'editconditions' && $commande->brouillon) print ''; + print '
'; + print $langs->trans('PaymentConditionsShort'); + 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 ''; + print ''; + if ($_GET['action'] != 'editmode' && $commande->brouillon) print ''; + print '
'; + print $langs->trans('PaymentMode'); + print 'id.'">'.img_edit($langs->trans('SetMode'),1).'
'; + print ''; + if ($_GET['action'] == 'editmode') + { + $html->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$commande->id,$commande->mode_reglement_id,'mode_reglement_id'); + } + else + { + $html->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$commande->id,$commande->mode_reglement_id,'none'); + } + print ''; + + // Projet + if ($conf->projet->enabled) + { + $langs->load('projects'); + print ''; + print ''; + if ($_GET['action'] != 'classer' && $commande->brouillon) print ''; + print '
'; + print $langs->trans('Project'); + print ''.img_edit($langs->trans('SetProject')).'
'; + print ''; + if ($_GET['action'] == 'classer') + { + $html->form_project($_SERVER['PHP_SELF'].'?id='.$commande->id, $commande->socid, $commande->projet_id, 'projetid'); + } + else + { + $html->form_project($_SERVER['PHP_SELF'].'?id='.$commande->id, $commande->socid, $commande->projet_id, 'none'); + } + print ''; + } + + // Lignes de 3 colonnes + + // Total HT + print ''.$langs->trans('AmountHT').''; + print ''.price($commande->total_ht).''; + print ''.$langs->trans('Currency'.$conf->monnaie).''; + + // Total TVA + print ''.$langs->trans('AmountVAT').''.price($commande->total_tva).''; + print ''.$langs->trans('Currency'.$conf->monnaie).''; + + // Total TTC + print ''.$langs->trans('AmountTTC').''.price($commande->total_ttc).''; + print ''.$langs->trans('Currency'.$conf->monnaie).''; + + // Statut + print ''.$langs->trans('Status').''; + print ''.$commande->getLibStatut(4).''; + print ''; + + print '
'; + print "\n"; + + /* + * Lignes de commandes + */ + $sql = 'SELECT l.fk_product, l.description, l.price, l.qty, l.rowid, l.tva_tx, l.remise_percent, l.subprice, l.info_bits,'; + $sql.= ' p.label as product, p.ref, p.fk_product_type, p.rowid as prodid, '; + $sql.= ' p.description as product_desc'; + $sql.= ' FROM '.MAIN_DB_PREFIX.'commandedet as l'; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON l.fk_product=p.rowid'; + $sql.= ' WHERE l.fk_commande = '.$commande->id; + $sql.= ' ORDER BY l.rang ASC, l.rowid'; + + $resql = $db->query($sql); + if ($resql) + { + $num = $db->num_rows($resql); + $i = 0; $total = 0; + + print ''; + if ($num) + { + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + } + $var=true; + while ($i < $num) + { + $objp = $db->fetch_object($resql); + $var=!$var; + + // Ligne en mode visu + if ($_GET['action'] != 'editline' || $_GET['rowid'] != $objp->rowid) + { + print ''; + if ($objp->fk_product > 0) + { + print ''; + } + else + { + print ''; + } + + print ''; + print ''; + print ''; + if ($objp->remise_percent > 0) + { + print ''; + } + else + { + print ''; + } + print ''; + + // Icone d'edition et suppression + if ($commande->statut == 0 && $user->rights->commande->creer) + { + print ''; + if ($conf->global->PRODUIT_CONFIRM_DELETE_LINE) + { + print ''; + print ''; + } + else + { + print ''; + } + print ''; + } + + // Ligne en mode update + if ($_GET['action'] == 'editline' && $user->rights->commande->creer && $_GET['rowid'] == $objp->rowid) + { + print 'rowid.'" method="post">'; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + } + + $total = $total + ($objp->qty * $objp->price); + $i++; + } + $db->free($resql); + } + else + { + dolibarr_print_error($db); + } + + /* + * Lignes de remise + */ + + // Réductions relatives (Remises-Ristournes-Rabbais) + /* Une réduction doit s'appliquer obligatoirement sur des lignes de factures + et non globalement + $var=!$var; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + if ($_GET['action'] != 'editrelativediscount') + { + if ($commande->brouillon && $user->rights->facture->creer) + { + print ''; + } + else + { + print ''; + } + if ($commande->brouillon && $user->rights->facture->creer && $commande->remise_percent) + { + print ''; + } + else + { + print ''; + } + print ''; + } + else + { + print ''; + } + print ''; + print ''; + */ + + // Remise absolue + /* Les remises absolues doivent s'appliquer par ajout de lignes spécialisées + $var=!$var; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + if ($_GET['action'] != 'editabsolutediscount') + { + if ($commande->brouillon && $user->rights->facture->creer) + { + print ''; + } + else + { + print ''; + } + if ($commande->brouillon && $user->rights->facture->creer && $commande->remise_absolue) + { + print ''; + } + else + { + print ''; + } + print ''; + } + else + { + print ''; + } + print ''; + print ''; + */ + + /* + * Ajouter une ligne + */ + if ($commande->statut == 0 && $user->rights->commande->creer && $_GET["action"] <> 'editline') + { + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + // Ajout produit produits/services personalisés + print ''; + print ''; + print ''; + + $var=true; + print ''; + print ' '; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + print ''; + + // Ajout de produits/services prédéfinis + print ''; + print ''; + print ''; + + $var=!$var; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + print ''; + } + print '
'.$langs->trans('Description').''.$langs->trans('VAT').''.$langs->trans('PriceUHT').''.$langs->trans('Qty').''.$langs->trans('ReductionShort').''.$langs->trans('AmountHT').'   
'; + print ''; // ancre pour retourner sur la ligne + print ''; + if ($objp->fk_product_type) print img_object($langs->trans('ShowService'),'service'); + else print img_object($langs->trans('ShowProduct'),'product'); + print ' '.$objp->ref.' - '.nl2br($objp->product); + print ($objp->description && $objp->description!=$objp->product)?'
'.nl2br($objp->description):''; + // \todo Ne faut-il pas rendre $conf->global->PRODUIT_CHANGE_PROD_DESC toujours a on + if ($conf->global->PRODUIT_DESC_IN_FORM && !$conf->global->PRODUIT_CHANGE_PROD_DESC) + { + print '
'.nl2br($objp->product_desc); + } + print '
'; + print ''; // ancre pour retourner sur la ligne + if (($objp->info_bits & 2) == 2) + { + print ''; + print img_object($langs->trans("ShowReduc"),'reduc').' '.$langs->trans("Discount"); + print ''; + if ($objp->description) print ' - '.nl2br($objp->description); + } + else + { + print nl2br($objp->description); + } + print ''.$objp->tva_tx.'%'.price($objp->subprice).''; + if (($objp->info_bits & 2) != 2) + { + print $objp->qty; + } + else print ' '; + print ''.$objp->remise_percent.'% '.price($objp->subprice*$objp->qty*(100-$objp->remise_percent)/100).'rowid.'#'.$objp->rowid.'">'; + print img_edit(); + print 'rowid.'">'; + } + else + { + print 'rowid.'">'; + } + print img_delete(); + print ''; + if ($i > 0) + { + print 'rowid.'">'; + print img_up(); + print ''; + } + if ($i < $num-1) + { + print 'rowid.'">'; + print img_down(); + print ''; + } + print ' 
'; + print ''; // ancre pour retourner sur la ligne + if ($objp->fk_product > 0) + { + print ''; + if ($objp->fk_product_type) print img_object($langs->trans('ShowService'),'service'); + else print img_object($langs->trans('ShowProduct'),'product'); + print ' '.$objp->ref.''; + print ' - '.nl2br($objp->product); + print '
'; + } + // éditeur wysiwyg + if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS) + { + require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php"); + $doleditor=new DolEditor('eldesc',$objp->description,200,'dolibarr_details'); + $doleditor->Create(); + } + else + { + print ''; + } + print '
'; + if($soc->tva_assuj == "0") + print '0'; + else + print $html->select_tva('tva_tx',$objp->tva_tx,$mysoc,$soc); + print ''; + if (($objp->info_bits & 2) != 2) + { + print ''; + } + else print ' '; + print ''; + if (($objp->info_bits & 2) != 2) + { + print '%'; + } + else print ' '; + print ''; + print '
'; + print $langs->trans('CustomerRelativeDiscount'); + if ($commande->brouillon) print ' ('.($soc->remise_client?$langs->trans("CompanyHasRelativeDiscount",$soc->remise_client):$langs->trans("CompanyHasNoRelativeDiscount")).')'; + print '   '; + if ($_GET['action'] == 'editrelativediscount') + { + print '%'; + } + else + { + print $commande->remise_percent?$commande->remise_percent.'%':' '; + } + print ''; + if ($_GET['action'] != 'editrelativediscount') print $commande->remise_percent?'-'.price($commande->remise_percent*$total/100):$langs->trans("DiscountNone"); + else print ' '; + print 'id.'">'.img_edit($langs->trans('SetRelativeDiscount'),1).' rowid.'">'; + print img_delete(); + print '  
'; + print $langs->trans('CustomerAbsoluteDiscount'); + if ($commande->brouillon) print ' ('.($avoir_en_cours?$langs->trans("CompanyHasAbsoluteDiscount",$avoir_en_cours,$langs->trans("Currency".$conf->monnaie)):$langs->trans("CompanyHasNoAbsoluteDiscount")).')'; + print '    '; + if ($_GET['action'] == 'editabsolutediscount') + { + print '-'; + } + else + { + print $commande->remise_absolue?'-'.price($commande->remise_absolue):$langs->trans("DiscountNone"); + } + print 'id.'">'.img_edit($langs->trans('SetAbsoluteDiscount'),1).' rowid.'">'; + print img_delete(); + print '  
'; + print ''; // ancre + print $langs->trans('Description').''.$langs->trans('VAT').''.$langs->trans('PriceUHT').''.$langs->trans('Qty').''.$langs->trans('ReductionShort').'    
'; + if($soc->tva_assuj == "0") + print '0'; + else + print $html->select_tva('tva_tx',$conf->defaulttx,$mysoc,$soc); + print '%
'; + // multiprix + if($conf->global->PRODUIT_MULTIPRICES == 1) + $html->select_produits('','idprod','',$conf->produit->limit_size,$soc->price_level); + else + $html->select_produits('','idprod','',$conf->produit->limit_size); + if (! $conf->use_ajax) print '
'; + print ''; + print '
 %
'; + print ''; + + /* + * Boutons actions + */ + if ($user->societe_id == 0) + { + print '
'; + + // Valid + if ($commande->statut == 0) + { + if ($user->rights->commande->valider) + { + print ''.$langs->trans('Valid').''; + } + } + + // Edit + if ($commande->statut == 1) + { + if ($user->rights->commande->creer) + { + print ''.$langs->trans('Edit').''; + } + } + + // Build PDF + if ($user->rights->commande->creer && $commande->statut < 3) + { + print ''.$langs->trans("BuildPDF").''; + } + + // ReBuild PDF + if ($user->rights->commande->creer && $commande->statut >= 3) + { + print ''.$langs->trans("RebuildPDF").''; + } + + // Send + if ($commande->statut > 0) + { + if ($user->rights->commande->envoyer) + { + $comref = sanitize_string($commande->ref); + $file = $conf->commande->dir_output . '/'.$comref.'/'.$comref.'.pdf'; + if (file_exists($file)) + { + print ''.$langs->trans('SendByMail').''; + } + } + } + + // Ship + if ($commande->statut > 0 && $commande->statut < 3 && $user->rights->expedition->creer + && $commande->getNbOfProductsLines() > 0) + { + + // Chargement des permissions + $error = $user->load_entrepots(); + if (sizeof($user->entrepots) === 1) + { + print ''; + print $langs->trans('ShipProduct').''; + + } + else + { + print ''.$langs->trans('ShipProduct').''; + } + } + + if ($commande->statut == 1 || $commande->statut == 2) + { + if ($user->rights->commande->cloturer) + { + print ''.$langs->trans('Close').''; + } + } + + if ($commande->statut == 1) + { + $nb_expedition = $commande->nb_expedition(); + if ($user->rights->commande->annuler && $nb_expedition == 0) + { + print ''.$langs->trans('CancelOrder').''; + } + } + + if ($commande->statut == 0 && $user->rights->commande->supprimer) + { + print ''.$langs->trans('Delete').''; + } + + print '
'; + } + print '
'; + + + print '
'; + print ''; // ancre + + /* + * Documents générés + * + */ + $comref = sanitize_string($commande->ref); + $file = $conf->commande->dir_output . '/' . $comref . '/' . $comref . '.pdf'; + $relativepath = $comref.'/'.$comref.'.pdf'; + $filedir = $conf->commande->dir_output . '/' . $comref; + $urlsource=$_SERVER["PHP_SELF"]."?id=".$commande->id; + $genallowed=$user->rights->commande->creer; + $delallowed=$user->rights->commande->supprimer; + + $somethingshown=$html->show_documents('commande',$comref,$filedir,$urlsource,$genallowed,$delallowed,$commande->modelpdf); + + /* + * Liste des factures + */ + $sql = 'SELECT f.rowid,f.facnumber, f.total_ttc, '.$db->pdate('f.datef').' as df'; + $sql .= ' FROM '.MAIN_DB_PREFIX.'facture as f, '.MAIN_DB_PREFIX.'co_fa as cf'; + $sql .= ' WHERE f.rowid = cf.fk_facture AND cf.fk_commande = '. $commande->id; + + $result = $db->query($sql); + if ($result) + { + $num = $db->num_rows($result); + if ($num) + { + print '
'; + print_titre($langs->trans('RelatedBills')); + $i = 0; $total = 0; + print ''; + print '"; + print ''; + print ''; + print ''; + + $var=True; + while ($i < $num) + { + $objp = $db->fetch_object($result); + $var=!$var; + print ''; + print ''; + print ''; + print ''; + $i++; + } + print '
'.$langs->trans('Ref')."'.$langs->trans('Date').''.$langs->trans('Price').'
'.img_object($langs->trans('ShowBill'),'bill').' '.$objp->facnumber.''.dolibarr_print_date($objp->df).''.$objp->total_ttc.'
'; + } + } + else + { + dolibarr_print_error($db); + } + print '
'; + + /* + * Liste des actions propres à la commande + */ + $sql = 'SELECT id, '.$db->pdate('a.datea'). ' as da, label, note, fk_user_author' ; + $sql .= ' FROM '.MAIN_DB_PREFIX.'actioncomm as a'; + $sql .= ' WHERE a.fk_commande = '.$commande->id ; + if ($socid) $sql .= ' AND a.fk_soc = '.$socid; + $resql = $db->query($sql); + if ($resql) + { + $num = $db->num_rows($resql); + if ($num) + { + //print '
'; + print_titre($langs->trans('ActionsOnOrder')); + $i = 0; + $total = 0; + $var=true; + + print ''; + print ''; + print "\n"; + + while ($i < $num) + { + $objp = $db->fetch_object($resql); + $var=!$var; + print ''; + print ''; + print '\n"; + print ''; + $authoract = new User($db); + $authoract->id = $objp->fk_user_author; + $authoract->fetch(''); + print ''; + print "\n"; + $i++; + } + print '
'.$langs->trans('Ref').''.$langs->trans('Date').''.$langs->trans('Action').''.$langs->trans('By').'
'.img_object($langs->trans('ShowTask'),'task').' '.$objp->id.''.dolibarr_print_date($objp->da)."'.stripslashes($objp->label).''.$authoract->code.'
'; + } + } + else + { + dolibarr_print_error($db); + } + + print '
'; + + + + /* + * Action presend + * + */ + if ($_GET['action'] == 'presend') + { + $orderref = sanitize_string($commande->ref); + $file = $conf->commande->dir_output . '/' . $orderref . '/' . $orderref . '.pdf'; + + // Construit PDF si non existant + if (! is_readable($file)) + { + if ($_REQUEST['lang_id']) + { + $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs"); + $outputlangs->setDefaultLang($_REQUEST['lang_id']); + } + $result=commande_pdf_create($db, $_REQUEST['id'], '', $_REQUEST['model'], $outputlangs); + if ($result <= 0) + { + dolibarr_print_error($db,$result); + exit; + } + } + + print '
'; + print_titre($langs->trans('SendOrderByMail')); + + $soc = new Societe($db); + $soc->fetch($commande->socid); + + $liste[0]=" "; + foreach ($soc->thirdparty_and_contact_email_array() as $key=>$value) + { + $liste[$key]=$value; + } + + // Créé 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('SendOrderRef','__ORDERREF__'); + $formmail->withfile=1; + $formmail->withbody=1; + $formmail->withdeliveryreceipt=1; + // Tableau des substitutions + $formmail->substit['__ORDERREF__']=$commande->ref; + // Tableau des paramètres complémentaires + $formmail->param['action']='send'; + $formmail->param['models']='order_send'; + $formmail->param['orderid']=$commande->id; + $formmail->param['returnurl']=DOL_URL_ROOT.'/commande/fiche.php?id='.$commande->id; + + $formmail->show_form(); + + print '
'; + } } + else + { + // Commande non trouvée + dolibarr_print_error($db); + } + } } $db->close();