diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php
index 059af63b708..c2183a2b6e1 100644
--- a/htdocs/comm/propal.php
+++ b/htdocs/comm/propal.php
@@ -254,6 +254,7 @@ else if ($action == 'add' && $user->rights->propal->creer) {
$object->duree_validite = $duration;
$object->cond_reglement_id = GETPOST('cond_reglement_id');
$object->mode_reglement_id = GETPOST('mode_reglement_id');
+ $object->fk_account = GETPOST('fk_account', 'int');
$object->remise_percent = GETPOST('remise_percent');
$object->remise_absolue = GETPOST('remise_absolue');
$object->socid = GETPOST('socid');
@@ -279,7 +280,7 @@ else if ($action == 'add' && $user->rights->propal->creer) {
$object->duree_validite = GETPOST('duree_validite');
$object->cond_reglement_id = GETPOST('cond_reglement_id');
$object->mode_reglement_id = GETPOST('mode_reglement_id');
-
+ $object->fk_account = GETPOST('fk_account', 'int');
$object->contactid = GETPOST('contactidp');
$object->fk_project = GETPOST('projectid');
$object->modelpdf = GETPOST('model');
@@ -1104,6 +1105,11 @@ else if ($action == 'setmode' && $user->rights->propal->creer) {
$result = $object->setPaymentMethods(GETPOST('mode_reglement_id', 'int'));
}
+// bank account
+else if ($action == 'setbankaccount' && $user->rights->propal->creer) {
+ $result=$object->setBankAccount(GETPOST('fk_account', 'int'));
+}
+
/*
* Ordonnancement des lignes
*/
@@ -1368,6 +1374,11 @@ if ($action == 'create') {
$form->select_types_paiements($soc->mode_reglement_id, 'mode_reglement_id');
print '';
+ // Bank Account
+ print '
| ' . $langs->trans('BankAccount') . ' | ';
+ $form->select_comptes($fk_account, 'fk_account', 0, '', 1);
+ print ' |
';
+
// What trigger creation
print '| ' . $langs->trans('Source') . ' | ';
$form->selectInputReason('', 'demand_reason_id', "SRC_PROP", 1);
@@ -1966,6 +1977,23 @@ if ($action == 'create') {
}
}
+ // Bank Account
+ print ' |
| ';
+ print '';
+ print ' | ';
+ if ($action == 'editbankaccount') {
+ $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'fk_account', 1);
+ } else {
+ $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'none');
+ }
+ print ' | ';
+ print '
';
+
// Amount HT
print '| ' . $langs->trans('AmountHT') . ' | ';
print '' . price($object->total_ht, '', $langs, 0, - 1, - 1, $conf->currency) . ' | ';
diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php
index 0668b49121d..5a70aa99cbc 100644
--- a/htdocs/comm/propal/class/propal.class.php
+++ b/htdocs/comm/propal/class/propal.class.php
@@ -79,6 +79,7 @@ class Propal extends CommonObject
var $cond_reglement_id;
var $cond_reglement_code;
+ var $fk_account; // Id of bank account
var $mode_reglement_id;
var $mode_reglement_code;
var $remise;
@@ -714,6 +715,7 @@ class Propal extends CommonObject
$sql.= ", fin_validite";
$sql.= ", fk_cond_reglement";
$sql.= ", fk_mode_reglement";
+ $sql.= ", fk_account";
$sql.= ", ref_client";
$sql.= ", date_livraison";
$sql.= ", fk_availability";
@@ -739,6 +741,7 @@ class Propal extends CommonObject
$sql.= ", ".($this->fin_validite!=''?"'".$this->db->idate($this->fin_validite)."'":"null");
$sql.= ", ".$this->cond_reglement_id;
$sql.= ", ".$this->mode_reglement_id;
+ $sql.= ", ".($this->fk_account>0?$this->fk_account:'NULL');
$sql.= ", '".$this->db->escape($this->ref_client)."'";
$sql.= ", ".($this->date_livraison!=''?"'".$this->db->idate($this->date_livraison)."'":"null");
$sql.= ", ".$this->availability_id;
@@ -1049,6 +1052,7 @@ class Propal extends CommonObject
$sql.= ", p.fk_input_reason";
$sql.= ", p.fk_cond_reglement";
$sql.= ", p.fk_mode_reglement";
+ $sql.= ', p.fk_account';
$sql.= ", c.label as statut_label";
$sql.= ", ca.code as availability_code, ca.label as availability";
$sql.= ", dr.code as demand_reason_code, dr.label as demand_reason";
@@ -1113,6 +1117,7 @@ class Propal extends CommonObject
$this->mode_reglement_id = $obj->fk_mode_reglement;
$this->mode_reglement_code = $obj->mode_reglement_code;
$this->mode_reglement = $obj->mode_reglement;
+ $this->fk_account = ($obj->fk_account>0)?$obj->fk_account:null;
$this->cond_reglement_id = $obj->fk_cond_reglement;
$this->cond_reglement_code = $obj->cond_reglement_code;
$this->cond_reglement = $obj->cond_reglement;
diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php
index 472b46ce925..b6d06abf368 100644
--- a/htdocs/commande/class/commande.class.php
+++ b/htdocs/commande/class/commande.class.php
@@ -60,6 +60,7 @@ class Commande extends CommonOrder
var $brouillon;
var $cond_reglement_id;
var $cond_reglement_code;
+ var $fk_account;
var $mode_reglement_id;
var $mode_reglement_code;
var $availability_id;
@@ -658,7 +659,7 @@ class Commande extends CommonOrder
$sql = "INSERT INTO ".MAIN_DB_PREFIX."commande (";
$sql.= " ref, fk_soc, date_creation, fk_user_author, fk_projet, date_commande, source, note_private, note_public, ref_client, ref_int";
- $sql.= ", model_pdf, fk_cond_reglement, fk_mode_reglement, fk_availability, fk_input_reason, date_livraison, fk_delivery_address";
+ $sql.= ", model_pdf, fk_cond_reglement, fk_mode_reglement, fk_account, fk_availability, fk_input_reason, date_livraison, fk_delivery_address";
$sql.= ", remise_absolue, remise_percent";
$sql.= ", entity";
$sql.= ")";
@@ -673,6 +674,7 @@ class Commande extends CommonOrder
$sql.= ", '".$this->modelpdf."'";
$sql.= ", ".($this->cond_reglement_id>0?"'".$this->cond_reglement_id."'":"null");
$sql.= ", ".($this->mode_reglement_id>0?"'".$this->mode_reglement_id."'":"null");
+ $sql.= ", ".($this->fk_account>0?$this->fk_account:'NULL');
$sql.= ", ".($this->availability_id>0?"'".$this->availability_id."'":"null");
$sql.= ", ".($this->demand_reason_id>0?"'".$this->demand_reason_id."'":"null");
$sql.= ", ".($this->date_livraison?"'".$this->db->idate($this->date_livraison)."'":"null");
@@ -986,6 +988,7 @@ class Commande extends CommonOrder
$this->fk_project = $object->fk_project;
$this->cond_reglement_id = $object->cond_reglement_id;
$this->mode_reglement_id = $object->mode_reglement_id;
+ $this->fk_account = $object->fk_account;
$this->availability_id = $object->availability_id;
$this->demand_reason_id = $object->demand_reason_id;
$this->date_livraison = $object->date_livraison;
@@ -1329,6 +1332,7 @@ class Commande extends CommonOrder
$sql = 'SELECT c.rowid, c.date_creation, c.ref, c.fk_soc, c.fk_user_author, c.fk_statut';
$sql.= ', c.amount_ht, c.total_ht, c.total_ttc, c.tva as total_tva, c.localtax1 as total_localtax1, c.localtax2 as total_localtax2, c.fk_cond_reglement, c.fk_mode_reglement, c.fk_availability, c.fk_input_reason';
+ $sql.= ', c.fk_account';
$sql.= ', c.date_commande';
$sql.= ', c.date_livraison';
$sql.= ', c.fk_projet, c.remise_percent, c.remise, c.remise_absolue, c.source, c.facture as billed';
@@ -1388,6 +1392,7 @@ class Commande extends CommonOrder
$this->cond_reglement_code = $obj->cond_reglement_code;
$this->cond_reglement = $obj->cond_reglement_libelle;
$this->cond_reglement_doc = $obj->cond_reglement_libelle_doc;
+ $this->fk_account = $obj->fk_account;
$this->availability_id = $obj->fk_availability;
$this->availability_code = $obj->availability_code;
$this->demand_reason_id = $obj->fk_input_reason;
diff --git a/htdocs/commande/fiche.php b/htdocs/commande/fiche.php
index 8b1d6ec9ae3..7bf3705c07d 100644
--- a/htdocs/commande/fiche.php
+++ b/htdocs/commande/fiche.php
@@ -227,6 +227,7 @@ else if ($action == 'add' && $user->rights->commande->creer) {
$object->modelpdf = GETPOST('model');
$object->cond_reglement_id = GETPOST('cond_reglement_id');
$object->mode_reglement_id = GETPOST('mode_reglement_id');
+ $object->fk_account = GETPOST('fk_account', 'int');
$object->availability_id = GETPOST('availability_id');
$object->demand_reason_id = GETPOST('demand_reason_id');
$object->date_livraison = $datelivraison;
@@ -488,6 +489,11 @@ else if ($action == 'setconditions' && $user->rights->commande->creer) {
}
}
+// bank account
+else if ($action == 'setbankaccount' && $user->rights->commande->creer) {
+ $result=$object->setBankAccount(GETPOST('fk_account', 'int'));
+}
+
else if ($action == 'setremisepercent' && $user->rights->commande->creer) {
$result = $object->set_remise($user, GETPOST('remise_percent'));
}
@@ -1392,6 +1398,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
$soc = $objectsrc->client;
$cond_reglement_id = (!empty($objectsrc->cond_reglement_id)?$objectsrc->cond_reglement_id:(!empty($soc->cond_reglement_id)?$soc->cond_reglement_id:1));
$mode_reglement_id = (!empty($objectsrc->mode_reglement_id)?$objectsrc->mode_reglement_id:(!empty($soc->mode_reglement_id)?$soc->mode_reglement_id:0));
+ $fk_account = (! empty($objectsrc->fk_account)?$objectsrc->fk_account:(! empty($soc->fk_account)?$soc->fk_account:0));
$availability_id = (!empty($objectsrc->availability_id)?$objectsrc->availability_id:(!empty($soc->availability_id)?$soc->availability_id:0));
$demand_reason_id = (!empty($objectsrc->demand_reason_id)?$objectsrc->demand_reason_id:(!empty($soc->demand_reason_id)?$soc->demand_reason_id:0));
$remise_percent = (!empty($objectsrc->remise_percent)?$objectsrc->remise_percent:(!empty($soc->remise_percent)?$soc->remise_percent:0));
@@ -1411,6 +1418,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
{
$cond_reglement_id = $soc->cond_reglement_id;
$mode_reglement_id = $soc->mode_reglement_id;
+ $fk_account = $soc->fk_account;
$availability_id = $soc->availability_id;
$demand_reason_id = $soc->demand_reason_id;
$remise_percent = $soc->remise_percent;
@@ -1506,6 +1514,11 @@ if ($action == 'create' && $user->rights->commande->creer) {
$form->select_types_paiements($mode_reglement_id, 'mode_reglement_id');
print '
';
+ // Bank Account
+ print '| ' . $langs->trans('BankAccount') . ' | ';
+ $form->select_comptes($fk_account, 'fk_account', 0, '', 1);
+ print ' |
';
+
// Delivery delay
print '| ' . $langs->trans('AvailabilityPeriod') . ' | ';
$form->selectAvailabilityDelay($availability_id, 'availability_id', '', 1);
@@ -2120,7 +2133,24 @@ if ($action == 'create' && $user->rights->commande->creer) {
if ($mysoc->localtax2_assuj == "1" || $object->total_localtax2 != 0)
$rowspan ++;
- // Total HT
+ // Bank Account
+ print ' |
| ';
+ print '';
+ print ' | ';
+ if ($action == 'editbankaccount') {
+ $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'fk_account', 1);
+ } else {
+ $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'none');
+ }
+ print ' | ';
+ print '
';
+
+ // Total HT
print '| ' . $langs->trans('AmountHT') . ' | ';
print '' . price($object->total_ht, 1, '', 1, - 1, - 1, $conf->currency) . ' | ';
diff --git a/htdocs/compta/bank/treso.php b/htdocs/compta/bank/treso.php
index f6c59530605..8ae2974b33f 100644
--- a/htdocs/compta/bank/treso.php
+++ b/htdocs/compta/bank/treso.php
@@ -161,7 +161,8 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON f.fk_soc = s.rowid";
$sql.= " WHERE f.entity = ".$conf->entity;
$sql.= " AND f.paye = 0 AND f.fk_statut = 1"; // Not paid
- $sql.= " ORDER BY dlr ASC";
+ $sql.= " AND (f.fk_account IN (0, ".$acct->id.") OR f.fk_account IS NULL)"; // Id bank account of invoice
+ $sql.= " ORDER BY dlr ASC";
// Supplier invoices
$sql2= " SELECT 'invoice_supplier' as family, ff.rowid as objid, ff.ref_supplier as ref, (-1*ff.total_ttc) as total_ttc, ff.type, ff.date_lim_reglement as dlr,";
@@ -170,7 +171,8 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
$sql2.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON ff.fk_soc = s.rowid";
$sql2.= " WHERE ff.entity = ".$conf->entity;
$sql2.= " AND ff.paye = 0 AND fk_statut = 1"; // Not paid
- $sql2.= " ORDER BY dlr ASC";
+ $sql2.= " AND (ff.fk_account IN (0, ".$acct->id.") OR ff.fk_account IS NULL)"; // Id bank account of supplier invoice
+ $sql2.= " ORDER BY dlr ASC";
// Social contributions
$sql3= " SELECT 'social_contribution' as family, cs.rowid as objid, cs.libelle as ref, (-1*cs.amount) as total_ttc, ccs.libelle as type, cs.date_ech as dlr";
diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php
index e20173bf30c..29a25760886 100644
--- a/htdocs/compta/facture.php
+++ b/htdocs/compta/facture.php
@@ -302,6 +302,11 @@ else if ($action == 'setrevenuestamp' && $user->rights->facture->creer) {
dol_print_error($db, $object->error);
}
+// bank account
+else if ($action == 'setbankaccount' && $user->rights->facture->creer) {
+ $result=$object->setBankAccount(GETPOST('fk_account', 'int'));
+}
+
else if ($action == 'setremisepercent' && $user->rights->facture->creer) {
$object->fetch($id);
$result = $object->set_remise($user, $_POST['remise_percent']);
@@ -628,6 +633,7 @@ else if ($action == 'add' && $user->rights->facture->creer)
$object->fk_project = $_POST['projectid'];
$object->cond_reglement_id = $_POST['cond_reglement_id'];
$object->mode_reglement_id = $_POST['mode_reglement_id'];
+ $object->fk_account = GETPOST('fk_account', 'int');
$object->remise_absolue = $_POST['remise_absolue'];
$object->remise_percent = $_POST['remise_percent'];
@@ -670,6 +676,7 @@ else if ($action == 'add' && $user->rights->facture->creer)
$object->fk_project = $_POST['projectid'];
$object->cond_reglement_id = 0;
$object->mode_reglement_id = $_POST['mode_reglement_id'];
+ $object->fk_account = GETPOST('fk_account', 'int');
$object->remise_absolue = $_POST['remise_absolue'];
$object->remise_percent = $_POST['remise_percent'];
@@ -795,6 +802,7 @@ else if ($action == 'add' && $user->rights->facture->creer)
$object->fk_project = $_POST['projectid'];
$object->cond_reglement_id = ($_POST['type'] == 3?1:$_POST['cond_reglement_id']);
$object->mode_reglement_id = $_POST['mode_reglement_id'];
+ $object->fk_account = GETPOST('fk_account', 'int');
$object->amount = $_POST['amount'];
$object->remise_absolue = $_POST['remise_absolue'];
$object->remise_percent = $_POST['remise_percent'];
@@ -1886,6 +1894,7 @@ if ($action == 'create')
$cond_reglement_id = (! empty($objectsrc->cond_reglement_id)?$objectsrc->cond_reglement_id:(! empty($soc->cond_reglement_id)?$soc->cond_reglement_id:1));
$mode_reglement_id = (! empty($objectsrc->mode_reglement_id)?$objectsrc->mode_reglement_id:(! empty($soc->mode_reglement_id)?$soc->mode_reglement_id:0));
+ $fk_account = (! empty($objectsrc->fk_account)?$objectsrc->fk_account:(! empty($soc->fk_account)?$soc->fk_account:0));
$remise_percent = (! empty($objectsrc->remise_percent)?$objectsrc->remise_percent:(! empty($soc->remise_percent)?$soc->remise_percent:0));
$remise_absolue = (! empty($objectsrc->remise_absolue)?$objectsrc->remise_absolue:(! empty($soc->remise_absolue)?$soc->remise_absolue:0));
$dateinvoice = (empty($dateinvoice)?(empty($conf->global->MAIN_AUTOFILL_DATE)?-1:''):$dateinvoice);
@@ -1900,6 +1909,7 @@ if ($action == 'create')
{
$cond_reglement_id = $soc->cond_reglement_id;
$mode_reglement_id = $soc->mode_reglement_id;
+ $fk_account = $soc->fk_account;
$remise_percent = $soc->remise_percent;
$remise_absolue = 0;
$dateinvoice = (empty($dateinvoice)?(empty($conf->global->MAIN_AUTOFILL_DATE)?-1:''):$dateinvoice); // Do not set 0 here (0 for a date is 1970)
@@ -2215,6 +2225,11 @@ if ($action == 'create')
$form->select_types_paiements(isset($_POST['mode_reglement_id']) ? $_POST['mode_reglement_id'] : $mode_reglement_id, 'mode_reglement_id');
print '
';
+ // Bank Account
+ print '| ' . $langs->trans('BankAccount') . ' | ';
+ $form->select_comptes($fk_account, 'fk_account', 0, '', 1);
+ print ' |
';
+
// Project
if (! empty($conf->projet->enabled) && $socid > 0) {
$formproject = new FormProjets($db);
@@ -3166,6 +3181,26 @@ if ($action == 'create')
}
print '';
+ // Bank Account
+ print '| ';
+ print '';
+ print ' | ';
+ if ($action == 'editbankaccount')
+ {
+ $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'fk_account', 1);
+ }
+ else
+ {
+ $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'none');
+ }
+ print " | ";
+ print '
';
+
// Amount
print '| ' . $langs->trans('AmountHT') . ' | ';
print '' . price($object->total_ht, 1, '', 1, - 1, - 1, $conf->currency) . ' |
';
@@ -3428,7 +3463,7 @@ if ($action == 'create')
if ($resteapayer == 0) {
print '' . $langs->trans('DoPayment') . '
';
} else {
- print '';
+ print '';
}
}
}
diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php
index 7ef7162e985..1cfb5fe3725 100644
--- a/htdocs/compta/facture/class/facture.class.php
+++ b/htdocs/compta/facture/class/facture.class.php
@@ -103,6 +103,7 @@ class Facture extends CommonInvoice
var $cond_reglement_code; // Code in llx_c_paiement
var $mode_reglement_id; // Id in llx_c_paiement
var $mode_reglement_code; // Code in llx_c_paiement
+ var $fk_account; // Id of bank account
var $fk_bank; // Field to store bank id to use when payment mode is withdraw
var $modelpdf;
var $products=array(); // deprecated
@@ -239,6 +240,7 @@ class Facture extends CommonInvoice
$sql.= ", note_private";
$sql.= ", note_public";
$sql.= ", ref_client, ref_int";
+ $sql.= ", fk_account";
$sql.= ", fk_facture_source, fk_user_author, fk_projet";
$sql.= ", fk_cond_reglement, fk_mode_reglement, date_lim_reglement, model_pdf";
$sql.= ")";
@@ -256,6 +258,7 @@ class Facture extends CommonInvoice
$sql.= ",".($this->note_public?"'".$this->db->escape($this->note_public)."'":"null");
$sql.= ",".($this->ref_client?"'".$this->db->escape($this->ref_client)."'":"null");
$sql.= ",".($this->ref_int?"'".$this->db->escape($this->ref_int)."'":"null");
+ $sql.= ", ".($this->fk_account>0?$this->fk_account:'NULL');
$sql.= ",".($this->fk_facture_source?"'".$this->db->escape($this->fk_facture_source)."'":"null");
$sql.= ",".($user->id > 0 ? "'".$user->id."'":"null");
$sql.= ",".($this->fk_project?$this->fk_project:"null");
@@ -834,6 +837,7 @@ class Facture extends CommonInvoice
$sql.= ', f.note_private, f.note_public, f.fk_statut, f.paye, f.close_code, f.close_note, f.fk_user_author, f.fk_user_valid, f.model_pdf';
$sql.= ', f.fk_facture_source';
$sql.= ', f.fk_mode_reglement, f.fk_cond_reglement, f.fk_projet, f.extraparams';
+ $sql.= ', f.fk_account';
$sql.= ', p.code as mode_reglement_code, p.libelle as mode_reglement_libelle';
$sql.= ', c.code as cond_reglement_code, c.libelle as cond_reglement_libelle, c.libelle_facture as cond_reglement_libelle_doc';
$sql.= ' FROM '.MAIN_DB_PREFIX.'facture as f';
@@ -884,6 +888,7 @@ class Facture extends CommonInvoice
$this->cond_reglement_code = $obj->cond_reglement_code;
$this->cond_reglement = $obj->cond_reglement_libelle;
$this->cond_reglement_doc = $obj->cond_reglement_libelle_doc;
+ $this->fk_account = ($obj->fk_account>0)?$obj->fk_account:null;
$this->fk_project = $obj->fk_projet;
$this->fk_facture_source = $obj->fk_facture_source;
$this->note = $obj->note_private; // deprecated
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index 54ad75515f7..b8083ce32b2 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -1080,6 +1080,36 @@ abstract class CommonObject
}
+ /**
+ * Change the bank account
+ *
+ * @param int $fk_account Id of bank account
+ * @return int 1 if OK, 0 if KO
+ */
+ function setBankAccount($fk_account)
+ {
+ if (! $this->table_element) {
+ dol_syslog(get_class($this)."::setBankAccount was called on objet with property table_element not defined",LOG_ERR);
+ return -1;
+ }
+ if ($fk_account<0) $fk_account='NULL';
+ dol_syslog(get_class($this).'::setBankAccount('.$fk_account.')');
+
+ $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element;
+ $sql.= " SET fk_account = ".$fk_account;
+ $sql.= " WHERE rowid=".$this->id;
+
+ if ($this->db->query($sql)) {
+ $this->fk_account = ($fk_account=='NULL')?null:$fk_account;
+ return 1;
+ } else {
+ dol_syslog(get_class($this).'::setBankAccount Error '.$sql.' - '.$this->db->error());
+ $this->error=$this->db->error();
+ return 0;
+ }
+ }
+
+
/**
* Save a new position (field rang) for details lines.
* You can choose to set position for lines with already a position or lines without any position defined.
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index 1e7f0bb8246..d1b338176a4 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -2480,6 +2480,40 @@ class Form
}
}
+ /**
+ * Display form to select bank account
+ *
+ * @param string $page Page
+ * @param int $selected Id of bank account
+ * @param string $htmlname Name of select html field
+ * @param int $addempty 1=Add an empty value in list, 2=Add an empty value in list only if there is more than 2 entries.
+ * @return void
+ */
+ function formSelectAccount($page, $selected='', $htmlname='fk_account', $addempty=0)
+ {
+ global $langs;
+ if ($htmlname != "none") {
+ print '';
+ } else {
+ if ($selected) {
+ require_once DOL_DOCUMENT_ROOT .'/compta/bank/class/account.class.php';
+ $bankstatic=new Account($this->db);
+ $bankstatic->fetch($selected);
+ print $bankstatic->label.' ('.$bankstatic->currency_code.')';
+ } else {
+ print " ";
+ }
+ }
+ }
+
/**
* Return list of categories having choosed type
*
diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php
index b65fe31ceec..19432c09b78 100644
--- a/htdocs/fourn/class/fournisseur.commande.class.php
+++ b/htdocs/fourn/class/fournisseur.commande.class.php
@@ -74,6 +74,7 @@ class CommandeFournisseur extends CommonOrder
var $fk_project;
var $cond_reglement_id;
var $cond_reglement_code;
+ var $fk_account;
var $mode_reglement_id;
var $mode_reglement_code;
var $user_author_id;
@@ -126,6 +127,7 @@ class CommandeFournisseur extends CommonOrder
$sql.= " c.date_creation, c.date_valid, c.date_approve,";
$sql.= " c.fk_user_author, c.fk_user_valid, c.fk_user_approve,";
$sql.= " c.date_commande as date_commande, c.date_livraison as date_livraison, c.fk_cond_reglement, c.fk_mode_reglement, c.fk_projet as fk_project, c.remise_percent, c.source, c.fk_input_method,";
+ $sql.= " c.fk_account,";
$sql.= " c.note_private, c.note_public, c.model_pdf, c.extraparams,";
$sql.= " cm.libelle as methode_commande,";
$sql.= " cr.code as cond_reglement_code, cr.libelle as cond_reglement_libelle,";
@@ -180,6 +182,7 @@ class CommandeFournisseur extends CommonOrder
$this->cond_reglement_code = $obj->cond_reglement_code;
$this->cond_reglement = $obj->cond_reglement_libelle;
$this->cond_reglement_doc = $obj->cond_reglement_libelle;
+ $this->fk_account = $obj->fk_account;
$this->mode_reglement_id = $obj->fk_mode_reglement;
$this->mode_reglement_code = $obj->mode_reglement_code;
$this->mode_reglement = $obj->mode_reglement_libelle;
@@ -876,6 +879,7 @@ class CommandeFournisseur extends CommonOrder
$sql.= ", model_pdf";
$sql.= ", fk_mode_reglement";
$sql.= ", fk_cond_reglement";
+ $sql.= ", fk_account";
$sql.= ") ";
$sql.= " VALUES (";
$sql.= "''";
@@ -892,6 +896,7 @@ class CommandeFournisseur extends CommonOrder
$sql.= ", '".$conf->global->COMMANDE_SUPPLIER_ADDON_PDF."'";
$sql.= ", ".($this->mode_reglement_id > 0 ? $this->mode_reglement_id : 'null');
$sql.= ", ".($this->cond_reglement_id > 0 ? $this->cond_reglement_id : 'null');
+ $sql.= ", ".($this->fk_account>0?$this->fk_account:'NULL');
$sql.= ")";
dol_syslog(get_class($this)."::create", LOG_DEBUG);
diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php
index cb0a0abd17a..b01e3ee7891 100644
--- a/htdocs/fourn/class/fournisseur.facture.class.php
+++ b/htdocs/fourn/class/fournisseur.facture.class.php
@@ -79,6 +79,7 @@ class FactureFournisseur extends CommonInvoice
var $propalid;
var $cond_reglement_id;
var $cond_reglement_code;
+ var $fk_account;
var $mode_reglement_id;
var $mode_reglement_code;
@@ -174,6 +175,7 @@ class FactureFournisseur extends CommonInvoice
$sql.= ", fk_projet";
$sql.= ", fk_cond_reglement";
$sql.= ", fk_mode_reglement";
+ $sql.= ", fk_account";
$sql.= ", note_private";
$sql.= ", note_public";
$sql.= ", fk_user_author";
@@ -190,6 +192,7 @@ class FactureFournisseur extends CommonInvoice
$sql.= ", ".(isset($this->fk_project)?$this->fk_project:"null");
$sql.= ", ".(isset($this->cond_reglement_id)?$this->cond_reglement_id:"null");
$sql.= ", ".(isset($this->mode_reglement_id)?$this->mode_reglement_id:"null");
+ $sql.= ", ".($this->fk_account>0?$this->fk_account:'NULL');
$sql.= ", '".$this->db->escape($this->note_private)."'";
$sql.= ", '".$this->db->escape($this->note_public)."'";
$sql.= ", ".$user->id.",";
@@ -333,7 +336,8 @@ class FactureFournisseur extends CommonInvoice
$sql.= " t.fk_facture_source,";
$sql.= " t.fk_projet,";
$sql.= " t.fk_cond_reglement,";
- $sql.= " t.fk_mode_reglement,";
+ $sql.= " t.fk_account,";
+ $sql.= " t.fk_mode_reglement,";
$sql.= " t.date_lim_reglement,";
$sql.= " t.note_private,";
$sql.= " t.note_public,";
@@ -394,6 +398,7 @@ class FactureFournisseur extends CommonInvoice
$this->cond_reglement_code = $obj->cond_reglement_code;
$this->cond_reglement = $obj->cond_reglement_libelle;
$this->cond_reglement_doc = $obj->cond_reglement_libelle;
+ $this->fk_account = $obj->fk_account;
$this->mode_reglement_id = $obj->fk_mode_reglement;
$this->mode_reglement_code = $obj->mode_reglement_code;
$this->mode_reglement = $obj->mode_reglement_libelle;
diff --git a/htdocs/fourn/commande/fiche.php b/htdocs/fourn/commande/fiche.php
index 05e2fe8822f..dbac3c4230d 100644
--- a/htdocs/fourn/commande/fiche.php
+++ b/htdocs/fourn/commande/fiche.php
@@ -125,6 +125,11 @@ else if ($action == 'setmode' && $user->rights->fournisseur->commande->creer)
$result = $object->setPaymentMethods(GETPOST('mode_reglement_id','int'));
}
+// bank account
+else if ($action == 'setbankaccount' && $user->rights->fournisseur->commande->creer) {
+ $result=$object->setBankAccount(GETPOST('fk_account', 'int'));
+ }
+
// date de livraison
if ($action == 'setdate_livraison' && $user->rights->fournisseur->commande->creer)
{
@@ -776,6 +781,7 @@ else if ($action == 'add' && $user->rights->fournisseur->commande->creer)
$object->socid = $socid;
$object->cond_reglement_id = GETPOST('cond_reglement_id');
$object->mode_reglement_id = GETPOST('mode_reglement_id');
+ $object->fk_account = GETPOST('fk_account', 'int');
$object->note_private = GETPOST('note_private');
$object->note_public = GETPOST('note_public');
@@ -1116,6 +1122,11 @@ if ($action=="create")
$form->select_types_paiements(isset($_POST['mode_reglement_id'])?$_POST['mode_reglement_id']:$mode_reglement_id,'mode_reglement_id');
print '';
+ // Bank Account
+ print '| ' . $langs->trans('BankAccount') . ' | ';
+ $form->select_comptes($fk_account, 'fk_account', 0, '', 1);
+ print ' |
';
+
print '| '.$langs->trans('NotePublic').' | ';
print '';
$doleditor = new DolEditor('note_public', GETPOST('note_public'), '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70);
@@ -1381,6 +1392,23 @@ elseif (! empty($object->id))
}
print ' |
';
+ // Bank Account
+ print '| ';
+ print '';
+ print ' | ';
+ if ($action == 'editbankaccount') {
+ $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'fk_account', 1);
+ } else {
+ $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'none');
+ }
+ print ' | ';
+ print '
';
+
// Delivery date planed
print '';
print '| ';
diff --git a/htdocs/fourn/facture/fiche.php b/htdocs/fourn/facture/fiche.php
index 9cd11bd58bf..4e1c3246eff 100644
--- a/htdocs/fourn/facture/fiche.php
+++ b/htdocs/fourn/facture/fiche.php
@@ -215,6 +215,10 @@ else if ($action == 'setmode' && $user->rights->fournisseur->commande->creer)
$result = $object->setPaymentMethods(GETPOST('mode_reglement_id','int'));
}
+// bank account
+else if ($action == 'setbankaccount' && $user->rights->fournisseur->facture->creer) {
+ $result=$object->setBankAccount(GETPOST('fk_account', 'int'));
+}
// Set label
elseif ($action == 'setlabel' && $user->rights->fournisseur->facture->creer)
@@ -305,6 +309,7 @@ elseif ($action == 'add' && $user->rights->fournisseur->facture->creer)
$object->note_private = GETPOST('note_private');
$object->cond_reglement_id = GETPOST('cond_reglement_id');
$object->mode_reglement_id = GETPOST('mode_reglement_id');
+ $object->fk_account = GETPOST('fk_account', 'int');
$object->fk_project = ($tmpproject > 0) ? $tmpproject : null;
// Auto calculation of date due if not filled by user
@@ -1164,6 +1169,7 @@ if ($action == 'create')
$soc = $objectsrc->thirdparty;
$cond_reglement_id = (!empty($objectsrc->cond_reglement_id)?$objectsrc->cond_reglement_id:(!empty($soc->cond_reglement_supplier_id)?$soc->cond_reglement_supplier_id:1));
$mode_reglement_id = (!empty($objectsrc->mode_reglement_id)?$objectsrc->mode_reglement_id:(!empty($soc->mode_reglement_supplier_id)?$soc->mode_reglement_supplier_id:0));
+ $fk_account = (! empty($objectsrc->fk_account)?$objectsrc->fk_account:(! empty($soc->fk_account)?$soc->fk_account:0));
$remise_percent = (!empty($objectsrc->remise_percent)?$objectsrc->remise_percent:(!empty($soc->remise_percent)?$soc->remise_percent:0));
$remise_absolue = (!empty($objectsrc->remise_absolue)?$objectsrc->remise_absolue:(!empty($soc->remise_absolue)?$soc->remise_absolue:0));
$dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE)?-1:'';
@@ -1178,6 +1184,7 @@ if ($action == 'create')
{
$cond_reglement_id = $societe->cond_reglement_supplier_id;
$mode_reglement_id = $societe->mode_reglement_supplier_id;
+ $fk_account = $societe->fk_account;
$datetmp=dol_mktime(12,0,0,$_POST['remonth'],$_POST['reday'],$_POST['reyear']);
$dateinvoice=($datetmp==''?(empty($conf->global->MAIN_AUTOFILL_DATE)?-1:''):$datetmp);
$datetmp=dol_mktime(12,0,0,$_POST['echmonth'],$_POST['echday'],$_POST['echyear']);
@@ -1320,6 +1327,11 @@ if ($action == 'create')
$form->select_types_paiements(isset($_POST['mode_reglement_id'])?$_POST['mode_reglement_id']:$mode_reglement_id,'mode_reglement_id');
print ' | ';
+ // Bank Account
+ print '| '.$langs->trans('BankAccount').' | ';
+ $form->select_comptes($fk_account, 'fk_account', 0, '', 1);
+ print ' | ';
+
// Project
if (! empty($conf->projet->enabled))
{
@@ -1776,6 +1788,23 @@ else
}
print '';
+ // Bank Account
+ print '| ';
+ print '';
+ print ' | ';
+ if ($action == 'editbankaccount') {
+ $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'fk_account', 1);
+ } else {
+ $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'none');
+ }
+ print " | ";
+ print ' ';
+
// Status
$alreadypaid=$object->getSommePaiement();
print '| '.$langs->trans('Status').' | '.$object->getLibStatut(4,$alreadypaid).' | ';
@@ -2131,7 +2160,7 @@ else
// Make payments
if ($action != 'edit' && $object->statut == 1 && $object->paye == 0 && $user->societe_id == 0)
{
- print ''.$langs->trans('DoPayment').''; // must use facid because id is for payment id not invoice
+ print ''.$langs->trans('DoPayment').''; // must use facid because id is for payment id not invoice
}
// Classify paid
diff --git a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql
index 19b820d964c..83bff51229a 100644
--- a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql
+++ b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql
@@ -97,6 +97,8 @@ ALTER TABLE llx_product_price ADD CONSTRAINT fk_product_price_user_author FOREI
ALTER TABLE llx_product_price ADD INDEX idx_product_price_fk_product (fk_product);
ALTER TABLE llx_product_price ADD CONSTRAINT fk_product_price_product FOREIGN KEY (fk_product) REFERENCES llx_product (rowid);
+ALTER TABLE llx_commande_fournisseur ADD COLUMN fk_account integer AFTER date_livraison;
+ALTER TABLE llx_facture_fourn ADD COLUMN fk_account integer AFTER fk_projet;
-- Fiscal years
create table llx_accounting_fiscalyear
diff --git a/htdocs/install/mysql/tables/llx_commande_fournisseur.sql b/htdocs/install/mysql/tables/llx_commande_fournisseur.sql
index 51e57452397..d8076c1c06c 100644
--- a/htdocs/install/mysql/tables/llx_commande_fournisseur.sql
+++ b/htdocs/install/mysql/tables/llx_commande_fournisseur.sql
@@ -55,6 +55,7 @@ create table llx_commande_fournisseur
model_pdf varchar(255),
date_livraison date default NULL,
+ fk_account integer, -- bank account
fk_cond_reglement integer, -- condition de reglement
fk_mode_reglement integer, -- mode de reglement
fk_input_method integer default 0,
diff --git a/htdocs/install/mysql/tables/llx_facture_fourn.sql b/htdocs/install/mysql/tables/llx_facture_fourn.sql
index c980d43e40f..2bb85f8400e 100644
--- a/htdocs/install/mysql/tables/llx_facture_fourn.sql
+++ b/htdocs/install/mysql/tables/llx_facture_fourn.sql
@@ -58,6 +58,7 @@ create table llx_facture_fourn
fk_facture_source integer, -- facture origine si facture avoir
fk_projet integer, -- projet auquel est associee la facture
+ fk_account integer, -- bank account
fk_cond_reglement integer, -- condition de reglement (30 jours, fin de mois ...)
fk_mode_reglement integer, -- mode de reglement (CHQ, VIR, ...)
date_lim_reglement date, -- date limite de reglement
|