diff --git a/htdocs/admin/payment.php b/htdocs/admin/payment.php
index fa99e2c202b..8ce904aad7c 100644
--- a/htdocs/admin/payment.php
+++ b/htdocs/admin/payment.php
@@ -69,7 +69,23 @@ if ($action == 'setmod')
dolibarr_set_const($db, "PAYMENT_ADDON",$value,'chaine',0,'',$conf->entity);
}
+if ($action == 'set_FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS')
+{
+ $freetext = GETPOST('FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS'); // No alpha here, we want exact string
+ $res = dolibarr_set_const($db, "FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS",$freetext,'chaine',0,'',$conf->entity);
+
+ if (! $res > 0) $error++;
+
+ if (! $error)
+ {
+ setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
+ }
+ else
+ {
+ setEventMessages($langs->trans("Error"), null, 'errors');
+ }
+}
/*
* View
@@ -215,6 +231,33 @@ foreach ($dirmodels as $reldir)
print '';
+print "
";
+
+print load_fiche_titre($langs->trans("OtherOptions"),'','');
+
+print '
';
+print '';
+print '| '.$langs->trans("Parameter").' | ';
+print ''.$langs->trans("Value").' | ';
+print ' | ';
+print "
\n";
+
+// Allow payments on different thirdparties bills but same parent company
+$var=! $var;
+print '';
+
+print '
';
+
dol_fiche_end();
diff --git a/htdocs/compta/paiement.php b/htdocs/compta/paiement.php
index fa1341dcbc6..a9414fcafeb 100644
--- a/htdocs/compta/paiement.php
+++ b/htdocs/compta/paiement.php
@@ -33,6 +33,7 @@ require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
+require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
$langs->load('companies');
$langs->load('bills');
@@ -518,11 +519,21 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
* List of unpaid invoices
*/
$sql = 'SELECT f.rowid as facid, f.facnumber, f.total_ttc, f.multicurrency_total_ttc, f.type, ';
- $sql.= ' f.datef as df';
+ $sql.= ' f.datef as df, f.fk_soc as socid';
$sql.= ' FROM '.MAIN_DB_PREFIX.'facture as f';
- $sql.= ' WHERE f.entity = '.$conf->entity;
- $sql.= ' AND f.fk_soc = '.$facture->socid;
- $sql.= ' AND f.paye = 0';
+
+ if(!empty($conf->global->FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS)) {
+ $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON (f.fk_soc = s.rowid)';
+ }
+
+ $sql.= ' WHERE f.entity = '.$conf->entity;
+ $sql.= ' AND (f.fk_soc = '.$facture->socid;
+
+ if(!empty($conf->global->FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS)) {
+ $sql.= ' OR f.fk_soc IN (SELECT rowid FROM '.MAIN_DB_PREFIX.'societe WHERE parent = '.$facture->thirdparty->parent.')';
+ }
+
+ $sql.= ') AND f.paye = 0';
$sql.= ' AND f.fk_statut = 1'; // Statut=0 => not validated, Statut=2 => canceled
if ($facture->type != 2)
{
@@ -583,6 +594,9 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
$objp = $db->fetch_object($resql);
$var=!$var;
+ $soc = new Societe($db);
+ $soc->fetch($objp->socid);
+
$invoice=new Facture($db);
$invoice->fetch($objp->facid);
$paiement = $invoice->getSommePaiement();
@@ -605,6 +619,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
print '';
print $invoice->getNomUrl(1,'');
+ if($objp->socid != $facture->thirdparty->id) print ' - '.$soc->getNomUrl(1).' ';
print " | \n";
// Date
diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang
index af2f6174315..f07b069e031 100644
--- a/htdocs/langs/en_US/bills.lang
+++ b/htdocs/langs/en_US/bills.lang
@@ -312,6 +312,7 @@ LatestRelatedBill=Latest related invoice
WarningBillExist=Warning, one or more invoice already exist
MergingPDFTool=Merging PDF tool
AmountPaymentDistributedOnInvoice=Payment amount distributed on invoice
+PaymentOnDifferentThirdBills=Allow payments on different thirdparties bills but same parent company
PaymentNote=Payment note
ListOfPreviousSituationInvoices=List of previous situation invoices
ListOfNextSituationInvoices=List of next situation invoices