Fix numbering for expense report

This commit is contained in:
Laurent Destailleur 2018-02-07 14:21:57 +01:00
parent 852c4fc033
commit d8872a412b
4 changed files with 68 additions and 7 deletions

View File

@ -101,6 +101,51 @@ class mod_expensereport_jade extends ModeleNumRefExpenseReport
{
global $db,$conf;
// For backward compatibility and restore old behavior to get ref of expense report
if ($conf->global->EXPENSEREPORT_USE_OLD_NUMBERING_RULE)
{
$fuser = null;
if ($object->fk_user_author > 0)
{
$fuser=new User($db);
$fuser->fetch($object->fk_user_author);
}
$expld_car = (empty($conf->global->NDF_EXPLODE_CHAR))?"-":$conf->global->NDF_EXPLODE_CHAR;
$num_car = (empty($conf->global->NDF_NUM_CAR_REF))?"5":$conf->global->NDF_NUM_CAR_REF;
$sql = 'SELECT MAX(de.ref_number_int) as max';
$sql.= ' FROM '.MAIN_DB_PREFIX.'expensereport de';
$result = $db->query($sql);
if($db->num_rows($result) > 0):
$objp = $db->fetch_object($result);
$newref = $objp->max;
$newref++;
while(strlen($newref) < $num_car):
$newref = "0".$newref;
endwhile;
else:
$newref = 1;
while(strlen($newref) < $num_car):
$newref = "0".$newref;
endwhile;
endif;
$ref_number_int = ($newref+1)-1;
$update_number_int = true;
$user_author_infos = dolGetFirstLastname($fuser->firstname, $fuser->lastname);
$prefix="ER";
if (! empty($conf->global->EXPENSE_REPORT_PREFIX)) $prefix=$conf->global->EXPENSE_REPORT_PREFIX;
$newref = str_replace(' ','_', $user_author_infos).$expld_car.$prefix.$newref.$expld_car.dol_print_date($object->date_debut,'%y%m%d');
dol_syslog("mod_expensereport_jade::getNextValue return ".$newref);
return $newref;
}
// D'abord on recupere la valeur max
$posindice=8;
$sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";

View File

@ -315,11 +315,16 @@ if (empty($reshook))
if ($action == "confirm_validate" && GETPOST("confirm") == "yes" && $id > 0 && $user->rights->expensereport->creer)
{
$error = 0;
$db->begin();
$object = new ExpenseReport($db);
$object->fetch($id);
$result = $object->setValidate($user);
if ($result > 0)
if ($result >= 0)
{
// Define output language
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
@ -338,8 +343,13 @@ if (empty($reshook))
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
}
}
else
{
setEventMessages($object->error, $object->errors, 'errors');
$error++;
}
if ($result > 0 && $object->fk_user_validator > 0)
if (! $error && $result > 0 && $object->fk_user_validator > 0)
{
$langs->load("mails");
@ -418,10 +428,15 @@ if (empty($reshook))
$action='';
}
}
else
{
setEventMessages($object->error, $object->errors, 'errors');
}
if (! $error)
{
$db->commit();
}
else
{
$db->rollback();
}
}
if ($action == "confirm_save_from_refuse" && GETPOST("confirm") == "yes" && $id > 0 && $user->rights->expensereport->creer)

View File

@ -1091,7 +1091,7 @@ class ExpenseReport extends CommonObject
{
$num = $this->ref;
}
if (empty($num)) return -1;
if (empty($num) || $num < 0) return -1;
$this->newref = $num;

View File

@ -74,6 +74,7 @@ EX_CAM_VP=PV maintenance and repair
DefaultCategoryCar=Default transportation mode
DefaultRangeNumber=Default range number
Error_EXPENSEREPORT_ADDON_NotDefined=Error, the rule for expense report numbering ref was not defined into setup of module 'Expense Report'
ErrorDoubleDeclaration=You have declared another expense report into a similar date range.
AucuneLigne=There is no expense report declared yet