diff --git a/htdocs/compta/bank/class/paymentvarious.class.php b/htdocs/compta/bank/class/paymentvarious.class.php
index 1d0568c8064..45ae8d5dd95 100644
--- a/htdocs/compta/bank/class/paymentvarious.class.php
+++ b/htdocs/compta/bank/class/paymentvarious.class.php
@@ -30,8 +30,9 @@ require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php';
*/
class PaymentVarious extends CommonObject
{
- //public $element='payment_various'; //!< Id that identify managed objects
- //public $table_element='payment_various'; //!< Name of table without prefix where object is stored
+ public $element='variouspayment'; //!< Id that identify managed objects
+ public $table_element='payment_various'; //!< Name of table without prefix where object is stored
+ public $picto = 'bill';
var $tms;
var $datep;
@@ -42,6 +43,7 @@ class PaymentVarious extends CommonObject
var $num_payment;
var $label;
var $accountancy_code;
+ var $fk_project;
var $fk_bank;
var $fk_user_author;
var $fk_user_modif;
@@ -96,6 +98,7 @@ class PaymentVarious extends CommonObject
$sql.= " label='".$this->db->escape($this->label)."',";
$sql.= " note='".$this->db->escape($this->note)."',";
$sql.= " accountancy_code='".$this->db->escape($this->accountancy_code)."',";
+ $sql.= " fk_projet='".$this->db->escape($this->fk_project)."',";
$sql.= " fk_bank=".($this->fk_bank > 0 ? $this->fk_bank:"null").",";
$sql.= " fk_user_author=".$this->fk_user_author.",";
$sql.= " fk_user_modif=".$this->fk_user_modif;
@@ -154,6 +157,7 @@ class PaymentVarious extends CommonObject
$sql.= " v.label,";
$sql.= " v.note,";
$sql.= " v.accountancy_code,";
+ $sql.= " v.fk_projet as fk_project,";
$sql.= " v.fk_bank,";
$sql.= " v.fk_user_author,";
$sql.= " v.fk_user_modif,";
@@ -185,6 +189,7 @@ class PaymentVarious extends CommonObject
$this->label = $obj->label;
$this->note = $obj->note;
$this->accountancy_code = $obj->accountancy_code;
+ $this->fk_project = $obj->fk_project;
$this->fk_bank = $obj->fk_bank;
$this->fk_user_author = $obj->fk_user_author;
$this->fk_user_modif = $obj->fk_user_modif;
@@ -317,6 +322,7 @@ class PaymentVarious extends CommonObject
if ($this->note) $sql.= ", note";
$sql.= ", label";
$sql.= ", accountancy_code";
+ $sql.= ", fk_projet";
$sql.= ", fk_user_author";
$sql.= ", datec";
$sql.= ", fk_bank";
@@ -451,6 +457,63 @@ class PaymentVarious extends CommonObject
}
+ /**
+ * Retourne le libelle du statut
+ *
+ * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto
+ * @return string Libelle
+ */
+ function getLibStatut($mode=0)
+ {
+ return $this->LibStatut($this->statut,$mode);
+ }
+
+ /**
+ * Renvoi le libelle d'un statut donne
+ *
+ * @param int $statut Id status
+ * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto
+ * @return string Libelle
+ */
+ function LibStatut($statut,$mode=0)
+ {
+ global $langs;
+
+ if ($mode == 0)
+ {
+ return $langs->trans($this->statuts[$statut]);
+ }
+ if ($mode == 1)
+ {
+ return $langs->trans($this->statuts_short[$statut]);
+ }
+ if ($mode == 2)
+ {
+ if ($statut==0) return img_picto($langs->trans($this->statuts_short[$statut]),'statut0').' '.$langs->trans($this->statuts_short[$statut]);
+ if ($statut==1) return img_picto($langs->trans($this->statuts_short[$statut]),'statut4').' '.$langs->trans($this->statuts_short[$statut]);
+ if ($statut==2) return img_picto($langs->trans($this->statuts_short[$statut]),'statut6').' '.$langs->trans($this->statuts_short[$statut]);
+ }
+ if ($mode == 3)
+ {
+ if ($statut==0 && ! empty($this->statuts_short[$statut])) return img_picto($langs->trans($this->statuts_short[$statut]),'statut0');
+ if ($statut==1 && ! empty($this->statuts_short[$statut])) return img_picto($langs->trans($this->statuts_short[$statut]),'statut4');
+ if ($statut==2 && ! empty($this->statuts_short[$statut])) return img_picto($langs->trans($this->statuts_short[$statut]),'statut6');
+ }
+ if ($mode == 4)
+ {
+ if ($statut==0 && ! empty($this->statuts_short[$statut])) return img_picto($langs->trans($this->statuts_short[$statut]),'statut0').' '.$langs->trans($this->statuts[$statut]);
+ if ($statut==1 && ! empty($this->statuts_short[$statut])) return img_picto($langs->trans($this->statuts_short[$statut]),'statut4').' '.$langs->trans($this->statuts[$statut]);
+ if ($statut==2 && ! empty($this->statuts_short[$statut])) return img_picto($langs->trans($this->statuts_short[$statut]),'statut6').' '.$langs->trans($this->statuts[$statut]);
+ }
+ if ($mode == 5)
+ {
+ if ($statut==0 && ! empty($this->statuts_short[$statut])) return $langs->trans($this->statuts_short[$statut]).' '.img_picto($langs->trans($this->statuts_short[$statut]),'statut0');
+ if ($statut==1 && ! empty($this->statuts_short[$statut])) return $langs->trans($this->statuts_short[$statut]).' '.img_picto($langs->trans($this->statuts_short[$statut]),'statut4');
+ if ($statut==2 && ! empty($this->statuts_short[$statut])) return $langs->trans($this->statuts_short[$statut]).' '.img_picto($langs->trans($this->statuts_short[$statut]),'statut6');
+ }
+ }
+
+
/**
* Send name clicable (with possibly the picto)
*
diff --git a/htdocs/compta/bank/various_payment/card.php b/htdocs/compta/bank/various_payment/card.php
index e16c822db9b..4c57ab5f324 100644
--- a/htdocs/compta/bank/various_payment/card.php
+++ b/htdocs/compta/bank/various_payment/card.php
@@ -29,6 +29,11 @@ require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php';
if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingjournal.class.php';
+if (! empty($conf->projet->enabled))
+{
+ require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
+ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
+}
$langs->loadLangs(array("compta", "banks", "bills", "users", "accountancy"));
@@ -44,6 +49,7 @@ $sens=GETPOST("sens","int");
$amount=GETPOST("amount");
$paymenttype=GETPOST("paymenttype");
$accountancy_code=GETPOST("accountancy_code","int");
+$projectid = (GETPOST('projectid') ? GETPOST('projectid', 'int') : 0);
// Security check
$socid = GETPOST("socid","int");
@@ -67,6 +73,13 @@ if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'e
if (empty($reshook))
{
+ // Link to a project
+ if ($action == 'classin' && $user->rights->banque->modifier)
+ {
+ $object->fetch($id);
+ $object->setProject(GETPOST('projectid'));
+ }
+
if ($cancel)
{
if ($action != 'addlink')
@@ -98,6 +111,7 @@ if (empty($reshook))
$object->fk_user_author=$user->id;
$object->accountancy_code=GETPOST("accountancy_code") > 0 ? GETPOST("accountancy_code","int") : "";
$object->sens=GETPOST('sens');
+ $object->fk_project= GETPOST('fk_project');
if (empty($datep) || empty($datev))
{
@@ -205,6 +219,7 @@ llxHeader("",$langs->trans("VariousPayment"));
$form = new Form($db);
if (! empty($conf->accounting->enabled)) $formaccounting = New FormAccounting($db);
+if (! empty($conf->projet->enabled)) $formproject = new FormProjets($db);
if ($id)
{
@@ -306,6 +321,21 @@ if ($action == 'create')
print '';
}
+ // Project
+ if (! empty($conf->projet->enabled))
+ {
+ $formproject=new FormProjets($db);
+
+ // Associated project
+ $langs->load("projects");
+
+ print '
| '.$langs->trans("Project").' | ';
+
+ $numproject=$formproject->select_projects(-1, $projectid,'fk_project',0,0,1,1);
+
+ print ' |
';
+ }
+
// Other attributes
$parameters=array();
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
@@ -333,19 +363,52 @@ if ($action == 'create')
if ($id)
{
-
$head=various_payment_prepare_head($object);
- dol_fiche_head($head, 'card', $langs->trans("VariousPayment"), 0, 'payment');
-
- print '';
+ dol_fiche_head($head, 'card', $langs->trans("VariousPayment"), -1, 'payment');
+ $morehtmlref='';
+ // Project
+ if (! empty($conf->projet->enabled))
+ {
+ $langs->load("projects");
+ $morehtmlref.=$langs->trans('Project') . ' ';
+ if ($user->rights->tax->charges->creer)
+ {
+ if ($action != 'classify')
+ $morehtmlref.='
' . img_edit($langs->transnoentitiesnoconv('SetProject')) . ' : ';
+ if ($action == 'classify') {
+ //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1);
+ $morehtmlref.='
';
+ } else {
+ $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1);
+ }
+ } else {
+ if (! empty($object->fk_project)) {
+ $proj = new Project($db);
+ $proj->fetch($object->fk_project);
+ $morehtmlref.='
';
+ $morehtmlref.=$proj->ref;
+ $morehtmlref.='';
+ } else {
+ $morehtmlref.='';
+ }
+ }
+ }
+ $morehtmlref.='
';
$linkback = ''.$langs->trans("BackToList").'';
- print "";
- print '| '.$langs->trans("Ref").' | ';
- print $form->showrefnav($object, 'id', $linkback, 1, 'rowid', 'ref', '');
- print ' |
';
+ dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', $morehtmlref, '', 0, '', $morehtmlright);
+
+ print '';
+ print '
';
+
+ print '
';
// Label
print '| '.$langs->trans("Label").' | '.$object->label.' |
';
@@ -404,6 +467,11 @@ if ($id)
print '
';
+ print '
';
+ print '';
+
+ print '';
+
dol_fiche_end();
diff --git a/htdocs/compta/bank/various_payment/index.php b/htdocs/compta/bank/various_payment/index.php
index 42558d11635..48f37d24235 100644
--- a/htdocs/compta/bank/various_payment/index.php
+++ b/htdocs/compta/bank/various_payment/index.php
@@ -243,7 +243,7 @@ if ($result)
$accountingjournal = new AccountingJournal($db);
$accountingjournal->fetch($obj->accountancy_journal);
- $accountstatic->accountancy_journal = $accountingjournal->code;
+ $accountstatic->accountancy_journal = $accountingjournal->getNomUrl(0,1,1,'',1);
}
$accountstatic->label=$obj->blabel;
diff --git a/htdocs/langs/en_US/banks.lang b/htdocs/langs/en_US/banks.lang
index 46222fca80c..d261fe8a53d 100644
--- a/htdocs/langs/en_US/banks.lang
+++ b/htdocs/langs/en_US/banks.lang
@@ -156,4 +156,5 @@ DocumentModelBan=Template to print a page with BAN information.
NewVariousPayment=New miscellaneous payments
VariousPayment=Miscellaneous payments
VariousPayments=Miscellaneous payments
-ShowVariousPayment=Show miscellaneous payments
+ShowVariousPayment=Show miscellaneous payments
+AddVariousPayment=Add miscellaneous payments
\ No newline at end of file
diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang
index 8b380645f73..92282fd29f0 100644
--- a/htdocs/langs/en_US/projects.lang
+++ b/htdocs/langs/en_US/projects.lang
@@ -88,6 +88,7 @@ ListShippingAssociatedProject=List of shippings associated with the project
ListFichinterAssociatedProject=List of interventions associated with the project
ListExpenseReportsAssociatedProject=List of expense reports associated with the project
ListDonationsAssociatedProject=List of donations associated with the project
+ListVariousPaymentsAssociatedProject=List of various payments associated with the project
ListActionsAssociatedProject=List of events associated with the project
ListTaskTimeUserProject=List of time consumed on tasks of project
ActivityOnProjectToday=Activity on project today
diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php
index bda8d793840..0dcb710cfb5 100644
--- a/htdocs/projet/element.php
+++ b/htdocs/projet/element.php
@@ -51,6 +51,7 @@ if (! empty($conf->don->enabled)) require_once DOL_DOCUMENT_ROOT.'/don/class/d
if (! empty($conf->loan->enabled)) require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
if (! empty($conf->stock->enabled)) require_once DOL_DOCUMENT_ROOT.'/product/stock/class/mouvementstock.class.php';
if (! empty($conf->tax->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php';
+if (! empty($conf->banque->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/paymentvarious.class.php';
$langs->load("projects");
$langs->load("companies");
@@ -439,6 +440,19 @@ $listofreferent=array(
'datefieldname'=>'datem',
'disableamount'=>0,
'test'=>($conf->stock->enabled && $user->rights->stock->mouvement->lire && ! empty($conf->global->STOCK_MOVEMENT_INTO_PROJECT_OVERVIEW))),
+'variouspayment'=>array(
+ 'name'=>"VariousPayments",
+ 'title'=>"ListVariousPaymentsAssociatedProject",
+ 'class'=>'PaymentVarious',
+ 'table'=>'payment_various',
+ 'datefieldname'=>'datev',
+ 'margin'=>'minus',
+ 'disableamount'=>0,
+ 'urlnew'=>DOL_URL_ROOT.'/compta/bank_various_payment/card.php?action=create&projectid='.$id.'&socid='.$socid,
+ 'lang'=>'banks',
+ 'buttonnew'=>'AddVariousPayment',
+ 'testnew'=>$user->rights->banque->modifier,
+ 'test'=>$conf->banque->enabled && $user->rights->banque->lire),
/* No need for this, available on dedicated tab "Agenda/Events"
'agenda'=>array(
'name'=>"Agenda",
@@ -769,6 +783,7 @@ foreach ($listofreferent as $key => $value)
// Thirdparty or user
print '';
if (in_array($tablename, array('projet_task')) && $key == 'project_task') print ''; // if $key == 'project_task', we don't want details per user
+ elseif (in_array($tablename, array('payment_various'))) print ''; // if $key == 'payment_various', we don't have any thirdparty
elseif (in_array($tablename, array('expensereport_det','don','projet_task','stock_mouvement'))) print $langs->trans("User");
else print $langs->trans("ThirdParty");
print ' | ';
@@ -898,7 +913,8 @@ foreach ($listofreferent as $key => $value)
$date=''; $total_time_by_line = null;
if ($tablename == 'expensereport_det') $date = $element->date; // No draft status on lines
elseif ($tablename == 'stock_mouvement') $date = $element->datem;
- if ($tablename == 'chargesociales') $date = $element->date_ech;
+ elseif ($tablename == 'payment_various') $date = $element->datev;
+ elseif ($tablename == 'chargesociales') $date = $element->date_ech;
elseif (! empty($element->status) || ! empty($element->statut) || ! empty($element->fk_status))
{
if ($tablename == 'don') $date = $element->datedon;
@@ -909,7 +925,7 @@ foreach ($listofreferent as $key => $value)
elseif ($tablename == 'supplier_proposal') $date=$element->date_validation; // There is no other date for this
elseif ($tablename == 'fichinter') $date=$element->datev; // There is no other date for this
elseif ($tablename == 'projet_task') $date=''; // We show no date. Showing date of beginning of task make user think it is date of time consumed
- else
+ else
{
$date=$element->date; // invoice, ...
if (empty($date)) $date=$element->date_contrat;
@@ -963,7 +979,7 @@ foreach ($listofreferent as $key => $value)
{
$total_ht_by_line=null;
$othermessage='';
- if ($tablename == 'don' || $tablename == 'chargesociales') $total_ht_by_line=$element->amount;
+ if ($tablename == 'don' || $tablename == 'chargesociales' || $tablename == 'payment_various') $total_ht_by_line=$element->amount;
else if($tablename == 'fichinter') $total_ht_by_line=$element->getAmount();
elseif ($tablename == 'stock_mouvement') $total_ht_by_line=$element->price*abs($element->qty);
elseif (in_array($tablename, array('projet_task')))
@@ -1004,7 +1020,7 @@ foreach ($listofreferent as $key => $value)
if (empty($value['disableamount']))
{
$total_ttc_by_line=null;
- if ($tablename == 'don' || $tablename == 'chargesociales') $total_ttc_by_line=$element->amount;
+ if ($tablename == 'don' || $tablename == 'chargesociales' || $tablename == 'payment_various') $total_ttc_by_line=$element->amount;
else if($tablename == 'fichinter') $total_ttc_by_line=$element->getAmount();
elseif ($tablename == 'stock_mouvement') $total_ttc_by_line=$element->price*abs($element->qty);
elseif ($tablename == 'projet_task')