diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php
index 0072d9ff7a6..1b6b4a50e01 100644
--- a/htdocs/compta/facture/card.php
+++ b/htdocs/compta/facture/card.php
@@ -4617,7 +4617,7 @@ elseif ($id > 0 || ! empty($ref))
// Editer une facture deja validee, sans paiement effectue et pas exporte en compta
if ($object->statut == Facture::STATUS_VALIDATED)
{
- // On verifie si les lignes de factures ont ete exportees en compta et/ou ventilees
+ // We check if lines of invoice are not already transfered into accountancy
$ventilExportCompta = $object->getVentilExportCompta();
if ($ventilExportCompta == 0)
@@ -4652,7 +4652,7 @@ elseif ($id > 0 || ! empty($ref))
if ((($object->type == Facture::TYPE_STANDARD || $object->type == Facture::TYPE_REPLACEMENT)
|| ($object->type == Facture::TYPE_CREDIT_NOTE && empty($discount->id))
|| ($object->type == Facture::TYPE_DEPOSIT && empty($discount->id)))
- && ($object->statut == 2 || $object->statut == 3 || ($object->statut == 1 && $object->paye == 1)) // Condition ($object->statut == 1 && $object->paye == 1) should not happened but can be found due to corrupted data
+ && ($object->statut == Facture::STATUS_CLOSED || $object->statut == Facture::STATUS_ABANDONED || ($object->statut == 1 && $object->paye == 1)) // Condition ($object->statut == 1 && $object->paye == 1) should not happened but can be found due to corrupted data
&& ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || $usercanreopen)) // A paid invoice (partially or completely)
{
if ($object->close_code != 'replaced' || (! $objectidnext)) // Not replaced by another invoice or replaced but the replacement invoice has been deleted
@@ -4834,7 +4834,7 @@ elseif ($id > 0 || ! empty($ref))
}
}
- // remove situation from cycle
+ // Remove situation from cycle
if ($object->statut > Facture::STATUS_DRAFT
&& $object->type == Facture::TYPE_SITUATION
&& $usercancreate
diff --git a/htdocs/compta/paiement.php b/htdocs/compta/paiement.php
index e8fceebb03c..39f19b6e34c 100644
--- a/htdocs/compta/paiement.php
+++ b/htdocs/compta/paiement.php
@@ -639,7 +639,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
print '
';
- print '| ';
+ print ' | ';
print $invoice->getNomUrl(1, '');
if ($objp->socid != $facture->thirdparty->id) print ' - '.$soc->getNomUrl(1).' ';
print " | \n";
@@ -650,7 +650,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
// Due date
if ($objp->dlr > 0 )
{
- print '';
+ print ' | ';
print dol_print_date($db->jdate($objp->dlr), 'day');
if ($invoice->hasDelay())
diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php
index c25b0afa15b..67629c7d20c 100644
--- a/htdocs/fourn/facture/card.php
+++ b/htdocs/fourn/facture/card.php
@@ -1416,58 +1416,61 @@ if (empty($reshook))
$resteapayer = $object->total_ttc - $totalpaye;
// On verifie si les lignes de factures ont ete exportees en compta et/ou ventilees
- //$ventilExportCompta = $object->getVentilExportCompta();
+ $ventilExportCompta = $object->getVentilExportCompta();
- // On verifie si aucun paiement n'a ete effectue
- if ($resteapayer == $object->total_ttc && $object->paye == 0 && $ventilExportCompta == 0)
- {
- $idwarehouse = GETPOST('idwarehouse');
+ if (! $ventilExportCompta)
+ {
+ // On verifie si aucun paiement n'a ete effectue
+ if ($resteapayer == price2num($object->total_ttc, 'MT', 1) && $object->statut == FactureFournisseur::STATUS_VALIDATED)
+ {
+ $idwarehouse = GETPOST('idwarehouse');
- $object->fetch_thirdparty();
+ $object->fetch_thirdparty();
- $qualified_for_stock_change=0;
- if (empty($conf->global->STOCK_SUPPORTS_SERVICES))
- {
- $qualified_for_stock_change=$object->hasProductsOrServices(2);
- }
- else
- {
- $qualified_for_stock_change=$object->hasProductsOrServices(1);
- }
+ $qualified_for_stock_change=0;
+ if (empty($conf->global->STOCK_SUPPORTS_SERVICES))
+ {
+ $qualified_for_stock_change=$object->hasProductsOrServices(2);
+ }
+ else
+ {
+ $qualified_for_stock_change=$object->hasProductsOrServices(1);
+ }
- // Check parameters
- if (! empty($conf->stock->enabled) && ! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_BILL) && $qualified_for_stock_change)
- {
- $langs->load("stocks");
- if (! $idwarehouse || $idwarehouse == -1)
- {
- $error++;
- setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Warehouse")), null, 'errors');
- $action='';
- }
- }
+ // Check parameters
+ if (! empty($conf->stock->enabled) && ! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_BILL) && $qualified_for_stock_change)
+ {
+ $langs->load("stocks");
+ if (! $idwarehouse || $idwarehouse == -1)
+ {
+ $error++;
+ setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Warehouse")), null, 'errors');
+ $action='';
+ }
+ }
- $object->setDraft($user, $idwarehouse);
+ $object->setDraft($user, $idwarehouse);
- // 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);
+ // 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
+
+ $result=$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
+ if ($result < 0) dol_print_error($db, $result);
}
- $model=$object->modelpdf;
- $ret = $object->fetch($id); // Reload to get new records
- $result=$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
- if ($result < 0) dol_print_error($db, $result);
+ $action='';
}
-
- $action='';
}
}
@@ -3032,11 +3035,20 @@ else
// modified by hook
if (empty($reshook))
{
-
// Modify a validated invoice with no payments
if ($object->statut == FactureFournisseur::STATUS_VALIDATED && $action != 'confirm_edit' && $object->getSommePaiement() == 0 && $user->rights->fournisseur->facture->creer)
{
- print '';
+ // We check if lines of invoice are not already transfered into accountancy
+ $ventilExportCompta = $object->getVentilExportCompta(); // Should be 0 since the sum of payments are zero. But we keep the protection.
+
+ if ($ventilExportCompta == 0)
+ {
+ print '';
+ }
+ else
+ {
+ print ' ' . $langs->trans('Modify') . ' ';
+ }
}
$discount = new DiscountAbsolute($db);
@@ -3045,7 +3057,7 @@ else
// Reopen a standard paid invoice
if (($object->type == FactureFournisseur::TYPE_STANDARD || $object->type == FactureFournisseur::TYPE_REPLACEMENT
|| ($object->type == FactureFournisseur::TYPE_CREDIT_NOTE && empty($discount->id)))
- && ($object->statut == 2 || $object->statut == 3)) // A paid invoice (partially or completely)
+ && ($object->statut == FactureFournisseur::STATUS_CLOSED || $object->statut == FactureFournisseur::STATUS_ABANDONED)) // A paid invoice (partially or completely)
{
if (! $facidnext && $object->close_code != 'replaced' && $user->rights->fournisseur->facture->creer) // Not replaced by another invoice
{
|