Browse Source

Add project on various_payment

Alexandre SPANGARO 7 years ago
parent
commit
84fcbb724e

+ 65 - 2
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)
 	 *

+ 76 - 8
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 '</td></tr>';
 	}
 
+	// Project
+	if (! empty($conf->projet->enabled))
+	{
+		$formproject=new FormProjets($db);
+
+		// Associated project
+		$langs->load("projects");
+
+		print '<tr><td>'.$langs->trans("Project").'</td><td>';
+
+		$numproject=$formproject->select_projects(-1, $projectid,'fk_project',0,0,1,1);
+
+		print '</td></tr>';
+	}
+
 	// 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 '<table class="border" width="100%">';
+	dol_fiche_head($head, 'card', $langs->trans("VariousPayment"), -1, 'payment');
 
+	$morehtmlref='<div class="refidno">';
+	// Project
+	if (! empty($conf->projet->enabled))
+	{
+		$langs->load("projects");
+		$morehtmlref.=$langs->trans('Project') . ' ';
+		if ($user->rights->tax->charges->creer)
+		{
+			if ($action != 'classify')
+				$morehtmlref.='<a href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
+				if ($action == 'classify') {
+					//$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1);
+					$morehtmlref.='<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">';
+					$morehtmlref.='<input type="hidden" name="action" value="classin">';
+					$morehtmlref.='<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
+					$morehtmlref.=$formproject->select_projects(0, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1);
+					$morehtmlref.='<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">';
+					$morehtmlref.='</form>';
+				} 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.='<a href="'.DOL_URL_ROOT.'/projet/card.php?id=' . $object->fk_project . '" title="' . $langs->trans('ShowProject') . '">';
+				$morehtmlref.=$proj->ref;
+				$morehtmlref.='</a>';
+			} else {
+				$morehtmlref.='';
+			}
+		}
+	}
+	$morehtmlref.='</div>';
 	$linkback = '<a href="'.DOL_URL_ROOT.'/compta/bank/various_payment/index.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>';
 
-	print "<tr>";
-	print '<td class="titlefield">'.$langs->trans("Ref").'</td><td>';
-	print $form->showrefnav($object, 'id', $linkback, 1, 'rowid', 'ref', '');
-	print '</td></tr>';
+	dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', $morehtmlref, '', 0, '', $morehtmlright);
+
+	print '<div class="fichecenter">';
+	print '<div class="underbanner clearboth"></div>';
+
+	print '<table class="border" width="100%">';
 
 	// Label
 	print '<tr><td>'.$langs->trans("Label").'</td><td>'.$object->label.'</td></tr>';
@@ -404,6 +467,11 @@ if ($id)
 
 	print '</table>';
 
+	print '</div>';
+	print '</div>';
+
+	print '<div class="clearboth"></div>';
+
 	dol_fiche_end();
 
 

+ 1 - 1
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;

+ 2 - 1
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

+ 1 - 0
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

+ 20 - 4
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 '<td>';
 		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 '</td>';
@@ -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')