Work on new module expense report
This commit is contained in:
parent
bc88917b81
commit
070accd1e0
@ -2121,7 +2121,7 @@ abstract class CommonObject
|
||||
*
|
||||
* @param int $status Status to set
|
||||
* @param int $elementId Id of element to force (use this->id by default)
|
||||
* @param string $elementType Type of element to force (use ->this->element by default)
|
||||
* @param string $elementType Type of element to force (use this->table_element by default)
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function setStatut($status,$elementId='',$elementType='')
|
||||
@ -2135,9 +2135,12 @@ abstract class CommonObject
|
||||
|
||||
$fieldstatus="fk_statut";
|
||||
if ($elementTable == 'user') $fieldstatus="statut";
|
||||
|
||||
if ($elementTable == 'expensereport') $fieldstatus="fk_c_expensereport_statuts";
|
||||
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX.$elementTable;
|
||||
$sql.= " SET ".$fieldstatus." = ".$status;
|
||||
// If status = 1 = validated, update also fk_user_valid
|
||||
if ($status == 1 && $elementTable == 'expensereport') $sql.=", fk_user_valid = ".$user->id;
|
||||
$sql.= " WHERE rowid=".$elementId;
|
||||
|
||||
dol_syslog(get_class($this)."::setStatut", LOG_DEBUG);
|
||||
|
||||
@ -3042,7 +3042,7 @@ class Form
|
||||
if (! empty($more)) {
|
||||
$formconfirm.= '<div>'.$more.'</div>';
|
||||
}
|
||||
$formconfirm.= img_help('','').' '.$question;
|
||||
$formconfirm.= ($question ? img_help('','').' '.$question : '');
|
||||
$formconfirm.= '</div>'."\n";
|
||||
|
||||
$formconfirm.= "\n<!-- begin ajax form_confirm page=".$page." -->\n";
|
||||
|
||||
@ -273,7 +273,7 @@ class FormFile
|
||||
}
|
||||
|
||||
$printer=0;
|
||||
if (in_array($modulepart,array('facture','propal','proposal','order','commande','expedition'))) // This feature is implemented only for such elements
|
||||
if (in_array($modulepart,array('facture','propal','proposal','order','commande','expedition'))) // The direct print feature is implemented only for such elements
|
||||
{
|
||||
$printer = (!empty($user->rights->printing->read) && !empty($conf->printing->enabled))?true:false;
|
||||
}
|
||||
@ -440,7 +440,6 @@ class FormFile
|
||||
}
|
||||
else if ($modulepart != 'agenda')
|
||||
{
|
||||
|
||||
// For normalized standard modules
|
||||
$file=dol_buildpath('/core/modules/'.$modulepart.'/modules_'.$modulepart.'.php',0);
|
||||
if (file_exists($file))
|
||||
@ -449,7 +448,7 @@ class FormFile
|
||||
}
|
||||
// For normalized external modules
|
||||
else
|
||||
{
|
||||
{
|
||||
$file=dol_buildpath('/'.$modulepart.'/core/modules/'.$modulepart.'/modules_'.$modulepart.'.php',0);
|
||||
$res=include_once $file;
|
||||
}
|
||||
|
||||
@ -86,6 +86,8 @@ class FormProjets
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$minmax='';
|
||||
|
||||
// Use select2 selector
|
||||
$nodatarole='';
|
||||
if (! empty($conf->use_javascript_ajax))
|
||||
@ -94,10 +96,11 @@ class FormProjets
|
||||
$comboenhancement = ajax_combobox($htmlname, '', 0, $forcefocus);
|
||||
$out.=$comboenhancement;
|
||||
$nodatarole=($comboenhancement?' data-role="none"':'');
|
||||
$minmax='minwidth100 maxwidth300';
|
||||
}
|
||||
|
||||
if (empty($option_only)) {
|
||||
$out.= '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'"'.$nodatarole.'>';
|
||||
$out.= '<select class="flat'.($minmax?' '.$minmax:'').'" id="'.$htmlname.'" name="'.$htmlname.'"'.$nodatarole.'>';
|
||||
}
|
||||
if (!empty($show_empty)) {
|
||||
$out.= '<option value="0"> </option>';
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
$langs->load("link");
|
||||
if (empty($relativepathwithnofile)) $relativepathwithnofile='';
|
||||
|
||||
|
||||
/*
|
||||
* Confirm form to delete
|
||||
*/
|
||||
@ -46,7 +47,7 @@ $savingdocmask='';
|
||||
if (empty($conf->global->MAIN_DISABLE_SUGGEST_REF_AS_PREFIX))
|
||||
{
|
||||
//var_dump($modulepart);
|
||||
if (in_array($modulepart,array('facture_fournisseur','commande_fournisseur','facture','commande','propal','ficheinter','contract','project','project_task')))
|
||||
if (in_array($modulepart,array('facture_fournisseur','commande_fournisseur','facture','commande','propal','ficheinter','contract','project','project_task','expensereport')))
|
||||
{
|
||||
$savingdocmask=$object->ref.'___file__';
|
||||
}
|
||||
|
||||
@ -32,6 +32,7 @@ require_once(DOL_DOCUMENT_ROOT."/core/class/html.formprojet.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/projet/class/project.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php');
|
||||
require_once(DOL_DOCUMENT_ROOT."/core/lib/expensereport.lib.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/core/lib/price.lib.php");
|
||||
dol_include_once('/expensereport/core/modules/expensereport/modules_expensereport.php');
|
||||
dol_include_once("/expensereport/class/expensereport.class.php");
|
||||
|
||||
@ -99,9 +100,9 @@ if ($action == 'add' && $user->rights->expensereport->creer)
|
||||
$object->date_debut = $date_start;
|
||||
$object->date_fin = $date_end;
|
||||
|
||||
$object->fk_user_validator = GETPOST('fk_user_validator','int');
|
||||
$object->fk_c_expensereport_statuts = 1;
|
||||
$object->fk_c_paiement = GETPOST('fk_c_paiement','int');
|
||||
$object->fk_user_validator = GETPOST('fk_user_validator','int');
|
||||
$object->note = GETPOST('note');
|
||||
|
||||
if ($object->periode_existe($user,dol_print_date($object->date_debut, 'dayrfc'),dol_print_date($object->date_fin, 'dayrfc')))
|
||||
@ -164,7 +165,7 @@ if ($action == "confirm_save" && GETPOST("confirm") == "yes" && $id > 0 && $user
|
||||
{
|
||||
$object = new ExpenseReport($db);
|
||||
$object->fetch($id);
|
||||
$result = $object->set_save($user);
|
||||
$result = $object->setValidate($user);
|
||||
if ($result > 0)
|
||||
{
|
||||
// Send mail
|
||||
@ -234,7 +235,7 @@ if ($action == "confirm_save" && GETPOST("confirm") == "yes" && $id > 0 && $user
|
||||
}
|
||||
}
|
||||
|
||||
if ($action == "confirm_save_from_refuse" && $_GET["confirm"] == "yes" && $id > 0 && $user->rights->expensereport->creer)
|
||||
if ($action == "confirm_save_from_refuse" && GETPOST("confirm") == "yes" && $id > 0 && $user->rights->expensereport->creer)
|
||||
{
|
||||
$object = new ExpenseReport($db);
|
||||
$object->fetch($id);
|
||||
@ -315,7 +316,7 @@ if ($action == "confirm_validate" && GETPOST("confirm") == "yes" && $id > 0 && $
|
||||
$object = new ExpenseReport($db);
|
||||
$object->fetch($id);
|
||||
|
||||
$result = $object->set_valide($user);
|
||||
$result = $object->setApproved($user);
|
||||
if ($result > 0)
|
||||
{
|
||||
if (! empty($conf->global->DEPLACEMENT_TO_CLEAN))
|
||||
@ -393,12 +394,12 @@ if ($action == "confirm_validate" && GETPOST("confirm") == "yes" && $id > 0 && $
|
||||
}
|
||||
}
|
||||
|
||||
if ($action == "confirm_refuse" && $_POST['confirm']=="yes" && !empty($_POST['detail_refuse']) && $id > 0 && $user->rights->expensereport->to_validate)
|
||||
if ($action == "confirm_refuse" && GETPOST('confirm')=="yes" && $id > 0 && $user->rights->expensereport->to_validate)
|
||||
{
|
||||
$object = new ExpenseReport($db);
|
||||
$object->fetch($id);
|
||||
|
||||
$result = $object->set_refuse($user,$_POST['detail_refuse']);
|
||||
|
||||
$result = $object->set_refuse($user,GETPOST('detail_refuse'));
|
||||
if ($result > 0)
|
||||
{
|
||||
if (! empty($conf->global->DEPLACEMENT_TO_CLEAN))
|
||||
@ -454,35 +455,35 @@ if ($action == "confirm_refuse" && $_POST['confirm']=="yes" && !empty($_POST['de
|
||||
}
|
||||
}
|
||||
|
||||
if ($action == "confirm_cancel" && GETPOST('confirm')=="yes" && !empty($_POST['detail_cancel']) && $id > 0 && $user->rights->expensereport->to_validate)
|
||||
//var_dump($user->id == $object->fk_user_validator);exit;
|
||||
if ($action == "confirm_cancel" && GETPOST('confirm')=="yes" && !empty($_POST['detail_cancel']) && $id > 0 && $user->rights->expensereport->creer)
|
||||
{
|
||||
$object = new ExpenseReport($db);
|
||||
$object->fetch($id);
|
||||
|
||||
if($user->id == $object->fk_user_validator)
|
||||
|
||||
if ($user->id == $object->fk_user_valid || $user->id == $object->fk_user_author)
|
||||
{
|
||||
$result = $object->set_cancel($user,$_POST['detail_cancel']);
|
||||
|
||||
|
||||
if ($result > 0)
|
||||
{
|
||||
if (! empty($conf->global->DEPLACEMENT_TO_CLEAN))
|
||||
{
|
||||
|
||||
// Send mail
|
||||
|
||||
|
||||
// TO
|
||||
$destinataire = new User($db);
|
||||
$destinataire->fetch($object->fk_user_author);
|
||||
$emailTo = $destinataire->email;
|
||||
|
||||
|
||||
// FROM
|
||||
$expediteur = new User($db);
|
||||
$expediteur->fetch($object->fk_user_cancel);
|
||||
$emailFrom = $expediteur->email;
|
||||
|
||||
|
||||
// SUBJECT
|
||||
$subject = "' ERP - Note de frais annulée";
|
||||
|
||||
|
||||
// CONTENT
|
||||
$message = "Bonjour {$destinataire->firstname},\n\n";
|
||||
$message.= "Votre note de frais \"{$object->ref}\" vient d'être annulée.\n";
|
||||
@ -490,10 +491,10 @@ if ($action == "confirm_cancel" && GETPOST('confirm')=="yes" && !empty($_POST['d
|
||||
$message.= "- Motif d'annulation : {$_POST['detail_cancel']}\n";
|
||||
$message.= "- Lien : {$dolibarr_main_url_root}/expensereport/card.php?id={$object->id}\n\n";
|
||||
$message.= "Bien cordialement,\n' SI";
|
||||
|
||||
|
||||
// PREPARE SEND
|
||||
$mailfile = new CMailFile($subject,$emailTo,$emailFrom,$message);
|
||||
|
||||
|
||||
if(!$mailfile->error)
|
||||
{
|
||||
// SEND
|
||||
@ -520,10 +521,6 @@ if ($action == "confirm_cancel" && GETPOST('confirm')=="yes" && !empty($_POST['d
|
||||
setEventMessages($object->error, $object->errors, 'errors');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
setEventMessages($langs->transnoentitiesnoconv("NOT_VALIDATOR"), '', 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
if ($action == "confirm_paid" && $_GET['confirm']=="yes" && $id > 0 && $user->rights->expensereport->to_paid)
|
||||
@ -531,7 +528,7 @@ if ($action == "confirm_paid" && $_GET['confirm']=="yes" && $id > 0 && $user->ri
|
||||
$object = new ExpenseReport($db);
|
||||
$object->fetch($id,$user);
|
||||
|
||||
$result = $object->set_paid($user);
|
||||
$result = $object->setPaid($user);
|
||||
if ($result > 0)
|
||||
{
|
||||
if (! empty($conf->global->DEPLACEMENT_TO_CLEAN))
|
||||
@ -622,13 +619,13 @@ if ($action == "confirm_paid" && $_GET['confirm']=="yes" && $id > 0 && $user->ri
|
||||
}
|
||||
}
|
||||
|
||||
if ($action == "confirm_brouillonner" && $_GET['confirm']=="yes" && $id > 0 && $user->rights->expensereport->creer)
|
||||
if ($action == "confirm_brouillonner" && GETPOST('confirm')=="yes" && $id > 0 && $user->rights->expensereport->creer)
|
||||
{
|
||||
$object = new ExpenseReport($db);
|
||||
$object->fetch($id);
|
||||
if($user->id == $object->fk_user_author OR $user->id == $object->fk_user_validator)
|
||||
if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid)
|
||||
{
|
||||
$result = $object->set_draft($user);
|
||||
$result = $object->setStatut(0);
|
||||
if ($result > 0)
|
||||
{
|
||||
header("Location: ".$_SEVER["PHP_SELF"]."?id=".$id);
|
||||
@ -654,19 +651,21 @@ if ($action == "addline")
|
||||
$object_ligne = new ExpenseReportLine($db);
|
||||
|
||||
$object_ligne->comments = GETPOST('comments');
|
||||
$object_ligne->qty = empty($_POST['qty'])?1:$_POST['qty'];
|
||||
$qty = GETPOST('qty','int');
|
||||
if (empty($qty)) $qty=1;
|
||||
$object_ligne->qty = $qty;
|
||||
|
||||
$object_ligne->value_unit = price2num(GETPOST('value_unit'));
|
||||
$object_ligne->value_unit = price2num($object_ligne->value_unit,'MU');
|
||||
$up=price2num(GETPOST('value_unit'),'MU');
|
||||
$object_ligne->value_unit = $up;
|
||||
|
||||
$object_ligne->date = $date;
|
||||
|
||||
$object_ligne->fk_c_type_fees = GETPOST('fk_c_type_fees');
|
||||
|
||||
$tva=GETPOST('vatrate');
|
||||
|
||||
$object_ligne->fk_c_tva = $tva;
|
||||
|
||||
$vatrate=GETPOST('vatrate');
|
||||
$object_ligne->fk_c_tva = $vatrate;
|
||||
$object_ligne->vatrate = $vatrate;
|
||||
|
||||
$object_ligne->fk_projet = $fk_projet;
|
||||
|
||||
if (! GETPOST('fk_c_type_fees') > 0)
|
||||
@ -682,7 +681,7 @@ if ($action == "addline")
|
||||
$action='';
|
||||
}
|
||||
|
||||
// Si aucun projet n'est défini
|
||||
/* Projects are never required. To force them, check module forceproject
|
||||
if ($conf->projet->enabled)
|
||||
{
|
||||
if (empty($object_ligne->fk_projet) || $object_ligne->fk_projet==-1)
|
||||
@ -690,7 +689,7 @@ if ($action == "addline")
|
||||
$error++;
|
||||
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Project")), 'errors');
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
// Si aucune date n'est rentrée
|
||||
if (empty($object_ligne->date) || $object_ligne->date=="--")
|
||||
@ -698,7 +697,6 @@ if ($action == "addline")
|
||||
$error++;
|
||||
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Date")), 'errors');
|
||||
}
|
||||
|
||||
// Si aucun prix n'est rentré
|
||||
if($object_ligne->value_unit==0)
|
||||
{
|
||||
@ -711,25 +709,19 @@ if ($action == "addline")
|
||||
{
|
||||
$object_ligne->fk_expensereport = $_POST['fk_expensereport'];
|
||||
|
||||
// Calculs des totos
|
||||
$object_ligne->total_ttc = $object_ligne->value_unit * $object_ligne->qty;
|
||||
$object_ligne->total_ttc = price2num($object_ligne->total_ttc,'MT');
|
||||
$type = 0; // TODO What if service
|
||||
$tmp = calcul_price_total($qty, $up, 0, $vatrate, 0, 0, 0, 'TTC', 0, $type);
|
||||
|
||||
$object_ligne->total_ttc = $tmp[2];
|
||||
$object_ligne->tva_taux = GETPOST('vatrate');
|
||||
|
||||
$tx_tva = $object_ligne->tva_taux / 100;
|
||||
$tx_tva = $tx_tva + 1;
|
||||
|
||||
$object_ligne->total_ht = $object_ligne->total_ttc / $tx_tva;
|
||||
$object_ligne->total_ht = price2num($object_ligne->total_ht,'MT');
|
||||
|
||||
$object_ligne->total_tva = $object_ligne->total_ttc - $object_ligne->total_ht;
|
||||
$object_ligne->total_ht = $tmp[0];
|
||||
$object_ligne->total_tva = $tmp[1];
|
||||
|
||||
$result = $object_ligne->insert();
|
||||
if ($result > 0)
|
||||
{
|
||||
$db->commit();
|
||||
header("Location: ".$_SERVER["PHP_SELF"]."?id=".$_GET['id']);
|
||||
header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id);
|
||||
exit;
|
||||
}
|
||||
else
|
||||
@ -910,10 +902,7 @@ if (! empty($conf->global->DEPLACEMENT_TO_CLEAN))
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Create
|
||||
*/
|
||||
|
||||
// Create
|
||||
if ($action == 'create')
|
||||
{
|
||||
print print_fiche_titre($langs->trans("NewTrip"));
|
||||
@ -1002,11 +991,6 @@ else
|
||||
}
|
||||
|
||||
$head = expensereport_prepare_head($object);
|
||||
/*
|
||||
$head[0][0] = $_SERVER['PHP_SELF'].'?id='.$object->id;
|
||||
$head[0][1] = $langs->trans('Card');
|
||||
$head[0][2] = 'card';
|
||||
$h++;*/
|
||||
|
||||
if ($action == 'edit' && ($object->fk_c_expensereport_statuts < 3 || $object->fk_c_expensereport_statuts==99))
|
||||
{
|
||||
@ -1062,10 +1046,10 @@ else
|
||||
if($object->fk_c_expensereport_statuts<3)
|
||||
{
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("VALIDATOR").'</td>';
|
||||
print '<td>'.$langs->trans("VALIDATOR").'</td>'; // Approbator
|
||||
print '<td>';
|
||||
$include_users = $object->fetch_users_approver_expensereport();
|
||||
$s=$form->select_dolusers($object->fk_user_validator,"fk_user_validator",0,"",0,$include_users);
|
||||
$s=$form->select_dolusers($object->fk_user_validator,"fk_user_validator",1,"",0,$include_users);
|
||||
print $form->textwithpicto($s, $langs->trans("AnyOtherInThisListCanValidate"));
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
@ -1146,7 +1130,7 @@ else
|
||||
endif;
|
||||
|
||||
if ($action == 'cancel'):
|
||||
$array_input = array(array('type'=>"text",'label'=>"Entrez ci-dessous un motif d'annulation :",'name'=>"detail_cancel",'size'=>"50",'value'=>""));
|
||||
$array_input = array(array('type'=>"text",'label'=>$langs->trans("Comment"),'name'=>"detail_cancel",'size'=>"50",'value'=>""));
|
||||
$ret=$form->form_confirm($_SEVER["PHP_SELF"]."?id=".$id,$langs->trans("ConfirmCancelTrip"),"","confirm_cancel",$array_input,"",0);
|
||||
if ($ret == 'html') print '<br>';
|
||||
endif;
|
||||
@ -1157,14 +1141,14 @@ else
|
||||
endif;
|
||||
|
||||
if ($action == 'refuse'):
|
||||
$array_input = array(array('type'=>"text",'label'=>"Entrez ci-dessous un motif de refus :",'name'=>"detail_refuse",'size'=>"50",'value'=>""));
|
||||
$ret=$form->form_confirm($_SEVER["PHP_SELF"]."?id=".$id,$langs->trans("ConfirmRefuseTrip"),"","confirm_refuse",$array_input,"yes",0);
|
||||
$array_input = array('text'=>$langs->trans("ConfirmRefuseTrip"), array('type'=>"text",'label'=>$langs->trans("Comment"),'name'=>"detail_refuse",'size'=>"50",'value'=>""));
|
||||
$ret=$form->form_confirm($_SEVER["PHP_SELF"]."?id=".$id,$langs->trans("Deny"),'',"confirm_refuse",$array_input,"yes",1);
|
||||
if ($ret == 'html') print '<br>';
|
||||
endif;
|
||||
|
||||
if ($action == 'delete_line')
|
||||
{
|
||||
$ret=$form->form_confirm($_SEVER["PHP_SELF"]."?id=".$_GET['id']."&rowid=".$_GET['rowid'],$langs->trans("DeleteLine"),$langs->trans("ConfirmDeleteLine"),"confirm_delete_line");
|
||||
$ret=$form->form_confirm($_SEVER["PHP_SELF"]."?id=".$id."&rowid=".$_GET['rowid'],$langs->trans("DeleteLine"),$langs->trans("ConfirmDeleteLine"),"confirm_delete_line",'','yes',1);
|
||||
if ($ret == 'html') print '<br>';
|
||||
}
|
||||
|
||||
@ -1190,9 +1174,10 @@ else
|
||||
print '<td>'.$object->libelle_paiement.'</td>';
|
||||
print '</tr>';
|
||||
}
|
||||
// Status
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("Statut").'</td>';
|
||||
print '<td style="font-weight:bold;">'.$object->getLibStatut(4).'</td>';
|
||||
print '<td>'.$object->getLibStatut(4).'</td>';
|
||||
print '</tr>';
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("Note").'</td>';
|
||||
@ -1211,58 +1196,7 @@ else
|
||||
print '<td>'.price($object->total_ttc).'</td>';
|
||||
print '</tr>';
|
||||
|
||||
if($object->fk_c_expensereport_statuts<3)
|
||||
{
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("VALIDATOR").'</td>';
|
||||
print '<td>';
|
||||
if ($object->fk_user_validator > 0)
|
||||
{
|
||||
$userfee=new User($db);
|
||||
$userfee->fetch($object->fk_user_validator);
|
||||
print $userfee->getNomUrl(1);
|
||||
}
|
||||
print '</td></tr>';
|
||||
}
|
||||
elseif($object->fk_c_expensereport_statuts==4)
|
||||
{
|
||||
print '<tr>';
|
||||
print '<td><span style="font-weight:bold;color:red;">'.$langs->trans("CANCEL_USER").'</span></td>';
|
||||
print '<td><span style="font-weight:bold;color:red;">';
|
||||
if ($object->fk_user_cancel > 0)
|
||||
{
|
||||
$userfee=new User($db);
|
||||
$userfee->fetch($object->fk_user_cancel);
|
||||
print $userfee->getNomUrl(1);
|
||||
}
|
||||
print '</span></td></tr>';
|
||||
print '<tr>';
|
||||
print '<td><span style="font-weight:bold;color:red;">'.$langs->trans("MOTIF_CANCEL").'</span></td>';
|
||||
print '<td><span style="font-weight:bold;color:red;">'.$object->detail_cancel.'</span></td></tr>';
|
||||
print '</tr>';
|
||||
print '<tr>';
|
||||
print '<td><span style="font-weight:bold;color:red;">'.$langs->trans("DATE_CANCEL").'</span></td>';
|
||||
print '<td><span style="font-weight:bold;color:red;">'.$object->date_cancel.'</span></td></tr>';
|
||||
print '</tr>';
|
||||
}
|
||||
else
|
||||
{
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("VALIDOR").'</td>';
|
||||
print '<td>';
|
||||
if ($object->fk_user_valid > 0)
|
||||
{
|
||||
$userfee=new User($db);
|
||||
$userfee->fetch($object->fk_user_valid);
|
||||
print $userfee->getNomUrl(1);
|
||||
}
|
||||
print '</td></tr>';
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("DATE_VALIDE").'</td>';
|
||||
print '<td>'.$object->date_valide.'</td></tr>';
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
// Author
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("AUTHOR").'</td>';
|
||||
print '<td>';
|
||||
@ -1293,31 +1227,82 @@ else
|
||||
print '<td>'.$object->date_paiement.'</td></tr>';
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
if($object->fk_c_expensereport_statuts<3)
|
||||
{
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("VALIDATOR").'</td>';
|
||||
print '<td>';
|
||||
if ($object->fk_user_validator > 0)
|
||||
{
|
||||
$userfee=new User($db);
|
||||
$userfee->fetch($object->fk_user_validator);
|
||||
print $userfee->getNomUrl(1);
|
||||
}
|
||||
print '</td></tr>';
|
||||
}
|
||||
elseif($object->fk_c_expensereport_statuts==4)
|
||||
{
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("CANCEL_USER").'</span></td>';
|
||||
print '<td>';
|
||||
if ($object->fk_user_cancel > 0)
|
||||
{
|
||||
$userfee=new User($db);
|
||||
$userfee->fetch($object->fk_user_cancel);
|
||||
print $userfee->getNomUrl(1);
|
||||
}
|
||||
print '</td></tr>';
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("MOTIF_CANCEL").'</td>';
|
||||
print '<td>'.$object->detail_cancel.'</td></tr>';
|
||||
print '</tr>';
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("DATE_CANCEL").'</td>';
|
||||
print '<td>'.$object->date_cancel.'</td></tr>';
|
||||
print '</tr>';
|
||||
}
|
||||
else
|
||||
{
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("VALIDOR").'</td>';
|
||||
print '<td>';
|
||||
if ($object->fk_user_valid > 0)
|
||||
{
|
||||
$userfee=new User($db);
|
||||
$userfee->fetch($object->fk_user_valid);
|
||||
print $userfee->getNomUrl(1);
|
||||
}
|
||||
print '</td></tr>';
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("DATE_VALIDE").'</td>';
|
||||
print '<td>'.$object->date_valide.'</td></tr>';
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
if($object->fk_c_expensereport_statuts==99 || !empty($object->detail_refuse))
|
||||
{
|
||||
print '<tr>';
|
||||
print '<td><span style="font-weight:bold;color:red;">'.$langs->trans("REFUSEUR").'</span></td>';
|
||||
print '<td><span style="font-weight:bold;color:red;">';
|
||||
print '<td>'.$langs->trans("REFUSEUR").'</td>';
|
||||
print '<td>';
|
||||
$userfee=new User($db);
|
||||
$userfee->fetch($object->fk_user_refuse);
|
||||
print $userfee->getNomUrl(1);
|
||||
print '</span></td></tr>';
|
||||
print '</td></tr>';
|
||||
print '<tr>';
|
||||
print '<td><span style="font-weight:bold;color:red;">'.$langs->trans("MOTIF_REFUS").'</span></td>';
|
||||
print '<td><span style="font-weight:bold;color:red;">'.$object->detail_refuse.'</span></td></tr>';
|
||||
print '</tr>';
|
||||
print '<tr>';
|
||||
print '<td><span style="font-weight:bold;color:red;">'.$langs->trans("DATE_REFUS").'</span></td>';
|
||||
print '<td><span style="font-weight:bold;color:red;">'.$object->date_refuse.'</span></td></tr>';
|
||||
print '<td>'.$langs->trans("DATE_REFUS").'</td>';
|
||||
print '<td>'.$object->date_refuse;
|
||||
if ($object->detail_refuse) print ' - '.$object->detail_refuse;
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
}
|
||||
print '</table>';
|
||||
|
||||
print '<br>';
|
||||
|
||||
// Fetch Lines of current ndf
|
||||
// Fetch Lines of current expense report
|
||||
$sql = 'SELECT fde.rowid, fde.fk_expensereport, fde.fk_c_type_fees, fde.fk_projet, fde.date,';
|
||||
$sql.= ' fde.fk_c_tva, fde.comments, fde.qty, fde.value_unit, fde.total_ht, fde.total_tva, fde.total_ttc,';
|
||||
$sql.= ' fde.fk_c_tva as vatrate, fde.comments, fde.qty, fde.value_unit, fde.total_ht, fde.total_tva, fde.total_ttc,';
|
||||
$sql.= ' ctf.code as type_fees_code, ctf.label as type_fees_libelle,';
|
||||
$sql.= ' pjt.rowid as projet_id, pjt.title as projet_title, pjt.ref as projet_ref';
|
||||
$sql.= ' FROM '.MAIN_DB_PREFIX.'expensereport_det fde';
|
||||
@ -1357,7 +1342,7 @@ else
|
||||
print '<td style="text-align:right;">'.$langs->trans('AmountTTC').'</td>';
|
||||
}
|
||||
// Ajout des boutons de modification/suppression
|
||||
if ($object->fk_c_expensereport_statuts<2 OR $object->fk_c_expensereport_statuts==99)
|
||||
if ($object->fk_c_expensereport_statuts < 2 || $object->fk_c_expensereport_statuts==99)
|
||||
{
|
||||
print '<td style="text-align:right;"></td>';
|
||||
}
|
||||
@ -1370,25 +1355,34 @@ else
|
||||
$piece_comptable = $i + 1;
|
||||
$objp = $db->fetch_object($resql);
|
||||
$var=!$var;
|
||||
if ($action != 'editline')
|
||||
if ($action != 'editline' || $objp->rowid != GETPOST('rowid'))
|
||||
{
|
||||
print '<tr '.$bc[$var].'>';
|
||||
print '<td style="text-align:center;width:9%;">';
|
||||
print img_picto($langs->trans("Document"), "object_generic");
|
||||
print ' <span style="color:red;font-weight:bold;font-size:14px;">'.$piece_comptable.'</span></td>';
|
||||
if ($action != 'editline')
|
||||
{
|
||||
print '<td style="text-align:center;">';
|
||||
print img_picto($langs->trans("Document"), "object_generic");
|
||||
print ' <span>'.$piece_comptable.'</span></td>';
|
||||
}
|
||||
print '<td style="text-align:center;">'.$objp->date.'</td>';
|
||||
print '<td style="text-align:center;">';
|
||||
$projecttmp->id=$objp->projet_id;
|
||||
$projecttmp->ref=$objp->projet_ref;
|
||||
print $projecttmp->getNomUrl(1);
|
||||
if ($objp->projet_id > 0)
|
||||
{
|
||||
$projecttmp->id=$objp->projet_id;
|
||||
$projecttmp->ref=$objp->projet_ref;
|
||||
print $projecttmp->getNomUrl(1);
|
||||
}
|
||||
print '</td>';
|
||||
print '<td style="text-align:center;">'.$langs->trans("TF_".strtoupper($objp->type_fees_libelle)).'</td>';
|
||||
print '<td style="text-align:left;">'.$objp->comments.'</td>';
|
||||
print '<td style="text-align:right;">'.vatrate($objp->tva_taux,true).'</td>';
|
||||
print '<td style="text-align:right;">'.vatrate($objp->vatrate,true).'</td>';
|
||||
print '<td style="text-align:right;">'.price($objp->value_unit).'</td>';
|
||||
print '<td style="text-align:right;">'.$objp->qty.'</td>';
|
||||
print '<td style="text-align:right;">'.price($objp->total_ht).'</td>';
|
||||
print '<td style="text-align:right;">'.price($objp->total_ttc).'</td>';
|
||||
if ($action != 'editline')
|
||||
{
|
||||
print '<td style="text-align:right;">'.price($objp->total_ht).'</td>';
|
||||
print '<td style="text-align:right;">'.price($objp->total_ttc).'</td>';
|
||||
}
|
||||
|
||||
// Ajout des boutons de modification/suppression
|
||||
if($object->fk_c_expensereport_statuts<2 OR $object->fk_c_expensereport_statuts==99)
|
||||
@ -1404,45 +1398,44 @@ else
|
||||
}
|
||||
print '</tr>';
|
||||
}
|
||||
else
|
||||
|
||||
if ($action == 'editline' && $objp->rowid == GETPOST('rowid'))
|
||||
{
|
||||
if($objp->rowid==$_GET['rowid'])
|
||||
{
|
||||
//modif ligne!!!!!
|
||||
print '<tr '.$bc[$var].'>';
|
||||
// Sélection date
|
||||
print '<td style="text-align:center;width:10%;">';
|
||||
print '<td style="text-align:center;">';
|
||||
$form->select_date($objp->date,'date');
|
||||
print '</td>';
|
||||
|
||||
// Sélection projet
|
||||
print '<td style="text-align:center;width:10%;">';
|
||||
print select_projet($objp->fk_projet,'','fk_projet');
|
||||
// Select project
|
||||
print '<td>';
|
||||
$formproject->select_projects(-1, $objp->fk_projet,'fk_projet', 0, 0, 0, 1);
|
||||
print '</td>';
|
||||
|
||||
// Sélection type
|
||||
print '<td style="text-align:center;width:10%;">';
|
||||
// Sélect type
|
||||
print '<td style="text-align:center;">';
|
||||
select_type_fees_id($objp->type_fees_code,'fk_c_type_fees');
|
||||
print '</td>';
|
||||
|
||||
// Add comments
|
||||
print '<td style="text-align:left;width:35%;">';
|
||||
print '<td>';
|
||||
print '<textarea class="flat_ndf" name="comments" class="centpercent">'.$objp->comments.'</textarea>';
|
||||
print '</td>';
|
||||
|
||||
// Sélection TVA
|
||||
print '<td style="text-align:right;width:10%;">';
|
||||
print '<td style="text-align:right;">';
|
||||
print $form->load_tva('fk_c_tva', (isset($_POST["fk_c_tva"])?$_POST["fk_c_tva"]:$objp->tva_taux), $mysoc, '');
|
||||
print '</td>';
|
||||
|
||||
// Prix unitaire
|
||||
print '<td style="text-align:right;width:10%;">';
|
||||
print '<input type="text" size="10" name="value_unit" value="'.$objp->value_unit.'" />';
|
||||
print '<td style="text-align:right;">';
|
||||
print '<input type="text" size="6" name="value_unit" value="'.$objp->value_unit.'" />';
|
||||
print '</td>';
|
||||
|
||||
// Quantité
|
||||
print '<td style="text-align:right;width:10%;">';
|
||||
print '<input type="text" size="10" name="qty" value="'.$objp->qty.'" />';
|
||||
print '<td style="text-align:right;">';
|
||||
print '<input type="text" size="4" name="qty" value="'.$objp->qty.'" />';
|
||||
print '</td>';
|
||||
|
||||
print '<td style="text-align:center;">';
|
||||
@ -1450,7 +1443,6 @@ else
|
||||
print '<input type="submit" class="button" name="save" value="'.$langs->trans('Save').'">';
|
||||
print '<br /><input type="submit" class="button" name="cancel" value="'.$langs->trans('Cancel').'">';
|
||||
print '</td>';
|
||||
}
|
||||
}
|
||||
|
||||
$i++;
|
||||
@ -1503,7 +1495,7 @@ else
|
||||
|
||||
// Sélection projet
|
||||
print '<td>';
|
||||
$formproject->select_projects('', GETPOST('fk_projet'), 'fk_projet', 0, 0, 1, 1);
|
||||
$formproject->select_projects(-1, GETPOST('fk_projet'), 'fk_projet', 0, 0, 1, 1);
|
||||
print '</td>';
|
||||
|
||||
// Sélection type
|
||||
@ -1528,7 +1520,7 @@ else
|
||||
|
||||
// Prix unitaire
|
||||
print '<td style="text-align:right;">';
|
||||
print '<input type="text" size="10" name="value_unit" value="'.GETPOST('value_unit').'">';
|
||||
print '<input type="text" size="6" name="value_unit" value="'.GETPOST('value_unit').'">';
|
||||
print '</td>';
|
||||
|
||||
// Quantité
|
||||
@ -1593,7 +1585,7 @@ if ($action != 'create' && $action != 'edit')
|
||||
// Validate
|
||||
if (count($object->lines) > 0 || count($object->lignes) > 0)
|
||||
{
|
||||
print '<a class="butAction" href="'.$_SEVER["PHP_SELF"].'?action=save&id='.$id.'">'.$langs->trans('Validate').'</a>';
|
||||
print '<a class="butAction" href="'.$_SEVER["PHP_SELF"].'?action=save&id='.$id.'">'.$langs->trans('ValidateAndSubmit').'</a>';
|
||||
}
|
||||
|
||||
if ($user->rights->expensereport->supprimer)
|
||||
@ -1611,7 +1603,7 @@ if ($action != 'create' && $action != 'edit')
|
||||
*/
|
||||
if($user->rights->expensereport->creer && $object->fk_c_expensereport_statuts==99)
|
||||
{
|
||||
if ($object->fk_user_author == $user->id)
|
||||
if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid)
|
||||
{
|
||||
// Modifier
|
||||
print '<a class="butAction" href="'.$_SEVER["PHP_SELF"].'?action=edit&id='.$id.'">'.$langs->trans('ModifyInfoGen').'</a>';
|
||||
@ -1619,7 +1611,7 @@ if ($action != 'create' && $action != 'edit')
|
||||
// Brouillonner (le statut refusée est identique à brouillon)
|
||||
//print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$id.'">'.$langs->trans('BROUILLONNER').'</a>';
|
||||
// Enregistrer depuis le statut "Refusée"
|
||||
print '<a class="butAction" href="'.$_SEVER["PHP_SELF"].'?action=save_from_refuse&id='.$id.'">'.$langs->trans('Validate').'</a>';
|
||||
print '<a class="butAction" href="'.$_SEVER["PHP_SELF"].'?action=save_from_refuse&id='.$id.'">'.$langs->trans('ValidateAndSubmit').'</a>';
|
||||
|
||||
if ($user->rights->expensereport->supprimer)
|
||||
{
|
||||
@ -1631,10 +1623,10 @@ if ($action != 'create' && $action != 'edit')
|
||||
|
||||
if ($user->rights->expensereport->to_paid && $object->fk_c_expensereport_statuts==5)
|
||||
{
|
||||
if ($object->fk_user_author == $user->id || $object->fk_user_valid == $user->id)
|
||||
if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid)
|
||||
{
|
||||
// Brouillonner
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$id.'">'.$langs->trans('BROUILLONNER').'</a>';
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$id.'">'.$langs->trans('SetToDraft').'</a>';
|
||||
}
|
||||
}
|
||||
|
||||
@ -1648,7 +1640,7 @@ if ($action != 'create' && $action != 'edit')
|
||||
if ($object->fk_user_author == $user->id)
|
||||
{
|
||||
// Brouillonner
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$id.'">'.$langs->trans('BROUILLONNER').'</a>';
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$id.'">'.$langs->trans('SetToDraft').'</a>';
|
||||
}
|
||||
}
|
||||
|
||||
@ -1659,12 +1651,12 @@ if ($action != 'create' && $action != 'edit')
|
||||
// Valider
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=validate&id='.$id.'">'.$langs->trans('Approve').'</a>';
|
||||
// Refuser
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=refuse&id='.$id.'">'.$langs->trans('Refuse').'</a>';
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=refuse&id='.$id.'">'.$langs->trans('Deny').'</a>';
|
||||
//}
|
||||
|
||||
if ($object->fk_user_author==$user->id)
|
||||
if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid)
|
||||
{
|
||||
// Annuler
|
||||
// Cancel
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$id.'">'.$langs->trans('Cancel').'</a>';
|
||||
}
|
||||
|
||||
@ -1679,14 +1671,17 @@ if ($action != 'create' && $action != 'edit')
|
||||
* ET user à droit de "to_paid"
|
||||
* Afficher : "Annuler" / "Payer" / "Supprimer"
|
||||
*/
|
||||
if ($user->rights->expensereport->to_paid && $object->fk_c_expensereport_statuts==5)
|
||||
if ($user->rights->expensereport->to_paid && $object->fk_c_expensereport_statuts == 5)
|
||||
{
|
||||
// Payer
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=paid&id='.$id.'">'.$langs->trans('TO_PAID').'</a>';
|
||||
|
||||
// Annuler
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$id.'">'.$langs->trans('CANCEL').'</a>';
|
||||
|
||||
// Cancel
|
||||
if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid)
|
||||
{
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$id.'">'.$langs->trans('Cancel').'</a>';
|
||||
}
|
||||
|
||||
if($user->rights->expensereport->supprimer)
|
||||
{
|
||||
// Supprimer
|
||||
@ -1717,10 +1712,10 @@ if ($action != 'create' && $action != 'edit')
|
||||
if ($user->rights->expensereport->supprimer && $object->fk_c_expensereport_statuts==4)
|
||||
{
|
||||
|
||||
if ($object->fk_user_validator==$user->id)
|
||||
if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid)
|
||||
{
|
||||
// Brouillonner
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$id.'">'.$langs->trans('BROUILLONNER').'</a>';
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$id.'">'.$langs->trans('ReOpen').'</a>';
|
||||
}
|
||||
|
||||
// Supprimer
|
||||
@ -1732,7 +1727,7 @@ if ($action != 'create' && $action != 'edit')
|
||||
print '</div>';
|
||||
|
||||
|
||||
$conf->global->DOL_URL_ROOT_DOCUMENT_PHP=dol_buildpath('/expensereport/documentwrapper.php',1);
|
||||
//$conf->global->DOL_URL_ROOT_DOCUMENT_PHP=dol_buildpath('/expensereport/documentwrapper.php',1);
|
||||
|
||||
|
||||
print '<div style="width:50%">';
|
||||
|
||||
@ -39,40 +39,40 @@ class ExpenseReport extends CommonObject
|
||||
ACTIONS
|
||||
*/
|
||||
|
||||
// Enregistrement
|
||||
var $date_create;
|
||||
var $fk_user_author;
|
||||
// Enregistrement
|
||||
var $date_create;
|
||||
var $fk_user_author;
|
||||
|
||||
// Refus
|
||||
var $date_refuse;
|
||||
var $detail_refuse;
|
||||
var $fk_user_refuse;
|
||||
// Refus
|
||||
var $date_refuse;
|
||||
var $detail_refuse;
|
||||
var $fk_user_refuse;
|
||||
|
||||
// Annulation
|
||||
var $date_cancel;
|
||||
var $detail_cancel;
|
||||
var $fk_user_cancel;
|
||||
// Annulation
|
||||
var $date_cancel;
|
||||
var $detail_cancel;
|
||||
var $fk_user_cancel;
|
||||
|
||||
// Validation
|
||||
var $date_valide;
|
||||
var $fk_user_valid;
|
||||
var $user_valid_infos;
|
||||
// Validation
|
||||
var $date_valide;
|
||||
var $fk_user_valid;
|
||||
var $user_valid_infos;
|
||||
|
||||
// Paiement
|
||||
var $date_paiement;
|
||||
var $fk_user_paid;
|
||||
var $user_paid_infos;
|
||||
// Paiement
|
||||
var $date_paiement;
|
||||
var $fk_user_paid;
|
||||
var $user_paid_infos;
|
||||
|
||||
/*
|
||||
END ACTIONS
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param DoliDB $db Handler acces base de donnees
|
||||
*/
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param DoliDB $db Handler acces base de donnees
|
||||
*/
|
||||
function __construct($db)
|
||||
{
|
||||
$this->db = $db;
|
||||
@ -242,13 +242,13 @@ class ExpenseReport extends CommonObject
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load an object from database
|
||||
*
|
||||
* @param int $id Id
|
||||
* @param string $ref Ref
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
/**
|
||||
* Load an object from database
|
||||
*
|
||||
* @param int $id Id
|
||||
* @param string $ref Ref
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function fetch($id, $ref='')
|
||||
{
|
||||
global $conf,$db;
|
||||
@ -467,94 +467,94 @@ class ExpenseReport extends CommonObject
|
||||
|
||||
if($user->rights->expensereport->lire) {
|
||||
|
||||
$sql = "SELECT de.fk_expensereport, de.date, de.comments, de.total_ht, de.total_ttc";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."expensereport_det as de";
|
||||
$sql.= " WHERE de.fk_projet = ".$projectid;
|
||||
$sql = "SELECT de.fk_expensereport, de.date, de.comments, de.total_ht, de.total_ttc";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."expensereport_det as de";
|
||||
$sql.= " WHERE de.fk_projet = ".$projectid;
|
||||
|
||||
dol_syslog(get_class($this)."::fetch sql=".$sql, LOG_DEBUG);
|
||||
$result = $db->query($sql) ;
|
||||
if ($result)
|
||||
{
|
||||
$num = $db->num_rows($result);
|
||||
$i = 0;
|
||||
$total_HT = 0;
|
||||
$total_TTC = 0;
|
||||
dol_syslog(get_class($this)."::fetch sql=".$sql, LOG_DEBUG);
|
||||
$result = $db->query($sql) ;
|
||||
if ($result)
|
||||
{
|
||||
$num = $db->num_rows($result);
|
||||
$i = 0;
|
||||
$total_HT = 0;
|
||||
$total_TTC = 0;
|
||||
|
||||
while ($i < $num)
|
||||
{
|
||||
while ($i < $num)
|
||||
{
|
||||
|
||||
$objp = $db->fetch_object($result);
|
||||
$objp = $db->fetch_object($result);
|
||||
|
||||
$sql2 = "SELECT d.rowid, d.fk_user_author, d.ref, d.fk_c_expensereport_statuts";
|
||||
$sql2.= " FROM ".MAIN_DB_PREFIX."expensereport as d";
|
||||
$sql2.= " WHERE d.rowid = '".$objp->fk_expensereport."'";
|
||||
$sql2 = "SELECT d.rowid, d.fk_user_author, d.ref, d.fk_c_expensereport_statuts";
|
||||
$sql2.= " FROM ".MAIN_DB_PREFIX."expensereport as d";
|
||||
$sql2.= " WHERE d.rowid = '".$objp->fk_expensereport."'";
|
||||
|
||||
$result2 = $db->query($sql2);
|
||||
$obj = $db->fetch_object($result2);
|
||||
$result2 = $db->query($sql2);
|
||||
$obj = $db->fetch_object($result2);
|
||||
|
||||
$objp->fk_user_author = $obj->fk_user_author;
|
||||
$objp->ref = $obj->ref;
|
||||
$objp->fk_c_expensereport_status = $obj->fk_c_expensereport_statuts;
|
||||
$objp->rowid = $obj->rowid;
|
||||
$objp->fk_user_author = $obj->fk_user_author;
|
||||
$objp->ref = $obj->ref;
|
||||
$objp->fk_c_expensereport_status = $obj->fk_c_expensereport_statuts;
|
||||
$objp->rowid = $obj->rowid;
|
||||
|
||||
$total_HT = $total_HT + $objp->total_ht;
|
||||
$total_TTC = $total_TTC + $objp->total_ttc;
|
||||
$author = new User($db);
|
||||
$author->fetch($objp->fk_user_author);
|
||||
$total_HT = $total_HT + $objp->total_ht;
|
||||
$total_TTC = $total_TTC + $objp->total_ttc;
|
||||
$author = new User($db);
|
||||
$author->fetch($objp->fk_user_author);
|
||||
|
||||
print '<tr>';
|
||||
print '<td><a href="'.DOL_URL_ROOT.'/expensereport/card.php?id='.$objp->rowid.'">'.$objp->ref_num.'</a></td>';
|
||||
print '<td align="center">'.dol_print_date($objp->date,'day').'</td>';
|
||||
print '<td>'.$author->getNomUrl().'</td>';
|
||||
print '<td>'.$objp->comments.'</td>';
|
||||
print '<td align="right">'.price($objp->total_ht).'</td>';
|
||||
print '<td align="right">'.price($objp->total_ttc).'</td>';
|
||||
print '<td align="right">';
|
||||
print '<tr>';
|
||||
print '<td><a href="'.DOL_URL_ROOT.'/expensereport/card.php?id='.$objp->rowid.'">'.$objp->ref_num.'</a></td>';
|
||||
print '<td align="center">'.dol_print_date($objp->date,'day').'</td>';
|
||||
print '<td>'.$author->getNomUrl().'</td>';
|
||||
print '<td>'.$objp->comments.'</td>';
|
||||
print '<td align="right">'.price($objp->total_ht).'</td>';
|
||||
print '<td align="right">'.price($objp->total_ttc).'</td>';
|
||||
print '<td align="right">';
|
||||
|
||||
switch($objp->fk_c_expensereport_status) {
|
||||
case 4:
|
||||
print img_picto($langs->trans('StatusOrderCanceled'),'statut5');
|
||||
break;
|
||||
case 1:
|
||||
print $langs->trans('Draft').' '.img_picto($langs->trans('Draft'),'statut0');
|
||||
break;
|
||||
case 2:
|
||||
print $langs->trans('TripForValid').' '.img_picto($langs->trans('TripForValid'),'statut3');;
|
||||
break;
|
||||
case 5:
|
||||
print $langs->trans('TripForPaid').' '.img_picto($langs->trans('TripForPaid'),'statut3');
|
||||
break;
|
||||
case 6:
|
||||
print $langs->trans('TripPaid').' '.img_picto($langs->trans('TripPaid'),'statut4');
|
||||
break;
|
||||
}
|
||||
/*
|
||||
if ($status==4) return img_picto($langs->trans('StatusOrderCanceled'),'statut5');
|
||||
if ($status==1) return img_picto($langs->trans('StatusOrderDraft'),'statut0');
|
||||
if ($status==2) return img_picto($langs->trans('StatusOrderValidated'),'statut1');
|
||||
if ($status==2) return img_picto($langs->trans('StatusOrderOnProcess'),'statut3');
|
||||
if ($status==5) return img_picto($langs->trans('StatusOrderToBill'),'statut4');
|
||||
if ($status==6) return img_picto($langs->trans('StatusOrderOnProcess'),'statut6');
|
||||
*/
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
switch($objp->fk_c_expensereport_status) {
|
||||
case 4:
|
||||
print img_picto($langs->trans('StatusOrderCanceled'),'statut5');
|
||||
break;
|
||||
case 1:
|
||||
print $langs->trans('Draft').' '.img_picto($langs->trans('Draft'),'statut0');
|
||||
break;
|
||||
case 2:
|
||||
print $langs->trans('TripForValid').' '.img_picto($langs->trans('TripForValid'),'statut3');;
|
||||
break;
|
||||
case 5:
|
||||
print $langs->trans('TripForPaid').' '.img_picto($langs->trans('TripForPaid'),'statut3');
|
||||
break;
|
||||
case 6:
|
||||
print $langs->trans('TripPaid').' '.img_picto($langs->trans('TripPaid'),'statut4');
|
||||
break;
|
||||
}
|
||||
/*
|
||||
if ($status==4) return img_picto($langs->trans('StatusOrderCanceled'),'statut5');
|
||||
if ($status==1) return img_picto($langs->trans('StatusOrderDraft'),'statut0');
|
||||
if ($status==2) return img_picto($langs->trans('StatusOrderValidated'),'statut1');
|
||||
if ($status==2) return img_picto($langs->trans('StatusOrderOnProcess'),'statut3');
|
||||
if ($status==5) return img_picto($langs->trans('StatusOrderToBill'),'statut4');
|
||||
if ($status==6) return img_picto($langs->trans('StatusOrderOnProcess'),'statut6');
|
||||
*/
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
|
||||
$i++;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
|
||||
print '<tr class="liste_total"><td colspan="4">'.$langs->trans("Number").': '.$i.'</td>';
|
||||
print '<td align="right" width="100">'.$langs->trans("TotalHT").' : '.price($total_HT).'</td>';
|
||||
print '<td align="right" width="100">'.$langs->trans("TotalTTC").' : '.price($total_TTC).'</td>';
|
||||
print '<td> </td>';
|
||||
print '</tr>';
|
||||
print '<tr class="liste_total"><td colspan="4">'.$langs->trans("Number").': '.$i.'</td>';
|
||||
print '<td align="right" width="100">'.$langs->trans("TotalHT").' : '.price($total_HT).'</td>';
|
||||
print '<td align="right" width="100">'.$langs->trans("TotalTTC").' : '.price($total_TTC).'</td>';
|
||||
print '<td> </td>';
|
||||
print '</tr>';
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$db->error();
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$db->error();
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -580,10 +580,10 @@ class ExpenseReport extends CommonObject
|
||||
$num = $this->db->num_rows($result);
|
||||
$i = 0;
|
||||
while ($i < $num):
|
||||
$objp = $this->db->fetch_object($result);
|
||||
$total_ht+=$objp->total_ht;
|
||||
$total_tva+=$objp->total_tva;
|
||||
$i++;
|
||||
$objp = $this->db->fetch_object($result);
|
||||
$total_ht+=$objp->total_ht;
|
||||
$total_tva+=$objp->total_tva;
|
||||
$i++;
|
||||
endwhile;
|
||||
|
||||
$total_ttc = $total_ht + $total_tva;
|
||||
@ -594,19 +594,19 @@ class ExpenseReport extends CommonObject
|
||||
$sql.= " WHERE rowid = ".$id;
|
||||
$result = $this->db->query($sql);
|
||||
if($result):
|
||||
$this->db->free($result);
|
||||
return 1;
|
||||
$this->db->free($result);
|
||||
return 1;
|
||||
else:
|
||||
$this->error=$this->db->error();
|
||||
dol_syslog('ExpenseReport::recalculer: Error '.$this->error,LOG_ERR);
|
||||
return -3;
|
||||
$this->error=$this->db->error();
|
||||
dol_syslog('ExpenseReport::recalculer: Error '.$this->error,LOG_ERR);
|
||||
return -3;
|
||||
endif;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->error();
|
||||
dol_syslog('ExpenseReport::recalculer: Error '.$this->error,LOG_ERR);
|
||||
return -3;
|
||||
$this->error=$this->db->error();
|
||||
dol_syslog('ExpenseReport::recalculer: Error '.$this->error,LOG_ERR);
|
||||
return -3;
|
||||
}
|
||||
}
|
||||
|
||||
@ -718,12 +718,12 @@ class ExpenseReport extends CommonObject
|
||||
}
|
||||
|
||||
/**
|
||||
* set_save
|
||||
* Set to status validate
|
||||
*
|
||||
* @param User $user User
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function set_save($user)
|
||||
function setValidate($user)
|
||||
{
|
||||
global $conf,$langs;
|
||||
|
||||
@ -752,8 +752,8 @@ class ExpenseReport extends CommonObject
|
||||
if ($this->fk_c_expensereport_statuts != 2)
|
||||
{
|
||||
$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element;
|
||||
$sql.= " SET ref = '".$this->ref."', fk_c_expensereport_statuts = 2";
|
||||
$sql.= " ,ref_number_int = $ref_number_int";
|
||||
$sql.= " SET ref = '".$this->ref."', fk_c_expensereport_statuts = 2, fk_user_valid = ".$user->id.",";
|
||||
$sql.= " ref_number_int = ".$ref_number_int;
|
||||
$sql.= ' WHERE rowid = '.$this->id;
|
||||
|
||||
dol_syslog(get_class($this)."::set_save sql=".$sql, LOG_DEBUG);
|
||||
@ -822,30 +822,30 @@ class ExpenseReport extends CommonObject
|
||||
}
|
||||
|
||||
/**
|
||||
* set_valide
|
||||
* Set status to approved
|
||||
*
|
||||
* @param User $user User
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function set_valide($user)
|
||||
function setApproved($user)
|
||||
{
|
||||
// date de validation
|
||||
$this->date_valide = $this->db->idate(gmmktime());
|
||||
if ($this->fk_c_expensereport_statuts != 5)
|
||||
{
|
||||
$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element;
|
||||
$sql.= " SET ref = '".$this->ref."', fk_c_expensereport_statuts = 5, fk_user_valid = ".$user->id;
|
||||
$sql.= ', date_valide='.$this->date_valide;
|
||||
$sql.= " SET ref = '".$this->ref."', fk_c_expensereport_statuts = 5, fk_user_approve = ".$user->id.",";
|
||||
$sql.= " date_valide='".$this->date_valide."'";
|
||||
$sql.= ' WHERE rowid = '.$this->id;
|
||||
|
||||
dol_syslog(get_class($this)."::set_valide sql=".$sql, LOG_DEBUG);
|
||||
|
||||
if ($this->db->query($sql)):
|
||||
if ($this->db->query($sql))
|
||||
{
|
||||
return 1;
|
||||
else:
|
||||
$this->error=$this->db->error();
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->lasterror();
|
||||
return -1;
|
||||
endif;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -861,24 +861,29 @@ class ExpenseReport extends CommonObject
|
||||
*/
|
||||
function set_refuse($user,$details)
|
||||
{
|
||||
$now = dol_now();
|
||||
|
||||
// date de refus
|
||||
$this->date_refuse = $this->db->idate(gmmktime());
|
||||
if ($this->fk_c_expensereport_statuts != 99)
|
||||
{
|
||||
$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element;
|
||||
$sql.= " SET ref = '".$this->ref."', fk_c_expensereport_statuts = 99, fk_user_refuse = ".$user->id;
|
||||
$sql.= ', date_refuse='.$this->date_refuse;
|
||||
$sql.= ", detail_refuse='".addslashes($details)."'";
|
||||
$sql.= " SET ref = '".$this->ref."', fk_c_expensereport_statuts = 99, fk_user_refuse = ".$user->id.",";
|
||||
$sql.= " date_refuse='".$this->db->idate($now)."',";
|
||||
$sql.= " detail_refuse='".$this->db->escape($details)."'";
|
||||
$sql.= ' WHERE rowid = '.$this->id;
|
||||
|
||||
dol_syslog(get_class($this)."::set_refuse sql=".$sql, LOG_DEBUG);
|
||||
|
||||
if ($this->db->query($sql)):
|
||||
if ($this->db->query($sql))
|
||||
{
|
||||
$this->fk_c_expensereport_statuts = 99;
|
||||
$this->fk_user_refuse = $user->id;
|
||||
$this->detail_refuse = $details;
|
||||
$this->date_refuse = $now;
|
||||
return 1;
|
||||
else:
|
||||
$this->error=$this->db->error();
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->lasterror();
|
||||
return -1;
|
||||
endif;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -887,22 +892,22 @@ class ExpenseReport extends CommonObject
|
||||
}
|
||||
|
||||
/**
|
||||
* set_paid
|
||||
* setPaid
|
||||
*
|
||||
* @param User $user User
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function set_paid($user)
|
||||
function setPaid($user)
|
||||
{
|
||||
$this->date_paiement = $this->db->idate(gmmktime());
|
||||
if ($this->fk_c_expensereport_statuts != 6)
|
||||
{
|
||||
$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element;
|
||||
$sql.= " SET fk_c_expensereport_statuts = 6, fk_user_paid = ".$user->id;
|
||||
$sql.= ', date_paiement='.$this->date_paiement;
|
||||
$sql.= " SET fk_c_expensereport_statuts = 6, fk_user_paid = ".$user->id.",";
|
||||
$sql.= " date_paiement='".$this->date_paiement."'";
|
||||
$sql.= ' WHERE rowid = '.$this->id;
|
||||
|
||||
dol_syslog(get_class($this)."::set_paid sql=".$sql, LOG_DEBUG);
|
||||
dol_syslog(get_class($this)."::setPaid sql=".$sql, LOG_DEBUG);
|
||||
|
||||
if ($this->db->query($sql))
|
||||
{
|
||||
@ -931,52 +936,21 @@ class ExpenseReport extends CommonObject
|
||||
if ($this->fk_c_deplacement_statuts != 5)
|
||||
{
|
||||
$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element;
|
||||
$sql.= " SET fk_c_deplacement_statuts = 5";
|
||||
$sql.= " SET fk_c_expensereport_statuts = 5";
|
||||
$sql.= ' WHERE rowid = '.$this->id;
|
||||
|
||||
dol_syslog(get_class($this)."::set_unpaid sql=".$sql, LOG_DEBUG);
|
||||
|
||||
if ($this->db->query($sql)):
|
||||
return 1;
|
||||
return 1;
|
||||
else:
|
||||
$this->error=$this->db->error();
|
||||
return -1;
|
||||
$this->error=$this->db->error();
|
||||
return -1;
|
||||
endif;
|
||||
}
|
||||
else
|
||||
{
|
||||
dol_syslog(get_class($this)."::set_unpaid deplacement already with unpaid status", LOG_WARNING);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* set_draft
|
||||
*
|
||||
* @param User $user User
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function set_draft($user)
|
||||
{
|
||||
if ($this->fk_c_deplacement_statuts != 1)
|
||||
{
|
||||
$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element;
|
||||
$sql.= " SET fk_c_deplacement_statuts = 1,";
|
||||
//$sql.= " , ref = '(PROV".$this->id.")', ref_number_int = 0";
|
||||
$sql.= " ref_number_int = 0";
|
||||
$sql.= ' WHERE rowid = '.$this->id;
|
||||
|
||||
dol_syslog(get_class($this)."::set_draft sql=".$sql, LOG_DEBUG);
|
||||
|
||||
if ($this->db->query($sql)) return 1;
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->error();
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dol_syslog(get_class($this)."::set_draft deplacement already with draft status", LOG_WARNING);
|
||||
dol_syslog(get_class($this)."::set_unpaid expensereport already with unpaid status", LOG_WARNING);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1026,7 +1000,7 @@ class ExpenseReport extends CommonObject
|
||||
{
|
||||
$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element;
|
||||
$sql.= " SET fk_c_expensereport_statuts = 4, fk_user_cancel = ".$user->id;
|
||||
$sql.= ', date_cancel='.$this->date_cancel;
|
||||
$sql.= ", date_cancel='".$this->date_cancel."'";
|
||||
$sql.= " ,detail_cancel='".$this->db->escape($detail)."'";
|
||||
$sql.= ' WHERE rowid = '.$this->id;
|
||||
|
||||
@ -1062,24 +1036,24 @@ class ExpenseReport extends CommonObject
|
||||
$result = $this->db->query($sql);
|
||||
|
||||
if($this->db->num_rows($result) > 0):
|
||||
$objp = $this->db->fetch_object($result);
|
||||
$this->ref = $objp->ref_number_int;
|
||||
$this->ref++;
|
||||
while(strlen($this->ref) < $num_car):
|
||||
$this->ref = "0".$this->ref;
|
||||
endwhile;
|
||||
$objp = $this->db->fetch_object($result);
|
||||
$this->ref = $objp->ref_number_int;
|
||||
$this->ref++;
|
||||
while(strlen($this->ref) < $num_car):
|
||||
$this->ref = "0".$this->ref;
|
||||
endwhile;
|
||||
else:
|
||||
$this->ref = 1;
|
||||
while(strlen($this->ref) < $num_car):
|
||||
$this->ref = "0".$this->ref;
|
||||
endwhile;
|
||||
$this->ref = 1;
|
||||
while(strlen($this->ref) < $num_car):
|
||||
$this->ref = "0".$this->ref;
|
||||
endwhile;
|
||||
endif;
|
||||
|
||||
if ($result):
|
||||
return 1;
|
||||
return 1;
|
||||
else:
|
||||
$this->error=$this->db->error();
|
||||
return -1;
|
||||
$this->error=$this->db->error();
|
||||
return -1;
|
||||
endif;
|
||||
}
|
||||
|
||||
@ -1123,10 +1097,10 @@ class ExpenseReport extends CommonObject
|
||||
|
||||
$result = $this->db->query($sql);
|
||||
if ($result):
|
||||
return 1;
|
||||
return 1;
|
||||
else:
|
||||
$this->error=$this->db->error();
|
||||
return -1;
|
||||
$this->error=$this->db->error();
|
||||
return -1;
|
||||
endif;
|
||||
}
|
||||
|
||||
@ -1143,10 +1117,10 @@ class ExpenseReport extends CommonObject
|
||||
|
||||
$result = $this->db->query($sql);
|
||||
if ($result):
|
||||
return 1;
|
||||
return 1;
|
||||
else:
|
||||
$this->error=$this->db->error();
|
||||
return -1;
|
||||
$this->error=$this->db->error();
|
||||
return -1;
|
||||
endif;
|
||||
}
|
||||
|
||||
@ -1214,12 +1188,12 @@ class ExpenseReport extends CommonObject
|
||||
|
||||
$result = $ligne->update();
|
||||
if ($result > 0):
|
||||
$this->db->commit();
|
||||
return 1;
|
||||
$this->db->commit();
|
||||
return 1;
|
||||
else:
|
||||
$this->error=$ligne->error;
|
||||
$this->db->rollback();
|
||||
return -2;
|
||||
$this->error=$ligne->error;
|
||||
$this->db->rollback();
|
||||
return -2;
|
||||
endif;
|
||||
|
||||
}
|
||||
@ -1467,7 +1441,7 @@ class ExpenseReportLine
|
||||
$sql.= " VALUES (".$this->fk_expensereport.",";
|
||||
$sql.= " ".$this->fk_c_type_fees.",";
|
||||
$sql.= " ".($this->fk_projet>0?$this->fk_projet:'null').",";
|
||||
$sql.= " ".$this->fk_c_tva.",";
|
||||
$sql.= " ".$this->vatrate.",";
|
||||
$sql.= " '".$this->db->escape($this->comments)."',";
|
||||
$sql.= " ".$this->qty.",";
|
||||
$sql.= " ".$this->value_unit.",";
|
||||
@ -1531,8 +1505,11 @@ class ExpenseReportLine
|
||||
$sql.= " comments='".$this->db->escape($this->comments)."'";
|
||||
$sql.= ",value_unit=".$this->value_unit."";
|
||||
$sql.= ",qty=".$this->qty."";
|
||||
if ($this->date) { $sql.= ",date='".$this->date."'"; }
|
||||
else { $sql.=',date=null'; }
|
||||
if ($this->date) {
|
||||
$sql.= ",date='".$this->date."'";
|
||||
}
|
||||
else { $sql.=',date=null';
|
||||
}
|
||||
$sql.= ",total_ht=".$this->total_ht."";
|
||||
$sql.= ",total_tva=".$this->total_tva."";
|
||||
$sql.= ",total_ttc=".$this->total_ttc."";
|
||||
@ -1587,9 +1564,9 @@ class ExpenseReportLine
|
||||
*/
|
||||
function select_expensereport_statut($selected='',$htmlname='fk_c_expensereport_statuts',$useempty=1)
|
||||
{
|
||||
global $db;
|
||||
global $db;
|
||||
|
||||
$tmpep=new ExpenseReport($db);
|
||||
$tmpep=new ExpenseReport($db);
|
||||
|
||||
print '<select class="flat" name="'.$htmlname.'">';
|
||||
if ($useempty) print '<option value="-1"> </option>';
|
||||
@ -1609,65 +1586,6 @@ function select_expensereport_statut($selected='',$htmlname='fk_c_expensereport_
|
||||
print '</select>';
|
||||
}
|
||||
|
||||
/**
|
||||
* select_projet
|
||||
* TODO Utiliser le select project officiel
|
||||
*
|
||||
* @param int $selected Id selected
|
||||
* @param string $filter Filter
|
||||
* @param string $htmlname Select name
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function select_projet($selected='',$filter='', $htmlname='fk_projet')
|
||||
{
|
||||
global $conf,$user,$langs,$db;
|
||||
|
||||
$out='';
|
||||
|
||||
$sql = "SELECT p.rowid, p.ref, p.title";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."projet as p";
|
||||
$sql.= " WHERE p.entity = ".$conf->entity;
|
||||
if (is_numeric($selected)) $sql.= " AND p.rowid = ".$selected;
|
||||
|
||||
dol_syslog("Form::select_projet sql=".$sql);
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
if ($conf->use_javascript_ajax && ! $forcecombo)
|
||||
{
|
||||
$minLength = (is_numeric($conf->global->COMPANY_USE_SEARCH_TO_SELECT)?$conf->global->COMPANY_USE_SEARCH_TO_SELECT:2);
|
||||
|
||||
$projetid = 0;
|
||||
|
||||
if ($selected)
|
||||
{
|
||||
$obj = $db->fetch_object($resql);
|
||||
$projetid = $obj->rowid?$obj->rowid:'';
|
||||
}
|
||||
|
||||
$out.= "\n".'<!-- Input text for third party with Ajax.Autocompleter (select_techno_ajax) -->'."\n";
|
||||
$out.= '<table class="nobordernopadding"><tr class="nocellnopadd">';
|
||||
$out.= '<td class="nobordernopadding">';
|
||||
if ($projetid == 0) {
|
||||
$out.= '<input type="text" size="30" id="search_'.$htmlname.'" name="search_'.$htmlname.'" value="" />';
|
||||
} else {
|
||||
$out.= '<input type="text" size="30" id="search_'.$htmlname.'" name="search_'.$htmlname.'" value="'.$obj->ref.' - '.$obj->title.'" />';
|
||||
}
|
||||
$out.= ajax_autocompleter(($projetid?$projetid:-1),$htmlname,dol_buildpath('/expensereport/ajax/ajaxprojet.php',1).'?filter='.urlencode($filter), '', $minLength);
|
||||
$out.= '</td>';
|
||||
$out.= '</tr>';
|
||||
$out.= '</table>';
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
dol_print_error($db);
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return list of types of notes with select value = id
|
||||
*
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
|
||||
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2005 Simon TOSSER <simon@kornog-computing.com>
|
||||
@ -25,10 +25,12 @@
|
||||
/**
|
||||
* \file htdocs/expensereport/document.php
|
||||
* \ingroup expensereport
|
||||
* \brief Page of linked files onto trip and expenses
|
||||
* \brief Page of linked files onto trip and expens reports
|
||||
*/
|
||||
|
||||
require '../main.inc.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/expensereport.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
|
||||
|
||||
@ -102,7 +104,7 @@ if ($object->id)
|
||||
|
||||
print '<table class="border" width="100%">';
|
||||
|
||||
$linkback = '<a href="'.DOL_URL_ROOT.'/compta/expensereport/list.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>';
|
||||
$linkback = '<a href="'.DOL_URL_ROOT.'/expensereport/list.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>';
|
||||
|
||||
// Ref
|
||||
print '<tr><td width="30%">'.$langs->trans("Ref").'</td><td>';
|
||||
|
||||
@ -41,6 +41,7 @@ CREATE TABLE llx_expensereport (
|
||||
note text,
|
||||
note_private text,
|
||||
fk_user_valid integer DEFAULT NULL,
|
||||
fk_user_approve integer DEFAULT NULL,
|
||||
fk_user_paid integer DEFAULT NULL,
|
||||
detail_refuse varchar(255) DEFAULT NULL,
|
||||
date_cancel datetime,
|
||||
|
||||
@ -21,7 +21,7 @@ CREATE TABLE llx_expensereport_det
|
||||
rowid integer NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
fk_expensereport integer NOT NULL,
|
||||
fk_c_type_fees integer NOT NULL,
|
||||
fk_projet integer NOT NULL,
|
||||
fk_projet integer,
|
||||
fk_c_tva integer NOT NULL,
|
||||
comments text NOT NULL,
|
||||
product_type integer DEFAULT -1,
|
||||
|
||||
@ -30,7 +30,7 @@ ExportDataset_fournisseur_2=Supplier invoices and payments
|
||||
ExportDataset_fournisseur_3=Supplier orders and order lines
|
||||
ApproveThisOrder=Approve this order
|
||||
ConfirmApproveThisOrder=Are you sure you want to approve order <b>%s</b> ?
|
||||
DenyingThisOrder=Denying this order
|
||||
DenyingThisOrder=Deny this order
|
||||
ConfirmDenyingThisOrder=Are you sure you want to deny this order <b>%s</b> ?
|
||||
ConfirmCancelThisOrder=Are you sure you want to cancel this order <b>%s</b> ?
|
||||
AddCustomerOrder=Create customer order
|
||||
|
||||
@ -37,71 +37,63 @@ TF_ESSENCE=Fuel
|
||||
TF_HOTEL=Hostel
|
||||
TF_TAXI=Taxi
|
||||
|
||||
ErrorDoubleDeclaration=ERREUR : Vous avez déclaré au moins une note de frais dans le même intervalle.
|
||||
ListTripsAndExpenses=Liste des notes de frais
|
||||
AucuneNDF=Il n'y a aucune note de frais déclarée correspondante à votre recherche!
|
||||
AucuneLigne=Il n'y a aucune ligne de déclarée dans cette note de frais!
|
||||
AddLine=Ajouter une ligne
|
||||
AddLineMini=Ajouter
|
||||
TotalHT=Montant HT
|
||||
TotalTTC=Montant TTC
|
||||
TotalTVA=Total TVA
|
||||
ErrorDoubleDeclaration=You have declared another expense report into a similar date range.
|
||||
ListTripsAndExpenses=List of expense reports
|
||||
AucuneNDF=No expense reports found for this criteria
|
||||
AucuneLigne=There is no expense report declared yet
|
||||
AddLine=Add a line
|
||||
AddLineMini=Add
|
||||
|
||||
Date_DEBUT=Date de début période
|
||||
Date_FIN=Date de fin période
|
||||
ModePaiement=Mode de paiement
|
||||
Date_DEBUT=Period date start
|
||||
Date_FIN=Period date end
|
||||
ModePaiement=Payment mode
|
||||
Note=Note
|
||||
Project=Projet
|
||||
Project=Project
|
||||
|
||||
VALIDATOR=Utilisateur informé pour validation
|
||||
VALIDOR=Validée par
|
||||
AUTHOR=Enregistrée par
|
||||
AUTHORPAIEMENT=Payée par
|
||||
REFUSEUR=Refusée par
|
||||
CANCEL_USER=Annulée par
|
||||
VALIDATOR=User to inform for approbation
|
||||
VALIDOR=Approved by
|
||||
AUTHOR=Recorded by
|
||||
AUTHORPAIEMENT=Paied by
|
||||
REFUSEUR=Denied by
|
||||
CANCEL_USER=Canceled by
|
||||
|
||||
MOTIF_REFUS=Motif de refus
|
||||
MOTIF_CANCEL=Motif d'annulation
|
||||
MOTIF_REFUS=Reason
|
||||
MOTIF_CANCEL=Reason
|
||||
|
||||
DATE_REFUS=Date du refus
|
||||
DATE_CANCEL=Date annulation
|
||||
DATE_VALIDE=Date de validation
|
||||
DATE_PAIEMENT=Date de paiement
|
||||
DATE_SAVE=Date d'enregistrement
|
||||
DATE_REFUS=Deny date
|
||||
DATE_CANCEL=Cancelation date
|
||||
DATE_VALIDE=Validation date
|
||||
DATE_PAIEMENT=Payment date
|
||||
DATE_SAVE=Recording date
|
||||
|
||||
REFUSE=Refuse
|
||||
Deny=Deny
|
||||
TO_PAID=Pay
|
||||
BROUILLONNER=Reopen
|
||||
SendToValid=Sent to approve
|
||||
ModifyInfoGen=Edit
|
||||
ValidateAndSubmit=Validate and submit for approval
|
||||
|
||||
NOT_VALIDATOR=Vous n'êtes pas la personne habilitée à valider cette note de frais!
|
||||
NOT_AUTHOR=Vous n'êtes pas l'auteur de cette note de frais, impossible de réaliser l'opération voulue!
|
||||
NOT_VALIDOR=Vous n'êtes pas le valideur de cette note de frais, vous ne pouvez donc pas réaliser cette opération!
|
||||
NotUserRightToView=Vous n'avez pas le droit d'afficher cette note de frais.
|
||||
NOT_VALIDATOR=You are not allowed to approve this expense report
|
||||
NOT_AUTHOR=You are not the author of this expense report. Operation cancelled.
|
||||
|
||||
RefuseTrip=Refuser une note de frais
|
||||
ConfirmRefuseTrip=Êtes vous sûr de vouloir refuser cette note de frais ?
|
||||
RefuseTrip=Deny an expense report
|
||||
ConfirmRefuseTrip=Are you sure you want to deny this expense report ?
|
||||
|
||||
ValideTrip=Valider une note de frais
|
||||
ConfirmValideTrip=Êtes vous sûr de vouloir valider cette note de frais ?
|
||||
ValideTrip=Approve expense report
|
||||
ConfirmValideTrip=Are you sure you want to approve this expense report ?
|
||||
|
||||
PaidTrip=Payer une note de frais
|
||||
ConfirmPaidTrip=Êtes vous sûr de vouloir payer cette note de frais ?
|
||||
PaidTrip=Pay an expense report
|
||||
ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ?
|
||||
|
||||
CancelTrip=Annuler une note de frais
|
||||
ConfirmCancelTrip=Êtes vous sûr de vouloir annuler cette note de frais ?
|
||||
CancelTrip=Cancel an expense report
|
||||
ConfirmCancelTrip=Are you sure you want to cancel this expense report ?
|
||||
|
||||
BrouillonnerTrip=Remettre une note de frais en brouillon
|
||||
ConfirmBrouillonnerTrip=Êtes vous sûr de vouloir remettre cette note de frais en brouillon ?
|
||||
BrouillonnerTrip=Move back expense report to status "Draft"n
|
||||
ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ?
|
||||
|
||||
SaveTrip=Enregistrement de votre note de frais
|
||||
ConfirmSaveTrip=Êtes vous sûr de vouloir enregistrer cette note de frais? (elle sera transmise par mail pour validation)
|
||||
SaveTrip=Validate expense report
|
||||
ConfirmSaveTrip=Are you sure you want to validate this expense report ?
|
||||
|
||||
INFOS_DATES=Infos Workflow
|
||||
INFOS_NDF=Infos générales note de frais
|
||||
|
||||
StatsTrip=Statistiques
|
||||
Synchro_Compta=NDF <-> Compte
|
||||
|
||||
TripSynch=Synchronisation : Notes de frais <-> Compte courant
|
||||
|
||||
@ -1,137 +0,0 @@
|
||||
# Dolibarr language file - fr_FR - trips
|
||||
CHARSET=UTF-8
|
||||
Trip=Note de frais
|
||||
Trips=Notes de frais
|
||||
TripsAndExpenses=Notes de frais
|
||||
TripId=Id note de frais
|
||||
TripCard=Fiche note de frais
|
||||
AddTrip=Ajouter note de frais
|
||||
ListOfTrips=Liste des notes de frais
|
||||
ListOfFees=Liste des notes de frais
|
||||
NewTrip=Nouvelle note de frais
|
||||
CancelAddTrip=Annuler
|
||||
ExportTripCSV=Exporter en CSV
|
||||
AnyOtherInThisListCanValidate=Toute personne dans la liste pourra valider. Le choix détermine qui sera informé.
|
||||
TripSociete=Informations société
|
||||
TripSalarie=Informations salarié
|
||||
TripNDF=Informations note de frais
|
||||
|
||||
DeleteTrip=Supprimer note de frais
|
||||
ConfirmDeleteTrip=Êtes vous sûr de vouloir supprimer cette note de frais ?
|
||||
|
||||
DeleteLine=Supprimer une ligne de la note de frais
|
||||
ConfirmDeleteLine=Êtes vous sûr de vouloir supprimer cette ligne ?
|
||||
|
||||
TF_OTHER=Autre
|
||||
TF_LUNCH=Repas
|
||||
TF_METRO=Métro
|
||||
TF_TRAIN=Train
|
||||
TF_RATP=Ratp
|
||||
TF_BUS=Bus
|
||||
TF_PEAGE=Péage
|
||||
TF_ESSENCE=Essence
|
||||
TF_SNCF=SNCF (Autre)
|
||||
TF_HOTEL=Hôtel
|
||||
TF_TRANSPORT=SNCF (Train)
|
||||
TF_TAXI=Taxi
|
||||
|
||||
ErrorDoubleDeclaration=ERREUR : Vous avez déclaré au moins une note de frais dans le même intervalle.
|
||||
ListTripsAndExpenses=Liste des notes de frais
|
||||
AucuneNDF=Il n'y a aucune note de frais déclarée correspondante à votre recherche!
|
||||
AucuneLigne=Il n'y a aucune ligne de déclarée dans cette note de frais!
|
||||
AddLine=Ajouter une ligne
|
||||
AddLineMini=Ajouter
|
||||
TotalHT=Montant HT
|
||||
TotalTTC=Montant TTC
|
||||
TotalTVA=Total TVA
|
||||
|
||||
Date_DEBUT=Date de début période
|
||||
Date_FIN=Date de fin période
|
||||
ModePaiement=Mode de paiement
|
||||
Note=Note
|
||||
Project=Projet
|
||||
|
||||
VALIDATOR=Utilisateur informé pour validation
|
||||
VALIDOR=Validée par
|
||||
AUTHOR=Enregistrée par
|
||||
AUTHORPAIEMENT=Payée par
|
||||
REFUSEUR=Refusée par
|
||||
CANCEL_USER=Annulée par
|
||||
|
||||
MOTIF_REFUS=Motif de refus
|
||||
MOTIF_CANCEL=Motif d'annulation
|
||||
|
||||
DATE_REFUS=Date du refus
|
||||
DATE_CANCEL=Date annulation
|
||||
DATE_VALIDE=Date de validation
|
||||
DATE_PAIEMENT=Date de paiement
|
||||
DATE_SAVE=Date d'enregistrement
|
||||
|
||||
VALIDATE=Valider
|
||||
REFUSE=Refuser
|
||||
CANCEL=Annuler
|
||||
TO_PAID=Payer
|
||||
BROUILLONNER=Remettre en brouillon
|
||||
SendToValid=Envoyer en validation
|
||||
ModifyInfoGen=Modifier les infos générales
|
||||
|
||||
Module20130304Name=Notes de frais
|
||||
Module20130304Desc=Gestion des notes de frais et déplacement (par ')
|
||||
|
||||
NOT_VALIDATOR=Vous n'êtes pas la personne habilitée à valider cette note de frais!
|
||||
NOT_AUTHOR=Vous n'êtes pas l'auteur de cette note de frais, impossible de réaliser l'opération voulue!
|
||||
NOT_VALIDOR=Vous n'êtes pas le valideur de cette note de frais, vous ne pouvez donc pas réaliser cette opération!
|
||||
NotUserRightToView=Vous n'avez pas le droit d'afficher cette note de frais.
|
||||
|
||||
RefuseTrip=Refuser une note de frais
|
||||
ConfirmRefuseTrip=Êtes vous sûr de vouloir refuser cette note de frais ?
|
||||
|
||||
ValideTrip=Valider une note de frais
|
||||
ConfirmValideTrip=Êtes vous sûr de vouloir valider cette note de frais ?
|
||||
|
||||
PaidTrip=Payer une note de frais
|
||||
ConfirmPaidTrip=Êtes vous sûr de vouloir payer cette note de frais ?
|
||||
|
||||
CancelTrip=Annuler une note de frais
|
||||
ConfirmCancelTrip=Êtes vous sûr de vouloir annuler cette note de frais ?
|
||||
|
||||
BrouillonnerTrip=Remettre une note de frais en brouillon
|
||||
ConfirmBrouillonnerTrip=Êtes vous sûr de vouloir remettre cette note de frais en brouillon ?
|
||||
|
||||
SaveTrip=Enregistrement de votre note de frais
|
||||
ConfirmSaveTrip=Êtes vous sûr de vouloir enregistrer cette note de frais? (elle sera transmise par mail pour validation)
|
||||
|
||||
INFOS_DATES=Infos Workflow
|
||||
INFOS_NDF=Infos générales note de frais
|
||||
|
||||
EURO=€
|
||||
PriceUNITAIRE=Prix U. (TTC)
|
||||
|
||||
StatsTrip=Statistiques
|
||||
Synchro_Compta=NDF <-> Compte
|
||||
|
||||
TripSynch=Synchronisation : Notes de frais <-> Compte courant
|
||||
TripToSynch=Notes de frais à intégrer dans la compta
|
||||
AucuneTripToSynch=Aucune note de frais n'est en statut "Payée".
|
||||
ViewAccountSynch=Voir le compte
|
||||
|
||||
ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant?
|
||||
ndfToAccount=Note de frais - Intégration
|
||||
|
||||
ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant?
|
||||
AccountToNdf=Note de frais - Retrait
|
||||
|
||||
USER_AUTHOR=Auteur
|
||||
PU=P.U.
|
||||
Q=Q
|
||||
|
||||
LINE_NOT_ADDED=Ligne non ajoutée :
|
||||
NO_PROJECT=Aucun projet sélectionné.
|
||||
NO_DATE=Aucune date sélectionnée.
|
||||
NO_PRICE=Aucun prix indiqué.
|
||||
|
||||
TripForValid=à Valider
|
||||
TripForPaid=à Payer
|
||||
TripPaid=Payée
|
||||
|
||||
NoTripsToExportCSV=Il n'y a pas de notes de frais à exporter pour cette période.
|
||||
@ -466,7 +466,7 @@ if ($action == 'create' && $user->rights->projet->creer)
|
||||
|
||||
// Budget
|
||||
print '<tr><td>'.$langs->trans("Budget").'</td>';
|
||||
print '<td><input size="4" type="text" name="budget_amount" value="'.(isset($_POST['budget_amount'])?price(GETPOST('budget_amount')):'').'"></td></tr>';
|
||||
print '<td><input size="4" type="text" name="budget_amount" value="'.(GETPOST('budget_amount')!=''?price(GETPOST('budget_amount')):'').'"></td></tr>';
|
||||
print '</td></tr>';
|
||||
|
||||
// Description
|
||||
|
||||
@ -126,7 +126,7 @@ class Project extends CommonObject
|
||||
$sql.= ", '".$this->db->idate($now)."'";
|
||||
$sql.= ", " . ($this->date_start != '' ? "'".$this->db->idate($this->date_start)."'" : 'null');
|
||||
$sql.= ", " . ($this->date_end != '' ? "'".$this->db->idate($this->date_end)."'" : 'null');
|
||||
$sql.= ", " . $this->budget_amount;
|
||||
$sql.= ", " . ($this->budget_amount != ''?price2num($this->budget_amount):'null');
|
||||
$sql.= ", ".$conf->entity;
|
||||
$sql.= ")";
|
||||
|
||||
@ -152,7 +152,7 @@ class Project extends CommonObject
|
||||
$error++;
|
||||
}
|
||||
|
||||
//Update extrafield
|
||||
// Update extrafield
|
||||
if (!$error) {
|
||||
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
||||
{
|
||||
@ -495,6 +495,23 @@ class Project extends CommonObject
|
||||
}
|
||||
}
|
||||
|
||||
// Set fk_projet into elements to null
|
||||
$listoftables=array(
|
||||
'facture'=>'fk_projet','propal'=>'fk_projet','commande'=>'fk_projet','facture_fourn'=>'fk_projet','commande_fournisseur'=>'fk_projet',
|
||||
'expensereport_det'=>'fk_projet','contrat'=>'fk_projet','fichinter'=>'fk_projet'
|
||||
);
|
||||
foreach($listoftables as $key => $value)
|
||||
{
|
||||
$sql = "UPDATE " . MAIN_DB_PREFIX . $key . " SET ".$value." = NULL where ".$value." = ". $this->id;
|
||||
$resql = $this->db->query($sql);
|
||||
if (!$resql)
|
||||
{
|
||||
$this->errors[] = $this->db->lasterror();
|
||||
$error++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Delete tasks
|
||||
if (! $error)
|
||||
{
|
||||
|
||||
@ -393,6 +393,9 @@ th .button {
|
||||
.centpercent {
|
||||
width: 100%;
|
||||
}
|
||||
textarea.centpercent {
|
||||
width: 96%;
|
||||
}
|
||||
.center {
|
||||
text-align: center;
|
||||
}
|
||||
@ -444,11 +447,17 @@ th .button {
|
||||
.hideobject { display: none; }
|
||||
.minwidth100 { min-width: 100px; }
|
||||
.minwidth200 { min-width: 200px; }
|
||||
.minwidth300 { min-width: 300px; }
|
||||
.maxwidth100 { max-width: 100px; }
|
||||
.maxwidth200 { max-width: 200px; }
|
||||
.maxwidth300 { max-width: 300px; }
|
||||
<?php if (! empty($dol_optimize_smallscreen)) { ?>
|
||||
.hideonsmartphone { display: none; }
|
||||
.noenlargeonsmartphone { width : 50px !important; display: inline !important; }
|
||||
.maxwidthonsmartphone { max-width: 100px; }
|
||||
.maxwidth100onsmartphone { max-width: 100px; }
|
||||
.maxwidth200onsmartphone { max-width: 200px; }
|
||||
.maxwidth300onsmartphone { max-width: 300px; }
|
||||
<?php } ?>
|
||||
.linkobject { cursor: pointer; }
|
||||
<?php if (GETPOST("optioncss") == 'print') { ?>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user