FIX Fatal situation if payment removed on expense report. Action
set_unpaid was not available.
This commit is contained in:
parent
b40f2cbcce
commit
f3e38f4b09
@ -996,6 +996,34 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($action == 'set_unpaid' && $id > 0 && $user->rights->expensereport->to_paid)
|
||||||
|
{
|
||||||
|
$object = new ExpenseReport($db);
|
||||||
|
$object->fetch($id);
|
||||||
|
|
||||||
|
$result = $object->set_unpaid($user);
|
||||||
|
|
||||||
|
if ($result > 0)
|
||||||
|
{
|
||||||
|
// Define output language
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
||||||
|
{
|
||||||
|
$outputlangs = $langs;
|
||||||
|
$newlang = '';
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) $newlang = GETPOST('lang_id', 'aZ09');
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
|
||||||
|
if (! empty($newlang)) {
|
||||||
|
$outputlangs = new Translate("", $conf);
|
||||||
|
$outputlangs->setDefaultLang($newlang);
|
||||||
|
}
|
||||||
|
$model=$object->modelpdf;
|
||||||
|
$ret = $object->fetch($id); // Reload to get new records
|
||||||
|
|
||||||
|
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($action == 'set_paid' && $id > 0 && $user->rights->expensereport->to_paid)
|
if ($action == 'set_paid' && $id > 0 && $user->rights->expensereport->to_paid)
|
||||||
{
|
{
|
||||||
$object = new ExpenseReport($db);
|
$object = new ExpenseReport($db);
|
||||||
@ -2662,8 +2690,8 @@ if ($action != 'create' && $action != 'edit')
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// If status is Appoved
|
// If status is Approved
|
||||||
// --------------------
|
// ---------------------
|
||||||
|
|
||||||
if ($user->rights->expensereport->approve && $object->fk_statut == ExpenseReport::STATUS_APPROVED)
|
if ($user->rights->expensereport->approve && $object->fk_statut == ExpenseReport::STATUS_APPROVED)
|
||||||
{
|
{
|
||||||
@ -2707,9 +2735,15 @@ if ($action != 'create' && $action != 'edit')
|
|||||||
print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$object->id.'">'.$langs->trans('Cancel').'</a></div>';
|
print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$object->id.'">'.$langs->trans('Cancel').'</a></div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($user->rights->expensereport->to_paid && $object->paid && $object->fk_statut == ExpenseReport::STATUS_CLOSED)
|
||||||
|
{
|
||||||
|
// Set unpaid
|
||||||
|
print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=set_unpaid&id='.$object->id.'">'.$langs->trans('ClassifyUnPaid').'</a></div>';
|
||||||
|
}
|
||||||
|
|
||||||
// Clone
|
// Clone
|
||||||
if ($user->rights->expensereport->creer) {
|
if ($user->rights->expensereport->creer) {
|
||||||
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=clone">' . $langs->trans("ToClone") . '</a></div>';
|
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=clone">' . $langs->trans("ToClone") . '</a></div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If draft, validated, cancel, and user can create, he can always delete its card before it is approved */
|
/* If draft, validated, cancel, and user can create, he can always delete its card before it is approved */
|
||||||
|
|||||||
@ -1397,12 +1397,12 @@ class ExpenseReport extends CommonObject
|
|||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
if ($this->fk_c_deplacement_statuts != 5)
|
if ($this->paid)
|
||||||
{
|
{
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element;
|
$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element;
|
||||||
$sql.= " SET fk_statut = 5";
|
$sql.= " SET paid = 0";
|
||||||
$sql.= ' WHERE rowid = '.$this->id;
|
$sql.= ' WHERE rowid = '.$this->id;
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::set_unpaid sql=".$sql, LOG_DEBUG);
|
dol_syslog(get_class($this)."::set_unpaid sql=".$sql, LOG_DEBUG);
|
||||||
|
|||||||
@ -95,6 +95,7 @@ PaymentHigherThanReminderToPay=Payment higher than reminder to pay
|
|||||||
HelpPaymentHigherThanReminderToPay=Attention, the payment amount of one or more bills is higher than the outstanding amount to pay. <br> Edit your entry, otherwise confirm and consider creating a credit note for the excess received for each overpaid invoice.
|
HelpPaymentHigherThanReminderToPay=Attention, the payment amount of one or more bills is higher than the outstanding amount to pay. <br> Edit your entry, otherwise confirm and consider creating a credit note for the excess received for each overpaid invoice.
|
||||||
HelpPaymentHigherThanReminderToPaySupplier=Attention, the payment amount of one or more bills is higher than the outstanding amount to pay. <br> Edit your entry, otherwise confirm and consider creating a credit note for the excess paid for each overpaid invoice.
|
HelpPaymentHigherThanReminderToPaySupplier=Attention, the payment amount of one or more bills is higher than the outstanding amount to pay. <br> Edit your entry, otherwise confirm and consider creating a credit note for the excess paid for each overpaid invoice.
|
||||||
ClassifyPaid=Classify 'Paid'
|
ClassifyPaid=Classify 'Paid'
|
||||||
|
ClassifyUnPaid=Classify 'Unpaid'
|
||||||
ClassifyPaidPartially=Classify 'Paid partially'
|
ClassifyPaidPartially=Classify 'Paid partially'
|
||||||
ClassifyCanceled=Classify 'Abandoned'
|
ClassifyCanceled=Classify 'Abandoned'
|
||||||
ClassifyClosed=Classify 'Closed'
|
ClassifyClosed=Classify 'Closed'
|
||||||
|
|||||||
@ -96,6 +96,7 @@ HelpPaymentHigherThanReminderToPay=Attention, le montant de paiement pour une ou
|
|||||||
HelpPaymentHigherThanReminderToPaySupplier=Attention, le montant de paiement pour une ou plusieurs factures est supérieur au reste à payer.<br>Corrigez votre saisie, sinon, confirmez et pensez à créer un avoir pour l'excédent pour chaque facture surpayée.
|
HelpPaymentHigherThanReminderToPaySupplier=Attention, le montant de paiement pour une ou plusieurs factures est supérieur au reste à payer.<br>Corrigez votre saisie, sinon, confirmez et pensez à créer un avoir pour l'excédent pour chaque facture surpayée.
|
||||||
ClassifyPaid=Classer 'Payée'
|
ClassifyPaid=Classer 'Payée'
|
||||||
ClassifyPaidPartially=Classer 'Payée partiellement'
|
ClassifyPaidPartially=Classer 'Payée partiellement'
|
||||||
|
ClassifyUnPaid=Classer 'Non payée'
|
||||||
ClassifyCanceled=Classer 'Abandonnée'
|
ClassifyCanceled=Classer 'Abandonnée'
|
||||||
ClassifyClosed=Classer 'Fermée'
|
ClassifyClosed=Classer 'Fermée'
|
||||||
ClassifyUnBilled=Classer 'Non facturée'
|
ClassifyUnBilled=Classer 'Non facturée'
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user