Work on expense report module
This commit is contained in:
parent
5dffe4b440
commit
30a5111c68
@ -128,7 +128,7 @@ else if ($action == 'add' && $user->rights->deplacement->creer)
|
||||
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Date")), 'errors');
|
||||
$error++;
|
||||
}
|
||||
if ($object->type == '-1') // Otherwise it is TF_LUNCH,...
|
||||
if ($object->type == '-1')
|
||||
{
|
||||
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Type")), 'errors');
|
||||
$error++;
|
||||
|
||||
@ -87,7 +87,7 @@ class FormProjets
|
||||
if ($resql)
|
||||
{
|
||||
$minmax='';
|
||||
|
||||
|
||||
// Use select2 selector
|
||||
$nodatarole='';
|
||||
if (! empty($conf->use_javascript_ajax))
|
||||
@ -219,6 +219,11 @@ class FormProjets
|
||||
$sql = "SELECT id as rowid, label as ref";
|
||||
$projectkey="fk_project";
|
||||
break;
|
||||
case "expensereport_det":
|
||||
return '';
|
||||
/*$sql = "SELECT rowid, '' as ref"; // table is llx_expensereport_det
|
||||
$projectkey="fk_projet";
|
||||
break;*/
|
||||
default:
|
||||
$sql = "SELECT rowid, ref";
|
||||
break;
|
||||
@ -226,10 +231,8 @@ class FormProjets
|
||||
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX.$table_element;
|
||||
$sql.= " WHERE ".$projectkey." is null";
|
||||
if (!empty($socid)) {
|
||||
$sql.= " AND fk_soc=".$socid;
|
||||
}
|
||||
$sql.= ' AND entity='.getEntity('project');
|
||||
if (!empty($socid)) $sql.= " AND fk_soc=".$socid;
|
||||
if (! in_array($table_element, array('expensereport_det'))) $sql.= ' AND entity='.getEntity('project');
|
||||
$sql.= " ORDER BY ref DESC";
|
||||
|
||||
dol_syslog(get_class($this).'::select_element', LOG_DEBUG);
|
||||
@ -260,9 +263,12 @@ class FormProjets
|
||||
}*/
|
||||
$this->db->free($resql);
|
||||
|
||||
return $sellist ;
|
||||
}else {
|
||||
return $sellist;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->lasterror();
|
||||
$this->errors[]=$this->db->lasterror();
|
||||
dol_syslog(get_class($this) . "::select_element " . $this->error, LOG_ERR);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -224,8 +224,8 @@ class modExpenseReport extends DolibarrModules
|
||||
'url'=>'/expensereport/index.php',
|
||||
'langs'=>'trips', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||
'position'=>100,
|
||||
'enabled'=>'1', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled.
|
||||
'perms'=>'1', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
||||
'enabled'=>'$conf->expensereport->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled.
|
||||
'perms'=>'$user->rights->expensereport->lire', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
||||
'target'=>'',
|
||||
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
||||
$r++;
|
||||
@ -234,12 +234,12 @@ class modExpenseReport extends DolibarrModules
|
||||
'type'=>'left', // This is a Left menu entry
|
||||
'titre'=>'New',
|
||||
'mainmenu'=>'accountancy',
|
||||
'leftmenu'=>'expensereport_detail',
|
||||
'leftmenu'=>'expensereport_detailnew',
|
||||
'url'=>'/expensereport/card.php?action=create',
|
||||
'langs'=>'trips', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||
'position'=>100,
|
||||
'enabled'=>'1', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled.
|
||||
'perms'=>'1', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
||||
'enabled'=>'$conf->expensereport->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled.
|
||||
'perms'=>'$user->rights->expensereport->creer', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
||||
'target'=>'',
|
||||
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
||||
$r++;
|
||||
@ -248,12 +248,26 @@ class modExpenseReport extends DolibarrModules
|
||||
'type'=>'left', // This is a Left menu entry
|
||||
'titre'=>'List',
|
||||
'mainmenu'=>'accountancy',
|
||||
'leftmenu'=>'expensereport_detail',
|
||||
'leftmenu'=>'expensereport_detaillist',
|
||||
'url'=>'/expensereport/list.php',
|
||||
'langs'=>'trips', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||
'position'=>100,
|
||||
'enabled'=>'1', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled.
|
||||
'perms'=>'1', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
||||
'enabled'=>'$conf->expensereport->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled.
|
||||
'perms'=>'$user->rights->expensereport->lire', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
||||
'target'=>'',
|
||||
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
||||
$r++;
|
||||
|
||||
$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=accountancy,fk_leftmenu=expensereport_detaillist', // Use r=value where r is index key used for the parent menu entry (higher parent must be a top menu entry)
|
||||
'type'=>'left', // This is a Left menu entry
|
||||
'titre'=>'ListToApprove',
|
||||
'mainmenu'=>'accountancy',
|
||||
'leftmenu'=>'expensereport_detaillist_approve',
|
||||
'url'=>'/expensereport/list.php?search_state=2',
|
||||
'langs'=>'trips', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||
'position'=>100,
|
||||
'enabled'=>'$conf->expensereport->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled.
|
||||
'perms'=>'$user->rights->expensereport->lire', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
||||
'target'=>'',
|
||||
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
||||
$r++;
|
||||
@ -266,13 +280,14 @@ class modExpenseReport extends DolibarrModules
|
||||
'url'=>'/expensereport/stats/index.php',
|
||||
'langs'=>'trips', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||
'position'=>100,
|
||||
'enabled'=>'1', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled.
|
||||
'perms'=>'1', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
||||
'enabled'=>'$conf->expensereport->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled.
|
||||
'perms'=>'$user->rights->expensereport->lire', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
||||
'target'=>'',
|
||||
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
||||
$r++;
|
||||
|
||||
|
||||
// Disabled, not yet stable
|
||||
$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=accountancy,fk_leftmenu=expensereport', // Use r=value where r is index key used for the parent menu entry (higher parent must be a top menu entry)
|
||||
'type'=>'left', // This is a Left menu entry
|
||||
'titre'=>'ExportTripCSV',
|
||||
@ -282,7 +297,7 @@ class modExpenseReport extends DolibarrModules
|
||||
'langs'=>'expensereport', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||
'position'=>100,
|
||||
'enabled'=>'$conf->global->DEPLACEMENT_TO_CLEAN', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled.
|
||||
'perms'=>'1', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
||||
'perms'=>'$user->rights->expensereport->lire', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
||||
'target'=>'',
|
||||
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
||||
$r++;
|
||||
@ -296,7 +311,7 @@ class modExpenseReport extends DolibarrModules
|
||||
'langs'=>'expensereport', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||
'position'=>100,
|
||||
'enabled'=>'$conf->global->DEPLACEMENT_TO_CLEAN', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled.
|
||||
'perms'=>'1', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
||||
'perms'=>'$user->rights->expensereport->lire', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
||||
'target'=>'',
|
||||
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
||||
$r++;
|
||||
|
||||
@ -105,7 +105,7 @@ if ($action == 'add' && $user->rights->expensereport->creer)
|
||||
$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')))
|
||||
if ($object->periode_existe($user,$object->date_debut,$object->date_fin))
|
||||
{
|
||||
$error++;
|
||||
setEventMessage($langs->trans("ErrorDoubleDeclaration"),'errors');
|
||||
@ -398,8 +398,8 @@ if ($action == "confirm_refuse" && GETPOST('confirm')=="yes" && $id > 0 && $user
|
||||
{
|
||||
$object = new ExpenseReport($db);
|
||||
$object->fetch($id);
|
||||
|
||||
$result = $object->set_refuse($user,GETPOST('detail_refuse'));
|
||||
|
||||
$result = $object->setDeny($user,GETPOST('detail_refuse'));
|
||||
if ($result > 0)
|
||||
{
|
||||
if (! empty($conf->global->DEPLACEMENT_TO_CLEAN))
|
||||
@ -456,34 +456,34 @@ if ($action == "confirm_refuse" && GETPOST('confirm')=="yes" && $id > 0 && $user
|
||||
}
|
||||
|
||||
//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)
|
||||
if ($action == "confirm_cancel" && GETPOST('confirm')=="yes" && GETPOST('detail_cancel') && $id > 0 && $user->rights->expensereport->creer)
|
||||
{
|
||||
$object = new ExpenseReport($db);
|
||||
$object->fetch($id);
|
||||
|
||||
|
||||
if ($user->id == $object->fk_user_valid || $user->id == $object->fk_user_author)
|
||||
{
|
||||
$result = $object->set_cancel($user,$_POST['detail_cancel']);
|
||||
|
||||
$result = $object->set_cancel($user,GETPOST('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";
|
||||
@ -491,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
|
||||
@ -523,10 +523,10 @@ if ($action == "confirm_cancel" && GETPOST('confirm')=="yes" && !empty($_POST['d
|
||||
}
|
||||
}
|
||||
|
||||
if ($action == "confirm_paid" && $_GET['confirm']=="yes" && $id > 0 && $user->rights->expensereport->to_paid)
|
||||
if ($action == "confirm_paid" && GETPOST('confirm')=="yes" && $id > 0 && $user->rights->expensereport->to_paid)
|
||||
{
|
||||
$object = new ExpenseReport($db);
|
||||
$object->fetch($id,$user);
|
||||
$object->fetch($id);
|
||||
|
||||
$result = $object->setPaid($user);
|
||||
if ($result > 0)
|
||||
@ -665,7 +665,7 @@ if ($action == "addline")
|
||||
$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)
|
||||
@ -1129,22 +1129,24 @@ else
|
||||
if ($ret == 'html') print '<br>';
|
||||
endif;
|
||||
|
||||
if ($action == 'cancel'):
|
||||
$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;
|
||||
if ($action == 'cancel')
|
||||
{
|
||||
$array_input = array('text'=>$langs->trans("ConfirmCancelTrip"), array('type'=>"text",'label'=>$langs->trans("Comment"),'name'=>"detail_cancel",'size'=>"50",'value'=>""));
|
||||
$ret=$form->form_confirm($_SEVER["PHP_SELF"]."?id=".$id,$langs->trans("Cancel"),"","confirm_cancel",$array_input,"",1);
|
||||
if ($ret == 'html') print '<br>';
|
||||
}
|
||||
|
||||
if ($action == 'brouillonner'):
|
||||
$ret=$form->form_confirm($_SEVER["PHP_SELF"]."?id=".$id,$langs->trans("BrouillonnerTrip"),$langs->trans("ConfirmBrouillonnerTrip"),"confirm_brouillonner","","",1);
|
||||
if ($ret == 'html') print '<br>';
|
||||
endif;
|
||||
|
||||
if ($action == 'refuse'):
|
||||
$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 == 'refuse') // Deny
|
||||
{
|
||||
$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>';
|
||||
}
|
||||
|
||||
if ($action == 'delete_line')
|
||||
{
|
||||
@ -1211,7 +1213,7 @@ else
|
||||
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("DATE_SAVE").'</td>';
|
||||
print '<td>'.$object->date_create.'</td></tr>';
|
||||
print '<td>'.dol_print_date($object->date_create,'dayhour').'</td></tr>';
|
||||
print '</tr>';
|
||||
if($object->fk_c_expensereport_statuts==6)
|
||||
{
|
||||
@ -1227,8 +1229,8 @@ else
|
||||
print '<td>'.$object->date_paiement.'</td></tr>';
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
if($object->fk_c_expensereport_statuts<3)
|
||||
|
||||
if($object->fk_c_expensereport_statuts<3) // informed
|
||||
{
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("VALIDATOR").'</td>';
|
||||
@ -1259,24 +1261,24 @@ else
|
||||
print '</tr>';
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("DATE_CANCEL").'</td>';
|
||||
print '<td>'.$object->date_cancel.'</td></tr>';
|
||||
print '<td>'.dol_print_date($object->date_cancel,'dayhour').'</td></tr>';
|
||||
print '</tr>';
|
||||
}
|
||||
else
|
||||
{
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("VALIDOR").'</td>';
|
||||
print '<td>'.$langs->trans("Approbator").'</td>';
|
||||
print '<td>';
|
||||
if ($object->fk_user_valid > 0)
|
||||
if ($object->fk_user_approve > 0)
|
||||
{
|
||||
$userfee=new User($db);
|
||||
$userfee->fetch($object->fk_user_valid);
|
||||
print $userfee->getNomUrl(1);
|
||||
$userapp=new User($db);
|
||||
$userapp->fetch($object->fk_user_approve);
|
||||
print $userapp->getNomUrl(1);
|
||||
}
|
||||
print '</td></tr>';
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("DATE_VALIDE").'</td>';
|
||||
print '<td>'.$object->date_valide.'</td></tr>';
|
||||
print '<td>'.$langs->trans("DateApprove").'</td>';
|
||||
print '<td>'.dol_print_date($object->date_approve,'dayhour').'</td></tr>';
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
@ -1291,7 +1293,7 @@ else
|
||||
print '</td></tr>';
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("DATE_REFUS").'</td>';
|
||||
print '<td>'.$object->date_refuse;
|
||||
print '<td>'.dol_print_date($object->date_refuse,'dayhour');
|
||||
if ($object->detail_refuse) print ' - '.$object->detail_refuse;
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
@ -1398,7 +1400,7 @@ else
|
||||
}
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
|
||||
if ($action == 'editline' && $objp->rowid == GETPOST('rowid'))
|
||||
{
|
||||
//modif ligne!!!!!
|
||||
@ -1681,7 +1683,7 @@ if ($action != 'create' && $action != 'edit')
|
||||
{
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$id.'">'.$langs->trans('Cancel').'</a>';
|
||||
}
|
||||
|
||||
|
||||
if($user->rights->expensereport->supprimer)
|
||||
{
|
||||
// Supprimer
|
||||
|
||||
@ -54,10 +54,14 @@ class ExpenseReport extends CommonObject
|
||||
var $fk_user_cancel;
|
||||
|
||||
// Validation
|
||||
var $date_valide;
|
||||
var $date_valid;
|
||||
var $fk_user_valid;
|
||||
var $user_valid_infos;
|
||||
|
||||
// Approve
|
||||
var $date_approve;
|
||||
var $fk_user_approve;
|
||||
|
||||
// Paiement
|
||||
var $date_paiement;
|
||||
var $fk_user_paid;
|
||||
@ -257,9 +261,9 @@ class ExpenseReport extends CommonObject
|
||||
$sql.= " d.detail_refuse, d.detail_cancel, d.fk_user_refuse, d.fk_user_cancel,"; // ACTIONS
|
||||
$sql.= " d.date_refuse, d.date_cancel,"; // ACTIONS
|
||||
$sql.= " d.total_ht, d.total_ttc, d.total_tva,"; // TOTAUX (int)
|
||||
$sql.= " d.date_debut, d.date_fin, d.date_create, d.date_valide, d.date_paiement,"; // DATES (datetime)
|
||||
$sql.= " d.date_debut, d.date_fin, d.date_create, d.date_valid, d.date_approve, d.date_paiement,"; // DATES (datetime)
|
||||
$sql.= " d.fk_user_author, d.fk_user_validator, d.fk_c_expensereport_statuts as status, d.fk_c_paiement,";
|
||||
$sql.= " d.fk_user_valid, d.fk_user_paid,"; // FOREING KEY 2 (int)
|
||||
$sql.= " d.fk_user_valid, d.fk_user_approve, d.fk_user_paid,";
|
||||
$sql.= " dp.libelle as libelle_paiement, dp.code as code_paiement"; // INNER JOIN paiement
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element." d LEFT JOIN ".MAIN_DB_PREFIX."c_paiement dp ON d.fk_c_paiement = dp.id";
|
||||
if ($ref) $sql.= " WHERE d.ref = '".$this->db->escape($ref)."'";
|
||||
@ -282,20 +286,22 @@ class ExpenseReport extends CommonObject
|
||||
$this->detail_refuse = $obj->detail_refuse;
|
||||
$this->detail_cancel = $obj->detail_cancel;
|
||||
|
||||
$this->date_debut = $obj->date_debut;
|
||||
$this->date_fin = $obj->date_fin;
|
||||
$this->date_paiement = $obj->date_paiement;
|
||||
$this->date_valide = $obj->date_valide;
|
||||
$this->date_create = $obj->date_create;
|
||||
$this->date_refuse = $obj->date_refuse;
|
||||
$this->date_cancel = $obj->date_cancel;
|
||||
$this->date_debut = $this->db->jdate($obj->date_debut);
|
||||
$this->date_fin = $this->db->jdate($obj->date_fin);
|
||||
$this->date_paiement = $this->db->jdate($obj->date_paiement);
|
||||
$this->date_valid = $this->db->jdate($obj->date_valid);
|
||||
$this->date_approve = $this->db->jdate($obj->date_approve);
|
||||
$this->date_create = $this->db->jdate($obj->date_create);
|
||||
$this->date_refuse = $this->db->jdate($obj->date_refuse);
|
||||
$this->date_cancel = $this->db->jdate($obj->date_cancel);
|
||||
|
||||
$this->fk_user_author = $obj->fk_user_author;
|
||||
$this->fk_user_validator = $obj->fk_user_validator;
|
||||
$this->fk_user_valid = $obj->fk_user_valid;
|
||||
$this->fk_user_paid = $obj->fk_user_paid;
|
||||
$this->fk_user_refuse = $obj->fk_user_refuse;
|
||||
$this->fk_user_cancel = $obj->fk_user_cancel;
|
||||
$this->fk_user_approve = $obj->fk_user_approve;
|
||||
$this->fk_user_paid = $obj->fk_user_paid;
|
||||
|
||||
$user_author = new User($this->db);
|
||||
if ($this->fk_user_author > 0) $user_author->fetch($this->fk_user_author);
|
||||
@ -404,10 +410,12 @@ class ExpenseReport extends CommonObject
|
||||
$sql = "SELECT f.rowid,";
|
||||
$sql.= " f.date_create as datec,";
|
||||
$sql.= " f.tms as date_modification,";
|
||||
$sql.= " f.date_valide as datev,";
|
||||
$sql.= " f.fk_user_author,";
|
||||
$sql.= " f.date_valid as datev,";
|
||||
$sql.= " f.date_approve as datea,";
|
||||
$sql.= " f.fk_user_author as fk_user_creation,";
|
||||
$sql.= " f.fk_user_modif as fk_user_modification,";
|
||||
$sql.= " f.fk_user_validator";
|
||||
$sql.= " f.fk_user_valid,";
|
||||
$sql.= " f.fk_user_approve";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."expensereport as f";
|
||||
$sql.= " WHERE f.rowid = ".$id;
|
||||
$sql.= " AND f.entity = ".$conf->entity;
|
||||
@ -424,11 +432,18 @@ class ExpenseReport extends CommonObject
|
||||
$this->date_creation = $this->db->jdate($obj->datec);
|
||||
$this->date_modification = $this->db->jdate($obj->date_modification);
|
||||
$this->date_validation = $this->db->jdate($obj->datev);
|
||||
$this->date_approbation = $this->db->jdate($obj->datea);
|
||||
|
||||
$cuser = new User($this->db);
|
||||
$cuser->fetch($obj->fk_user_author);
|
||||
$this->user_creation = $cuser;
|
||||
|
||||
if ($obj->fk_user_creation)
|
||||
{
|
||||
$cuser = new User($this->db);
|
||||
$cuser->fetch($obj->fk_user_creation);
|
||||
$this->user_creation = $cuser;
|
||||
}
|
||||
if ($obj->fk_user_valid)
|
||||
{
|
||||
$vuser = new User($this->db);
|
||||
@ -739,14 +754,14 @@ class ExpenseReport extends CommonObject
|
||||
$sql.= ' WHERE rowid = '.$this->id;
|
||||
$result = $this->db->query($sql);
|
||||
$objp = $this->db->fetch_object($result);
|
||||
$this->date_debut = $objp->date_debut;
|
||||
$expld_date_debut = explode("-",$this->date_debut);
|
||||
$this->date_debut = $expld_date_debut[0].$expld_date_debut[1].$expld_date_debut[2];
|
||||
$this->date_debut = $this->db->jdate($objp->date_debut);
|
||||
|
||||
// Création du ref_number suivant
|
||||
if($ref_next)
|
||||
{
|
||||
$this->ref = strtoupper($user->login).$expld_car."NDF".$this->ref.$expld_car.$this->date_debut;
|
||||
$prefix="ER";
|
||||
if (! empty($conf->global->EXPENSE_REPORT_PREFIX)) $prefix=$conf->global->EXPENSE_REPORT_PREFIX;
|
||||
$this->ref = strtoupper($user->login).$expld_car.$prefix.$this->ref.$expld_car.dol_print_date($this->date_debut,'%y%m%d');
|
||||
}
|
||||
|
||||
if ($this->fk_c_expensereport_statuts != 2)
|
||||
@ -793,9 +808,7 @@ class ExpenseReport extends CommonObject
|
||||
|
||||
$objp = $this->db->fetch_object($result);
|
||||
|
||||
$this->date_debut = $objp->date_debut;
|
||||
$expld_date_debut = explode("-",$this->date_debut);
|
||||
$this->date_debut = $expld_date_debut[0].$expld_date_debut[1].$expld_date_debut[2];
|
||||
$this->date_debut = $this->db->jdate($objp->date_debut);
|
||||
|
||||
if ($this->fk_c_expensereport_statuts != 2)
|
||||
{
|
||||
@ -829,13 +842,15 @@ class ExpenseReport extends CommonObject
|
||||
*/
|
||||
function setApproved($user)
|
||||
{
|
||||
// date de validation
|
||||
$this->date_valide = $this->db->idate(gmmktime());
|
||||
$now=dol_now();
|
||||
|
||||
// date approval
|
||||
$this->date_approve = $this->db->idate($now);
|
||||
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_approve = ".$user->id.",";
|
||||
$sql.= " date_valide='".$this->date_valide."'";
|
||||
$sql.= " date_approve='".$this->date_approve."'";
|
||||
$sql.= ' WHERE rowid = '.$this->id;
|
||||
if ($this->db->query($sql))
|
||||
{
|
||||
@ -854,15 +869,15 @@ class ExpenseReport extends CommonObject
|
||||
}
|
||||
|
||||
/**
|
||||
* set_refuse
|
||||
* setDeny
|
||||
*
|
||||
* @param User $user User
|
||||
* @param Details $details Details
|
||||
*/
|
||||
function set_refuse($user,$details)
|
||||
function setDeny($user,$details)
|
||||
{
|
||||
$now = dol_now();
|
||||
|
||||
|
||||
// date de refus
|
||||
if ($this->fk_c_expensereport_statuts != 99)
|
||||
{
|
||||
@ -870,6 +885,7 @@ class ExpenseReport extends CommonObject
|
||||
$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.= " fk_user_approve=NULL,";
|
||||
$sql.= ' WHERE rowid = '.$this->id;
|
||||
if ($this->db->query($sql))
|
||||
{
|
||||
@ -887,7 +903,7 @@ class ExpenseReport extends CommonObject
|
||||
}
|
||||
else
|
||||
{
|
||||
dol_syslog(get_class($this)."::set_refuse expensereport already with refuse status", LOG_WARNING);
|
||||
dol_syslog(get_class($this)."::setDeny expensereport already with refuse status", LOG_WARNING);
|
||||
}
|
||||
}
|
||||
|
||||
@ -899,16 +915,17 @@ class ExpenseReport extends CommonObject
|
||||
*/
|
||||
function setPaid($user)
|
||||
{
|
||||
$this->date_paiement = $this->db->idate(gmmktime());
|
||||
$now= dol_now();
|
||||
|
||||
$this->date_paiement = $this->db->idate($now);
|
||||
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.= " date_paiement='".$this->db->idate($this->date_paiement)."'";
|
||||
$sql.= ' WHERE rowid = '.$this->id;
|
||||
|
||||
dol_syslog(get_class($this)."::setPaid sql=".$sql, LOG_DEBUG);
|
||||
|
||||
if ($this->db->query($sql))
|
||||
{
|
||||
return 1;
|
||||
@ -1236,9 +1253,9 @@ class ExpenseReport extends CommonObject
|
||||
* @param Date $date_fin End date
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function periode_existe($user,$date_debut,$date_fin)
|
||||
function periode_existe($user, $date_debut, $date_fin)
|
||||
{
|
||||
$sql = "SELECT rowid,date_debut,date_fin";
|
||||
$sql = "SELECT rowid, date_debut, date_fin";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element;
|
||||
$sql.= " WHERE fk_user_author = '{$user->id}'";
|
||||
|
||||
@ -1250,10 +1267,8 @@ class ExpenseReport extends CommonObject
|
||||
|
||||
if ($num_lignes>0)
|
||||
{
|
||||
$date_d_form = explode("-",$date_debut); // 1
|
||||
$date_f_form = explode("-",$date_fin); // 2
|
||||
$date_d_form = mktime(12,0,0,$date_d_form[1],$date_d_form[2],$date_d_form[0]);
|
||||
$date_f_form = mktime(12,0,0,$date_f_form[1],$date_f_form[2],$date_f_form[0]);
|
||||
$date_d_form = $date_debut;
|
||||
$date_f_form = $date_fin;
|
||||
|
||||
$existe = false;
|
||||
|
||||
@ -1261,12 +1276,10 @@ class ExpenseReport extends CommonObject
|
||||
{
|
||||
$objp = $this->db->fetch_object($result);
|
||||
|
||||
$date_d_req = explode("-",$objp->date_debut); // 3
|
||||
$date_f_req = explode("-",$objp->date_fin); // 4
|
||||
$date_d_req = mktime(12,0,0,$date_d_req[1],$date_d_req[2],$date_d_req[0]);
|
||||
$date_f_req = mktime(12,0,0,$date_f_req[1],$date_f_req[2],$date_f_req[0]);
|
||||
$date_d_req = $this->db->jdate($objp->date_debut); // 3
|
||||
$date_f_req = $this->db->jdate($objp->date_fin); // 4
|
||||
|
||||
if(!($date_f_form < $date_d_req OR $date_d_form > $date_f_req)) $existe = true;
|
||||
if (!($date_f_form < $date_d_req || $date_d_form > $date_f_req)) $existe = true;
|
||||
|
||||
$i++;
|
||||
}
|
||||
@ -1374,14 +1387,12 @@ class ExpenseReportLine
|
||||
function fetch($rowid)
|
||||
{
|
||||
$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 tva_taux, 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.= ' tva.rowid as tva_id, tva.taux as tva_taux';
|
||||
$sql.= ' pjt.rowid as projet_id, pjt.title as projet_title, pjt.ref as projet_ref';
|
||||
$sql.= ' FROM '.MAIN_DB_PREFIX.'expensereport_det fde';
|
||||
$sql.= ' INNER JOIN '.MAIN_DB_PREFIX.'c_type_fees ctf ON fde.fk_c_type_fees=ctf.id';
|
||||
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'projet pjt ON fde.fk_projet=pjt.rowid';
|
||||
$sql.= ' INNER JOIN '.MAIN_DB_PREFIX.'c_tva tva ON fde.fk_c_tva=tva.rowid';
|
||||
$sql.= ' WHERE fde.rowid = '.$rowid;
|
||||
|
||||
$result = $this->db->query($sql);
|
||||
|
||||
@ -59,7 +59,7 @@ class ExpenseReportStats extends Stats
|
||||
$this->from = MAIN_DB_PREFIX.$object->table_element;
|
||||
$this->field='total_ht';
|
||||
|
||||
$this->where = " fk_c_expensereport_statuts > 0 and date_valide > '2000-01-01'";
|
||||
$this->where = " fk_c_expensereport_statuts > 0 and date_valid > '2000-01-01'";
|
||||
//$this->where.= " AND entity = ".$conf->entity;
|
||||
if ($this->socid)
|
||||
{
|
||||
@ -70,13 +70,13 @@ class ExpenseReportStats extends Stats
|
||||
|
||||
|
||||
/**
|
||||
* Renvoie le nombre de facture par annee
|
||||
* Return nb of expense report per year
|
||||
*
|
||||
* @return array Array of values
|
||||
*/
|
||||
function getNbByYear()
|
||||
{
|
||||
$sql = "SELECT YEAR(date_valide) as dm, count(*)";
|
||||
$sql = "SELECT YEAR(date_valid) as dm, count(*)";
|
||||
$sql.= " FROM ".$this->from;
|
||||
$sql.= " GROUP BY dm DESC";
|
||||
$sql.= " WHERE ".$this->where;
|
||||
@ -93,9 +93,9 @@ class ExpenseReportStats extends Stats
|
||||
*/
|
||||
function getNbByMonth($year)
|
||||
{
|
||||
$sql = "SELECT MONTH(date_valide) as dm, count(*)";
|
||||
$sql = "SELECT MONTH(date_valid) as dm, count(*)";
|
||||
$sql.= " FROM ".$this->from;
|
||||
$sql.= " WHERE YEAR(date_valide) = ".$year;
|
||||
$sql.= " WHERE YEAR(date_valid) = ".$year;
|
||||
$sql.= " AND ".$this->where;
|
||||
$sql.= " GROUP BY dm";
|
||||
$sql.= $this->db->order('dm','DESC');
|
||||
@ -114,9 +114,9 @@ class ExpenseReportStats extends Stats
|
||||
*/
|
||||
function getAmountByMonth($year)
|
||||
{
|
||||
$sql = "SELECT date_format(date_valide,'%m') as dm, sum(".$this->field.")";
|
||||
$sql = "SELECT date_format(date_valid,'%m') as dm, sum(".$this->field.")";
|
||||
$sql.= " FROM ".$this->from;
|
||||
$sql.= " WHERE date_format(date_valide,'%Y') = '".$year."'";
|
||||
$sql.= " WHERE date_format(date_valid,'%Y') = '".$year."'";
|
||||
$sql.= " AND ".$this->where;
|
||||
$sql.= " GROUP BY dm";
|
||||
$sql.= $this->db->order('dm','DESC');
|
||||
@ -134,9 +134,9 @@ class ExpenseReportStats extends Stats
|
||||
*/
|
||||
function getAverageByMonth($year)
|
||||
{
|
||||
$sql = "SELECT date_format(date_valide,'%m') as dm, avg(".$this->field.")";
|
||||
$sql = "SELECT date_format(date_valid,'%m') as dm, avg(".$this->field.")";
|
||||
$sql.= " FROM ".$this->from;
|
||||
$sql.= " WHERE date_format(date_valide,'%Y') = '".$year."'";
|
||||
$sql.= " WHERE date_format(date_valid,'%Y') = '".$year."'";
|
||||
$sql.= " AND ".$this->where;
|
||||
$sql.= " GROUP BY dm";
|
||||
$sql.= $this->db->order('dm','DESC');
|
||||
@ -151,7 +151,7 @@ class ExpenseReportStats extends Stats
|
||||
*/
|
||||
function getAllByYear()
|
||||
{
|
||||
$sql = "SELECT date_format(date_valide,'%Y') as year, count(*) as nb, sum(".$this->field.") as total, avg(".$this->field.") as avg";
|
||||
$sql = "SELECT date_format(date_valid,'%Y') as year, count(*) as nb, sum(".$this->field.") as total, avg(".$this->field.") as avg";
|
||||
$sql.= " FROM ".$this->from;
|
||||
$sql.= " WHERE ".$this->where;
|
||||
$sql.= " GROUP BY year";
|
||||
|
||||
@ -137,12 +137,12 @@ else:
|
||||
print ' <input type="submit" class="button" value="'.$langs->trans("ViewAccountSynch").'">';
|
||||
print "</form>";
|
||||
|
||||
$sql = "SELECT d.fk_bank_account, d.ref, d.rowid, d.date_valide, d.fk_user_author, d.total_ttc, d.integration_compta, d.fk_c_expensereport_statuts";
|
||||
$sql = "SELECT d.fk_bank_account, d.ref, d.rowid, d.date_valid, d.fk_user_author, d.total_ttc, d.integration_compta, d.fk_c_expensereport_statuts";
|
||||
$sql.= " ,CONCAT(u.firstname,' ',u.lastname) as declarant_NDF";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."expensereport d";
|
||||
$sql.= " INNER JOIN ".MAIN_DB_PREFIX."user u ON d.fk_user_author = u.rowid";
|
||||
$sql.= " WHERE d.fk_c_expensereport_statuts = 6";
|
||||
$sql.= " ORDER BY d.date_valide DESC";
|
||||
$sql.= " ORDER BY d.date_valid DESC";
|
||||
|
||||
$resql=$db->query($sql);
|
||||
if ($resql):
|
||||
@ -170,7 +170,7 @@ else:
|
||||
$var=!$var;
|
||||
print "<tr $bc[$var]>";
|
||||
print '<td>'.$objp->ref.'</td>';
|
||||
print '<td>'.dol_print_date($db->jdate($objp->date_valide),'day').'</td>';
|
||||
print '<td>'.dol_print_date($db->jdate($objp->date_valid),'day').'</td>';
|
||||
print '<td><a href="'.DOL_URL_ROOT.'/user/card.php?id='.$objp->fk_user_author.'">'.img_object($langs->trans("ShowUser"),"user").' '.$objp->declarant_NDF.'</a></td>';
|
||||
print '<td align="center">'.$objp->total_ttc.' '.$langs->trans("EURO").'</td>';
|
||||
|
||||
|
||||
@ -118,10 +118,9 @@ ALTER TABLE llx_stock_mouvement ADD COLUMN sellby date DEFAULT NULL;
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE TABLE llx_expensereport (
|
||||
rowid integer NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
ref varchar(50) NOT NULL,
|
||||
ref varchar(50) NOT NULL,
|
||||
entity integer DEFAULT 1 NOT NULL, -- multi company id
|
||||
ref_number_int integer DEFAULT NULL,
|
||||
ref_ext integer,
|
||||
@ -132,30 +131,33 @@ CREATE TABLE llx_expensereport (
|
||||
total_ttc double(24,8) DEFAULT 0,
|
||||
date_debut date NOT NULL,
|
||||
date_fin date NOT NULL,
|
||||
date_paiement datetime,
|
||||
date_valide datetime,
|
||||
date_create datetime NOT NULL,
|
||||
date_valid datetime,
|
||||
date_approve datetime,
|
||||
date_refuse datetime,
|
||||
date_cancel datetime,
|
||||
date_paiement datetime,
|
||||
tms timestamp,
|
||||
fk_user_author integer NOT NULL,
|
||||
fk_user_modif integer DEFAULT NULL,
|
||||
fk_user_valid integer DEFAULT NULL,
|
||||
fk_user_validator integer DEFAULT NULL,
|
||||
fk_user_approve integer DEFAULT NULL,
|
||||
fk_user_refuse integer DEFAULT NULL,
|
||||
fk_user_cancel integer DEFAULT NULL,
|
||||
fk_user_paid integer DEFAULT NULL,
|
||||
fk_c_expensereport_statuts integer NOT NULL, -- 1=brouillon, 2=validé (attente approb), 4=annulé, 5=approuvé, 6=payed, 99=refusé
|
||||
fk_c_paiement integer DEFAULT NULL,
|
||||
note text,
|
||||
note_private text,
|
||||
fk_user_valid integer DEFAULT NULL,
|
||||
fk_user_paid integer DEFAULT NULL,
|
||||
detail_refuse varchar(255) DEFAULT NULL,
|
||||
date_cancel datetime,
|
||||
date_refuse datetime,
|
||||
detail_cancel varchar(255) DEFAULT NULL,
|
||||
fk_user_cancel integer DEFAULT NULL,
|
||||
fk_user_refuse integer DEFAULT NULL,
|
||||
integration_compta integer DEFAULT NULL,
|
||||
integration_compta integer DEFAULT NULL, -- not used
|
||||
fk_bank_account integer DEFAULT NULL,
|
||||
model_pdf varchar(50) DEFAULT NULL
|
||||
) ENGINE=innodb;
|
||||
|
||||
|
||||
CREATE TABLE llx_expensereport_det
|
||||
(
|
||||
rowid integer NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
|
||||
@ -29,27 +29,28 @@ CREATE TABLE llx_expensereport (
|
||||
total_ttc double(24,8) DEFAULT 0,
|
||||
date_debut date NOT NULL,
|
||||
date_fin date NOT NULL,
|
||||
date_paiement datetime,
|
||||
date_valide datetime,
|
||||
date_create datetime NOT NULL,
|
||||
date_valid datetime,
|
||||
date_approve datetime,
|
||||
date_refuse datetime,
|
||||
date_cancel datetime,
|
||||
date_paiement datetime,
|
||||
tms timestamp,
|
||||
fk_user_author integer NOT NULL,
|
||||
fk_user_modif integer DEFAULT NULL,
|
||||
fk_user_valid integer DEFAULT NULL,
|
||||
fk_user_validator integer DEFAULT NULL,
|
||||
fk_user_approve integer DEFAULT NULL,
|
||||
fk_user_refuse integer DEFAULT NULL,
|
||||
fk_user_cancel integer DEFAULT NULL,
|
||||
fk_user_paid integer DEFAULT NULL,
|
||||
fk_c_expensereport_statuts integer NOT NULL, -- 1=brouillon, 2=validé (attente approb), 4=annulé, 5=approuvé, 6=payed, 99=refusé
|
||||
fk_c_paiement integer DEFAULT NULL,
|
||||
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,
|
||||
date_refuse datetime,
|
||||
detail_cancel varchar(255) DEFAULT NULL,
|
||||
fk_user_cancel integer DEFAULT NULL,
|
||||
fk_user_refuse integer DEFAULT NULL,
|
||||
integration_compta integer DEFAULT NULL,
|
||||
integration_compta integer DEFAULT NULL, -- not used
|
||||
fk_bank_account integer DEFAULT NULL,
|
||||
model_pdf varchar(50) DEFAULT NULL
|
||||
) ENGINE=innodb;
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
# Dolibarr language file - Source file is en_US - trips
|
||||
ExpenseReport=Expense report
|
||||
ExpenseReports=Expense reports
|
||||
Trip=Expense report
|
||||
Trips=Expense reports
|
||||
TripsAndExpenses=Expenses reports
|
||||
@ -14,6 +16,7 @@ FeesKilometersOrAmout=Amount or kilometers
|
||||
DeleteTrip=Delete expense report
|
||||
ConfirmDeleteTrip=Are you sure you want to delete this expense report ?
|
||||
ListTripsAndExpenses=List of expense reports
|
||||
ListToApprove=Waiting for approval
|
||||
ExpensesArea=Expense reports area
|
||||
SearchATripAndExpense=Search an expense report
|
||||
ClassifyRefunded=Classify 'Refunded'
|
||||
@ -28,10 +31,12 @@ DeleteLine=Delete a ligne of the expense report
|
||||
ConfirmDeleteLine=Are you sure you want to delete this line ?
|
||||
|
||||
TF_OTHER=Other
|
||||
TF_TRANSPORTATION=Transportation
|
||||
TF_LUNCH=Lunch
|
||||
TF_METRO=Metro
|
||||
TF_TRAIN=Train
|
||||
TF_BUS=Bus
|
||||
TF_CAR=Car
|
||||
TF_PEAGE=Toll
|
||||
TF_ESSENCE=Fuel
|
||||
TF_HOTEL=Hostel
|
||||
|
||||
@ -421,7 +421,7 @@ class Project extends CommonObject
|
||||
}
|
||||
if ($type == 'expensereport')
|
||||
{
|
||||
$sql = "SELECT e.rowid FROM " . MAIN_DB_PREFIX . "expensereport as e, " . MAIN_DB_PREFIX . "expensereport_det as ed WHERE e.rowid = ed.fk_expensereport AND ed.fk_projet=" . $this->id;
|
||||
$sql = "SELECT ed.rowid FROM " . MAIN_DB_PREFIX . "expensereport as e, " . MAIN_DB_PREFIX . "expensereport_det as ed WHERE e.rowid = ed.fk_expensereport AND ed.fk_projet=" . $this->id;
|
||||
}
|
||||
if ($dates > 0)
|
||||
{
|
||||
@ -511,7 +511,7 @@ class Project extends CommonObject
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Delete tasks
|
||||
if (! $error)
|
||||
{
|
||||
|
||||
@ -44,11 +44,12 @@ if (! empty($conf->agenda->enabled)) require_once DOL_DOCUMENT_ROOT.'/comm/
|
||||
$langs->load("projects");
|
||||
$langs->load("companies");
|
||||
$langs->load("suppliers");
|
||||
if (! empty($conf->facture->enabled)) $langs->load("bills");
|
||||
if (! empty($conf->commande->enabled)) $langs->load("orders");
|
||||
if (! empty($conf->propal->enabled)) $langs->load("propal");
|
||||
if (! empty($conf->ficheinter->enabled)) $langs->load("interventions");
|
||||
if (! empty($conf->deplacement->enabled)) $langs->load("trips");
|
||||
if (! empty($conf->facture->enabled)) $langs->load("bills");
|
||||
if (! empty($conf->commande->enabled)) $langs->load("orders");
|
||||
if (! empty($conf->propal->enabled)) $langs->load("propal");
|
||||
if (! empty($conf->ficheinter->enabled)) $langs->load("interventions");
|
||||
if (! empty($conf->deplacement->enabled)) $langs->load("trips");
|
||||
if (! empty($conf->expensereport->enabled)) $langs->load("trips");
|
||||
|
||||
$projectid=GETPOST('id','int');
|
||||
$ref=GETPOST('ref','alpha');
|
||||
@ -237,10 +238,10 @@ $listofreferent=array(
|
||||
'name'=>"ExpenseReports",
|
||||
'title'=>"ListExpenseReportsAssociatedProject",
|
||||
'class'=>'ExpenseReportLine',
|
||||
'table'=>'expensereport',
|
||||
'table'=>'expensereport_det',
|
||||
'datefieldname'=>'date',
|
||||
'margin'=>'minus',
|
||||
'disableamount'=>1,
|
||||
'disableamount'=>0,
|
||||
'test'=>$conf->expensereport->enabled && $user->rights->expensereport->lire),
|
||||
'agenda'=>array(
|
||||
'name'=>"Agenda",
|
||||
@ -311,10 +312,12 @@ foreach ($listofreferent as $key => $value)
|
||||
print_titre($langs->trans($title));
|
||||
|
||||
$selectList=$formproject->select_element($tablename,$project->thirdparty->id);
|
||||
|
||||
if (!$selectList || ($selectList<0)) {
|
||||
setEventMessage($formproject->error,'errors');
|
||||
} else {
|
||||
if (! $selectList || ($selectList<0))
|
||||
{
|
||||
setEventMessages($formproject->error,$formproject->errors,'errors');
|
||||
}
|
||||
else
|
||||
{
|
||||
print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$projectid.'" method="post">';
|
||||
print '<input type="hidden" name="tablename" value="'.$tablename.'">';
|
||||
print '<input type="hidden" name="action" value="addelement">';
|
||||
@ -329,9 +332,14 @@ foreach ($listofreferent as $key => $value)
|
||||
print '<table class="noborder" width="100%">';
|
||||
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td width="100" colspan="2">'.$langs->trans("Ref").'</td>';
|
||||
print '<td style="width: 24px"></td>';
|
||||
print '<td style="width: 200px">'.$langs->trans("Ref").'</td>';
|
||||
print '<td width="100" align="center">'.$langs->trans("Date").'</td>';
|
||||
print '<td>'.$langs->trans("ThirdParty").'</td>';
|
||||
// Thirdparty or user
|
||||
print '<td>';
|
||||
if ($tablename == 'expensereport_det') print $langs->trans("User");
|
||||
else print $langs->trans("ThirdParty");
|
||||
print '</td>';
|
||||
if (empty($value['disableamount'])) print '<td align="right" width="120">'.$langs->trans("AmountHT").'</td>';
|
||||
else print '<td width="120"></td>';
|
||||
if (empty($value['disableamount'])) print '<td align="right" width="120">'.$langs->trans("AmountTTC").'</td>';
|
||||
@ -360,7 +368,17 @@ foreach ($listofreferent as $key => $value)
|
||||
for ($i = 0; $i < $num; $i++)
|
||||
{
|
||||
$element->fetch($elementarray[$i]);
|
||||
$element->fetch_thirdparty();
|
||||
|
||||
if ($tablename != 'expensereport_det')
|
||||
{
|
||||
$element->fetch_thirdparty();
|
||||
}
|
||||
else
|
||||
{
|
||||
$expensereport=new ExpenseReport($db);
|
||||
$expensereport->fetch($element->fk_expensereport);
|
||||
}
|
||||
|
||||
//print $classname;
|
||||
|
||||
if ($breakline && $saved_third_id != $element->thirdparty->id)
|
||||
@ -384,12 +402,17 @@ foreach ($listofreferent as $key => $value)
|
||||
|
||||
$var=!$var;
|
||||
print "<tr ".$bc[$var].">";
|
||||
print '<td width="1%">';
|
||||
print '<td style="width: 24px">';
|
||||
print '<a href="' . $_SERVER["PHP_SELF"] . '?id=' . $projectid . '&action=unlink&tablename=' . $tablename . '&elementselect=' . $element->id . '">' . img_picto($langs->trans('Unlink'), 'editdelete') . '</a>';
|
||||
print "</td>\n";
|
||||
// Ref
|
||||
print '<td align="left">';
|
||||
print $element->getNomUrl(1);
|
||||
|
||||
if ($tablename == 'expensereport_det')
|
||||
{
|
||||
print $expensereport->getNomUrl(1);
|
||||
}
|
||||
else print $element->getNomUrl(1);
|
||||
print "</td>\n";
|
||||
|
||||
// Date
|
||||
@ -403,9 +426,15 @@ foreach ($listofreferent as $key => $value)
|
||||
}
|
||||
print '<td align="center">'.dol_print_date($date,'day').'</td>';
|
||||
|
||||
// Third party
|
||||
// Third party or user
|
||||
print '<td align="left">';
|
||||
if (is_object($element->thirdparty)) print $element->thirdparty->getNomUrl(1,'',48);
|
||||
else if ($tablename == 'expensereport_det')
|
||||
{
|
||||
$tmpuser=new User($db);
|
||||
$tmpuser->fetch($expensereport->fk_user_author);
|
||||
print $tmpuser->getNomUrl(1,'',48);
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
// Amount without tax
|
||||
@ -431,7 +460,10 @@ foreach ($listofreferent as $key => $value)
|
||||
else print '<td></td>';
|
||||
|
||||
// Status
|
||||
print '<td align="right">'.$element->getLibStatut(5).'</td>';
|
||||
print '<td align="right">';
|
||||
if ($tablename == 'expensereport_det') print $expensereport->getLibStatut(5);
|
||||
else print $element->getLibStatut(5);
|
||||
print '</td>';
|
||||
|
||||
print '</tr>';
|
||||
|
||||
@ -520,13 +552,15 @@ foreach ($listofreferent as $key => $value)
|
||||
}
|
||||
}
|
||||
|
||||
// Profit for all project
|
||||
|
||||
// Show profit summary for whole project
|
||||
|
||||
$langs->load("suppliers");
|
||||
$langs->load("bills");
|
||||
$langs->load("orders");
|
||||
$langs->load("proposals");
|
||||
$langs->load("margins");
|
||||
print_fiche_titre($langs->trans("Profit"),'','');
|
||||
print_fiche_titre($langs->trans("Profit"),'');
|
||||
print '<table class="noborder">';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td align="left" width="200">'.$langs->trans("Element").'</td>';
|
||||
@ -543,7 +577,7 @@ foreach ($listofreferent as $key => $value)
|
||||
$tablename=$value['table'];
|
||||
$qualified=$value['test'];
|
||||
$margin = $value['margin'];
|
||||
if (isset($margin))
|
||||
if ($qualified && isset($margin)) // If this element must be included into profit calculation ($margin is 'minus' or 'plus')
|
||||
{
|
||||
$element = new $classname($db);
|
||||
|
||||
@ -557,13 +591,10 @@ foreach ($listofreferent as $key => $value)
|
||||
for ($i = 0; $i < $num; $i++)
|
||||
{
|
||||
$element->fetch($elementarray[$i]);
|
||||
$element->fetch_thirdparty();
|
||||
//print $classname;
|
||||
if ($qualified)
|
||||
{
|
||||
$total_ht = $total_ht + $element->total_ht;
|
||||
$total_ttc = $total_ttc + $element->total_ttc;
|
||||
}
|
||||
if ($tablename != 'expensereport_det') $element->fetch_thirdparty();
|
||||
|
||||
$total_ht = $total_ht + $element->total_ht;
|
||||
$total_ttc = $total_ttc + $element->total_ttc;
|
||||
}
|
||||
|
||||
print '<tr >';
|
||||
|
||||
Loading…
Reference in New Issue
Block a user