Browse Source

NEW Moved code that deals with bank categories to BankCateg. Created BankCateg::fetchAll function

Also replaced spaces with tabs and applied PSR-2 beautifier to the code
Marcos García de La Fuente 9 years ago
parent
commit
0fd9518ad0

+ 10 - 26
htdocs/compta/bank/account.php

@@ -5,7 +5,7 @@
  * Copyright (C) 2004      Christophe Combelles <ccomb@free.fr>
  * Copyright (C) 2005-2012 Regis Houssin        <regis.houssin@capnetworks.com>
  * Copyright (C) 2010-2011 Juanjo Menent        <jmenent@@2byte.es>
- * Copyright (C) 2012-2014 Marcos García        <marcosgdf@gmail.com>
+ * Copyright (C) 2012-2016 Marcos García        <marcosgdf@gmail.com>
  * Copyright (C) 2011-2015 Alexandre Spangaro   <aspangaro.dolibarr@gmail.com>
  * Copyright (C) 2015      Florian Henry	    <florian.henry@open-concept.pro>
  *
@@ -209,29 +209,13 @@ if ($id > 0 || ! empty($ref))
 
 	$result=$object->fetch($id, $ref);
 
-	// Chargement des categories bancaires dans $options
-	$nbcategories=0;
+	// Load bank groups
+	require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/bankcateg.class.php';
+	$bankcateg = new BankCateg($db);
+	$options = array();
 
-	$sql = "SELECT rowid, label";
-	$sql.= " FROM ".MAIN_DB_PREFIX."bank_categ";
-	$sql.= " WHERE entity = ".$conf->entity;
-	$sql.= " ORDER BY label";
-
-	$result = $db->query($sql);
-	if ($result)
-	{
-		$var=True;
-		$num = $db->num_rows($result);
-		$i = 0;
-		$options = '<option value="0" selected>&nbsp;</option>';
-		while ($i < $num)
-		{
-			$obj = $db->fetch_object($result);
-			$options.= '<option value="'.$obj->rowid.'">'.$obj->label.'</option>'."\n";
-			$nbcategories++;
-			$i++;
-		}
-		$db->free($result);
+	foreach ($bankcateg->fetchAll() as $bankcategory) {
+		$options[$bankcategory->id] = $bankcategory->label;
 	}
 
 	// Definition de sql_rech et param
@@ -494,9 +478,9 @@ if ($id > 0 || ! empty($ref))
 		print '<input name="num_chq" class="flat" type="text" size="4" value="'.GETPOST("num_chq").'"></td>';
 		print '<td colspan="2">';
 		print '<input name="label" class="flat" type="text" size="24"  value="'.GETPOST("label").'">';
-		if ($nbcategories)
-		{
-			print '<br>'.$langs->trans("Rubrique").': <select class="flat" name="cat1">'.$options.'</select>';
+		if ($options) {
+			print '<br>'.$langs->trans("Rubrique").': ';
+			print Form::selectarray('cat1', $options, GETPOST('cat1'), 1);
 		}
 		print '</td>';
 		print '<td align=right><input name="debit" class="flat" type="text" size="4" value="'.GETPOST("debit").'"></td>';

+ 43 - 90
htdocs/compta/bank/categ.php

@@ -4,6 +4,7 @@
  * Copyright (C) 2005-2009 Regis Houssin        <regis.houssin@capnetworks.com>
  * Copyright (C) 2013      Charles-Fr BENKE     <charles.fr@benke.fr>
  * Copyright (C) 2015      Jean-François Ferry	<jfefe@aternatik.fr>
+ * Copyright (C) 2016      Marcos García        <marcosgdf@gmail.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -27,6 +28,7 @@
 
 require('../../main.inc.php');
 require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
+require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/bankcateg.class.php';
 
 $langs->load("banks");
 $langs->load("categories");
@@ -36,71 +38,40 @@ $action=GETPOST('action');
 if (!$user->rights->banque->configurer)
   accessforbidden();
 
-
+$bankcateg = new BankCateg($db);
+$categid = GETPOST('categid');
+$label = GETPOST("label");
 
 /*
  * Add category
  */
 if (GETPOST('add'))
 {
-	if (GETPOST("label"))
-	{
-		$sql = "INSERT INTO ".MAIN_DB_PREFIX."bank_categ (";
-		$sql.= "label";
-		$sql.= ", entity";
-		$sql.= ") VALUES (";
-		$sql.= "'".$db->escape(GETPOST("label"))."'";
-		$sql.= ", ".$conf->entity;
-		$sql.= ")";
-
-		$result = $db->query($sql);
-		if (!$result)
-		{
-			dol_print_error($db);
-		}
+	if ($label) {
+		$bankcateg = new BankCateg($db);
+		$bankcateg->label = GETPOST('label');
+		$bankcateg->create($user);
 	}
 }
 
-/*
- * Update category
- */
-if (GETPOST('update'))
-{
-	if (GETPOST("label"))
-	{
-		$sql = "UPDATE ".MAIN_DB_PREFIX."bank_categ ";
-		$sql.= "set label='".$db->escape(GETPOST("label"))."'";
-		$sql.= " WHERE rowid = '".GETPOST('categid')."'";
-		$sql.= " AND entity = ".$conf->entity;
-
-		$result = $db->query($sql);
-		if (!$result)
-		{
-			dol_print_error($db);
+if ($categid) {
+	$bankcateg = new BankCateg($db);
+
+	if ($bankcateg->fetch($categid) > 0) {
+
+		//Update category
+		if (GETPOST('update') && $label) {
+
+			$bankcateg->label = $label;
+			$bankcateg->update($user);
 		}
-	}
-}
-/*
-* Action suppression catégorie
-*/
-if ($action == 'delete')
-{
-	if (GETPOST('categid'))
-	{
-		$sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_categ";
-		$sql.= " WHERE rowid = '".GETPOST('categid')."'";
-		$sql.= " AND entity = ".$conf->entity;
-
-		$result = $db->query($sql);
-		if (!$result)
-		{
-			dol_print_error($db);
+		//Delete category
+		if ($action == 'delete') {
+			$bankcateg->delete($user);
 		}
 	}
 }
 
-
-
 /*
  * View
  */
@@ -118,44 +89,28 @@ print '<tr class="liste_titre">';
 print '<td>'.$langs->trans("Ref").'</td><td colspan="2">'.$langs->trans("Label").'</td>';
 print "</tr>\n";
 
-$sql = "SELECT rowid, label";
-$sql.= " FROM ".MAIN_DB_PREFIX."bank_categ";
-$sql.= " WHERE entity = ".$conf->entity;
-$sql.= " ORDER BY label";
-
-$result = $db->query($sql);
-if ($result)
-{
-	$num = $db->num_rows($result);
-	$i = 0; $total = 0;
-
-	$var=True;
-	while ($i < $num)
-	{
-		$objp = $db->fetch_object($result);
-		$var=!$var;
-		print "<tr ".$bc[$var].">";
-		print '<td><a href="'.DOL_URL_ROOT.'/compta/bank/budget.php?bid='.$objp->rowid.'">'.$objp->rowid.'</a></td>';
-		if (GETPOST("action") == 'edit' && GETPOST("categid")== $objp->rowid)
-		{
-			print "<td colspan=2>";
-			print '<input type="hidden" name="categid" value="'.$objp->rowid.'">';
-			print '<input name="label" type="text" size=45 value="'.$objp->label.'">';
-			print '<input type="submit" name="update" class="button" value="'.$langs->trans("Edit").'">';
-
-			print "</td>";
-		}
-		else
-		{
-			print "<td >".$objp->label."</td>";
-			print '<td style="text-align: center;">';
-			print '<a href="'.$_SERVER["PHP_SELF"].'?categid='.$objp->rowid.'&amp;action=edit">'.img_edit().'</a>&nbsp;&nbsp;';
-			print '<a href="'.$_SERVER["PHP_SELF"].'?categid='.$objp->rowid.'&amp;action=delete">'.img_delete().'</a></td>';
-		}
-		print "</tr>";
-		$i++;
+$var = true;
+
+foreach ($bankcateg->fetchAll() as $category) {
+	$var = !$var;
+	print "<tr ".$bc[$var].">";
+	print '<td><a href="'.DOL_URL_ROOT.'/compta/bank/budget.php?bid='.$category->id.'">'.$category->id.'</a></td>';
+
+	if ($action == 'edit' && $categid == $category->id) {
+		print "<td colspan=2>";
+		print '<input type="hidden" name="categid" value="'.$category->id.'">';
+		print '<input name="label" type="text" size=45 value="'.$category->label.'">';
+		print ' <input type="submit" name="update" class="button" value="'.$langs->trans("Edit").'">';
+
+		print "</td>";
+	} else {
+		print "<td >".$category->label."</td>";
+		print '<td style="text-align: center;">';
+		print '<a href="'.$_SERVER["PHP_SELF"].'?categid='.$category->id.'&amp;action=edit">'.img_edit().'</a>&nbsp;&nbsp;';
+		print '<a href="'.$_SERVER["PHP_SELF"].'?categid='.$category->id.'&amp;action=delete">'.img_delete().'</a></td>';
 	}
-	$db->free($result);
+
+	print "</tr>";
 }
 
 
@@ -174,5 +129,3 @@ if ($action != 'edit')
 print '</table></form>';
 
 llxFooter();
-
-$db->close();

+ 274 - 325
htdocs/compta/bank/class/bankcateg.class.php

@@ -1,6 +1,7 @@
 <?php
 /* Copyright (C) 2008 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2009 Regis Houssin        <regis.houssin@capnetworks.com>
+ * Copyright (C) 2016 Marcos García        <marcosgdf@gmail.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,346 +18,294 @@
  */
 
 /**
- *      \file       compta/bank/class/bankcateg.class.php
- *      \ingroup    banque
- *      \brief      This file is CRUD class file (Create/Read/Update/Delete) for bank categories
- *		\author		Laurent Destailleur
+ * \file       compta/bank/class/bankcateg.class.php
+ * \ingroup    bank
+ * \brief      This file is CRUD class file (Create/Read/Update/Delete) for bank categories
  */
 
-// Put here all includes required by your class file
-//require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
-//require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
-//require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
-
-
 /**
- *	Class to manage bank categories
+ *    Class to manage bank categories
  */
 class BankCateg // extends CommonObject
 {
-    //public $element='bank_categ';			//!< Id that identify managed objects
-    //public $table_element='bank_categ';	//!< Name of table without prefix where object is stored
-
-    var $id;
-    var $label;
-
-
-    /**
-     *	Constructor
-     *
-     *  @param		DoliDB		$db      Database handler
-     */
-    function __construct($db)
-    {
-        $this->db = $db;
-        return 1;
-    }
-
-
-    /**
-     *  Create in database
-     *
-     *  @param	User	$user        	User that create
-     *  @param  int		$notrigger	    0=launch triggers after, 1=disable triggers
-     *  @return int         			<0 if KO, Id of created object if OK
-     */
-    function create($user, $notrigger=0)
-    {
-        global $conf, $langs;
-        $error=0;
-
-        // Clean parameters
-        if (isset($this->label)) $this->label=trim($this->label);
-
-        // Check parameters
-        // Put here code to add control on parameters values
-
-        // Insert request
-        $sql = "INSERT INTO ".MAIN_DB_PREFIX."bank_categ (";
-        $sql.= "label";
-        $sql.= ", entity";
-        $sql.= ") VALUES (";
-        $sql.= " ".(! isset($this->label)?'NULL':"'".$this->db->escape($this->label)."'")."";
-        $sql.= ", ".$conf->entity;
-        $sql.= ")";
-
-        $this->db->begin();
-
-        dol_syslog(get_class($this)."::create", LOG_DEBUG);
-        $resql=$this->db->query($sql);
-        if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
-
-        if (! $error)
-        {
-            $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."bank_categ");
-
-            if (! $notrigger)
-            {
-                // Uncomment this and change MYOBJECT to your own tag if you
-                // want this action call a trigger.
-
-                //// Call triggers
-                //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
-                //$interface=new Interfaces($this->db);
-                //$result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf);
-                //if ($result < 0) { $error++; $this->errors=$interface->errors; }
-                //// End call triggers
-            }
-        }
-
-        // Commit or rollback
-        if ($error)
-        {
-            foreach($this->errors as $errmsg)
-            {
-                dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR);
-                $this->error.=($this->error?', '.$errmsg:$errmsg);
-            }
-            $this->db->rollback();
-            return -1*$error;
-        }
-        else
-        {
-            $this->db->commit();
-            return $this->id;
-        }
-    }
-
-
-    /**
-     *  Load object in memory from database
-     *
-     *  @param	int		$id         Id object
-     *  @return int         		<0 if KO, >0 if OK
-     */
-    function fetch($id)
-    {
-        global $langs,$conf;
-
-        $sql = "SELECT";
-        $sql.= " t.rowid,";
-        $sql.= " t.label";
-        $sql.= " FROM ".MAIN_DB_PREFIX."bank_categ as t";
-        $sql.= " WHERE t.rowid = ".$id;
-        $sql.= " AND t.entity = ".$conf->entity;
-
-        dol_syslog(get_class($this)."::fetch", LOG_DEBUG);
-        $resql=$this->db->query($sql);
-        if ($resql)
-        {
-            if ($this->db->num_rows($resql))
-            {
-                $obj = $this->db->fetch_object($resql);
-
-                $this->id    = $obj->rowid;
-                $this->label = $obj->label;
-            }
-            $this->db->free($resql);
-
-            return 1;
-        }
-        else
-        {
-            $this->error="Error ".$this->db->lasterror();
-            return -1;
-        }
-    }
-
-
-    /**
-     *  Update database
-     *
-     *  @param	User	$user        	User that modify
-     *  @param  int		$notrigger	    0=launch triggers after, 1=disable triggers
-     *  @return int         			<0 if KO, >0 if OK
-     */
-    function update($user=null, $notrigger=0)
-    {
-        global $conf, $langs;
-        $error=0;
-
-        // Clean parameters
-        if (isset($this->label)) $this->label=trim($this->label);
-
-        // Check parameters
-        // Put here code to add control on parameters values
-
-        // Update request
-        $sql = "UPDATE ".MAIN_DB_PREFIX."bank_categ SET";
-        $sql.= " label=".(isset($this->label)?"'".$this->db->escape($this->label)."'":"null")."";
-        $sql.= " WHERE rowid=".$this->id;
-        $sql.= " AND entity = ".$conf->entity;
-
-        $this->db->begin();
-
-        dol_syslog(get_class($this)."::update", LOG_DEBUG);
-        $resql = $this->db->query($sql);
-        if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
-
-        if (! $error)
-        {
-            if (! $notrigger)
-            {
-                // Uncomment this and change MYOBJECT to your own tag if you
-                // want this action call a trigger.
-
-                //// Call triggers
-                //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
-                //$interface=new Interfaces($this->db);
-                //$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf);
-                //if ($result < 0) { $error++; $this->errors=$interface->errors; }
-                //// End call triggers
-            }
-        }
-
-        // Commit or rollback
-        if ($error)
-        {
-            foreach($this->errors as $errmsg)
-            {
-                dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR);
-                $this->error.=($this->error?', '.$errmsg:$errmsg);
-            }
-            $this->db->rollback();
-            return -1*$error;
-        }
-        else
-        {
-            $this->db->commit();
-            return 1;
-        }
-    }
-
-
-    /**
-     *  Delete object in database
-     *
-     *	@param	User	$user        	User that delete
-     *  @param  int		$notrigger	    0=launch triggers after, 1=disable triggers
-     *	@return	int						<0 if KO, >0 if OK
-     */
-    function delete($user, $notrigger=0)
-    {
-        global $conf, $langs;
-        $error=0;
-
-        $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_categ";
-        $sql.= " WHERE rowid=".$this->id;
-        $sql.= " AND entity = ".$conf->entity;
-
-        $this->db->begin();
-
-        dol_syslog(get_class($this)."::delete", LOG_DEBUG);
-        $resql = $this->db->query($sql);
-        if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
-
-        if (! $error)
-        {
-            if (! $notrigger)
-            {
-                // Uncomment this and change MYOBJECT to your own tag if you
-                // want this action call a trigger.
-
-                //// Call triggers
-                //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
-                //$interface=new Interfaces($this->db);
-                //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf);
-                //if ($result < 0) { $error++; $this->errors=$interface->errors; }
-                //// End call triggers
-            }
-        }
-
-        // Commit or rollback
-        if ($error)
-        {
-            foreach($this->errors as $errmsg)
-            {
-                dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR);
-                $this->error.=($this->error?', '.$errmsg:$errmsg);
-            }
-            $this->db->rollback();
-            return -1*$error;
-        }
-        else
-        {
-            $this->db->commit();
-            return 1;
-        }
-    }
-
-
-
-    /**
-     *	Load an object from its id and create a new one in database
-     *
-     *	@param	int		$fromid     		Id of object to clone
-     * 	@return	int							New id of clone
-     */
-    function createFromClone($fromid)
-    {
-        global $user,$langs;
-
-        $error=0;
-
-        $object=new BankCateg($this->db);
-
-		$object->context['createfromclone'] = 'createfromclone';
+	//public $element='bank_categ';			//!< Id that identify managed objects
+	//public $table_element='bank_categ';	//!< Name of table without prefix where object is stored
+
+	public $id;
+	public $label;
+
+
+	/**
+	 * Constructor
+	 *
+	 * @param DoliDB $db Database handler
+	 */
+	public function __construct(DoliDB $db)
+	{
+		$this->db = $db;
+	}
+
+
+	/**
+	 *  Create in database
+	 *
+	 * @param  User $user User that create
+	 * @param  int $notrigger 0=launch triggers after, 1=disable triggers
+	 * @return int <0 if KO, Id of created object if OK
+	 */
+	public function create(User $user, $notrigger = 0)
+	{
+		global $conf;
+
+		$error = 0;
+
+		// Clean parameters
+		if (isset($this->label)) {
+			$this->label = trim($this->label);
+		}
+
+		// Insert request
+		$sql = "INSERT INTO ".MAIN_DB_PREFIX."bank_categ (";
+		$sql .= "label";
+		$sql .= ", entity";
+		$sql .= ") VALUES (";
+		$sql .= " ".(!isset($this->label) ? 'NULL' : "'".$this->db->escape($this->label)."'")."";
+		$sql .= ", ".$conf->entity;
+		$sql .= ")";
 
 		$this->db->begin();
 
-        // Load source object
-        $object->fetch($fromid);
-        $object->id=0;
-        $object->statut=0;
-
-        // Clear fields
-        // ...
-
-        // Create clone
-        $result=$object->create($user);
-
-        // Other options
-        if ($result < 0)
-        {
-            $this->error=$object->error;
-            $error++;
-        }
-
-        if (! $error)
-        {
-
+		dol_syslog(get_class($this)."::create", LOG_DEBUG);
+		$resql = $this->db->query($sql);
+		if (!$resql) {
+			$error++;
+			$this->errors[] = "Error ".$this->db->lasterror();
+		}
+
+		if (!$error) {
+			$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."bank_categ");
+		}
+
+		// Commit or rollback
+		if ($error) {
+			foreach ($this->errors as $errmsg) {
+				dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR);
+				$this->error .= ($this->error ? ', '.$errmsg : $errmsg);
+			}
+			$this->db->rollback();
+			return -1 * $error;
+		} else {
+			$this->db->commit();
+			return $this->id;
+		}
+	}
+
+
+	/**
+	 * Load object in memory from database
+	 *
+	 * @param  int $id Id object
+	 * @return int <0 if KO, >0 if OK
+	 */
+	public function fetch($id)
+	{
+		global $conf;
+
+		$sql = "SELECT";
+		$sql .= " t.rowid,";
+		$sql .= " t.label";
+		$sql .= " FROM ".MAIN_DB_PREFIX."bank_categ as t";
+		$sql .= " WHERE t.rowid = ".$id;
+		$sql .= " AND t.entity = ".$conf->entity;
+
+		dol_syslog(get_class($this)."::fetch", LOG_DEBUG);
+		$resql = $this->db->query($sql);
+		if ($resql) {
+			if ($this->db->num_rows($resql)) {
+				$obj = $this->db->fetch_object($resql);
+
+				$this->id = $obj->rowid;
+				$this->label = $obj->label;
+			}
+			$this->db->free($resql);
+
+			return 1;
+		} else {
+			$this->error = "Error ".$this->db->lasterror();
+			return -1;
+		}
+	}
+
+	/**
+	 * Update database
+	 *
+	 * @param  User $user User that modify
+	 * @param  int $notrigger 0=launch triggers after, 1=disable triggers
+	 * @return int                    <0 if KO, >0 if OK
+	 */
+	public function update(User $user = null, $notrigger = 0)
+	{
+		global $conf;
+		$error = 0;
+
+		// Clean parameters
+		if (isset($this->label)) {
+			$this->label = trim($this->label);
+		}
+
+		// Check parameters
+		// Put here code to add control on parameters values
+
+		// Update request
+		$sql = "UPDATE ".MAIN_DB_PREFIX."bank_categ SET";
+		$sql .= " label=".(isset($this->label) ? "'".$this->db->escape($this->label)."'" : "null")."";
+		$sql .= " WHERE rowid=".$this->id;
+		$sql .= " AND entity = ".$conf->entity;
 
+		$this->db->begin();
 
-        }
+		dol_syslog(get_class($this)."::update", LOG_DEBUG);
+		$resql = $this->db->query($sql);
+		if (!$resql) {
+			$error++;
+			$this->errors[] = "Error ".$this->db->lasterror();
+		}
+
+		// Commit or rollback
+		if ($error) {
+			foreach ($this->errors as $errmsg) {
+				dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR);
+				$this->error .= ($this->error ? ', '.$errmsg : $errmsg);
+			}
+			$this->db->rollback();
+			return -1 * $error;
+		} else {
+			$this->db->commit();
+			return 1;
+		}
+	}
+
+	/**
+	 * Delete object in database
+	 *
+	 * @param  User $user User that delete
+	 * @param  int $notrigger 0=launch triggers after, 1=disable triggers
+	 * @return int <0 if KO, >0 if OK
+	 */
+	public function delete(User $user, $notrigger = 0)
+	{
+		global $conf;
+		$error = 0;
+
+		$sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_categ";
+		$sql .= " WHERE rowid=".$this->id;
+		$sql .= " AND entity = ".$conf->entity;
 
-        unset($object->context['createfromclone']);
+		$this->db->begin();
 
-        // End
-        if (! $error)
-        {
-            $this->db->commit();
-            return $object->id;
-        }
-        else
-        {
-            $this->db->rollback();
-            return -1;
-        }
-    }
+		dol_syslog(get_class($this)."::delete", LOG_DEBUG);
+		$resql = $this->db->query($sql);
+		if (!$resql) {
+			$error++;
+			$this->errors[] = "Error ".$this->db->lasterror();
+		}
+
+		// Commit or rollback
+		if ($error) {
+			foreach ($this->errors as $errmsg) {
+				dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR);
+				$this->error .= ($this->error ? ', '.$errmsg : $errmsg);
+			}
+			$this->db->rollback();
+			return -1 * $error;
+		} else {
+			$this->db->commit();
+			return 1;
+		}
+	}
+
+	/**
+	 * Load an object from its id and create a new one in database
+	 *
+	 * @param  int $fromid Id of object to clone
+	 * @return int New id of clone
+	 */
+	public function createFromClone($fromid)
+	{
+		global $user;
+
+		$error = 0;
+
+		$object = new BankCateg($this->db);
 
+		$object->context['createfromclone'] = 'createfromclone';
 
-    /**
-     *  Initialise an instance with random values.
-     *  Used to build previews or test instances.
-     *	id must be 0 if object instance is a specimen.
-     *
-     *  @return	void
-     */
-    function initAsSpecimen()
-    {
-        $this->id=0;
+		$this->db->begin();
 
-        $this->label='';
-    }
+		// Load source object
+		$object->fetch($fromid);
+		$object->id = 0;
+		$object->statut = 0;
+
+		// Create clone
+		$result = $object->create($user);
+
+		// Other options
+		if ($result < 0) {
+			$this->error = $object->error;
+			$error++;
+		}
+
+		unset($object->context['createfromclone']);
+
+		// End
+		if (!$error) {
+			$this->db->commit();
+			return $object->id;
+		} else {
+			$this->db->rollback();
+			return -1;
+		}
+	}
+
+	/**
+	 * Returns all bank categories
+	 *
+	 * @return BankCateg[]
+	 */
+	public function fetchAll()
+	{
+		global $conf;
+
+		$return = array();
+
+		$sql = "SELECT rowid, label FROM ".MAIN_DB_PREFIX."bank_categ WHERE entity = ".$conf->entity." ORDER BY label";
+		$resql = $this->db->query($sql);
+
+		if ($resql) {
+			while ($obj = $this->db->fetch_object($resql)) {
+				$tmp = new BankCateg($this->db);
+				$tmp->id = $obj->rowid;
+				$tmp->label = $obj->label;
+
+				$return[] = $tmp;
+			}
+		}
+
+		return $return;
+	}
+
+	/**
+	 * Initialise an instance with random values.
+	 * Used to build previews or test instances.
+	 * id must be 0 if object instance is a specimen.
+	 *
+	 * @return void
+	 */
+	public function initAsSpecimen()
+	{
+		$this->id = 0;
+		$this->label = '';
+	}
 
 }

+ 9 - 19
htdocs/compta/bank/ligne.php

@@ -6,6 +6,7 @@
  * Copyright (C) 2005-2012 Regis Houssin        <regis.houssin@capnetworks.com>
  * Copyright (C) 2015      Alexandre Spangaro	<aspangaro.dolibarr@gmail.com>
  * Copyright (C) 2015      Jean-François Ferry	<jfefe@aternatik.fr>
+ * Copyright (C) 2016      Marcos García        <marcosgdf@gmail.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -205,24 +206,13 @@ $form = new Form($db);
 
 llxHeader();
 
-// The list of categories is initialized
-$sql = "SELECT rowid, label";
-$sql.= " FROM ".MAIN_DB_PREFIX."bank_categ";
-$sql.= " ORDER BY label";
-$result = $db->query($sql);
-if ($result)
-{
-    $var=True;
-    $num = $db->num_rows($result);
-    $i = 0;
-    $options = "<option value=\"0\" selected>&nbsp;</option>";
-    while ($i < $num)
-    {
-        $obj = $db->fetch_object($result);
-        $options .= "<option value=\"$obj->rowid\">$obj->label</option>\n";
-        $i++;
-    }
-    $db->free($result);
+// Load bank groups
+require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/bankcateg.class.php';
+$bankcateg = new BankCateg($db);
+$options = array();
+
+foreach ($bankcateg->fetchAll() as $bankcategory) {
+    $options[$bankcategory->id] = $bankcategory->label;
 }
 
 $var=false;
@@ -620,7 +610,7 @@ print '<table class="noborder" width="100%">';
 print '<tr class="liste_titre"><td>'.$langs->trans("Rubriques").'</td><td colspan="2">';
 if ($user->rights->banque->modifier)
 {
-    print '<select class="flat" name="cat1">'.$options.'</select>&nbsp;';
+    print Form::selectarray('cat1', $options, '', 1).' ';
     print '<input type="submit" class="button" value="'.$langs->trans("Add").'"></td>';
 }
 print '</tr>';

+ 11 - 32
htdocs/compta/bank/rappro.php

@@ -3,6 +3,7 @@
  * Copyright (C) 2004-2015 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2010	   Juanjo Menent	    <jmenent@2byte.es>
  * Copyright (C) 2015      Jean-François Ferry	<jfefe@aternatik.fr>
+ * Copyright (C) 2016      Marcos García        <marcosgdf@gmail.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -111,28 +112,13 @@ if ($action == 'del')
     }
 }
 
+require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/bankcateg.class.php';
+$bankcateg = new BankCateg($db);
+$options = array();
 
-// Load bank groups
-$sql = "SELECT rowid, label FROM ".MAIN_DB_PREFIX."bank_categ ORDER BY label";
-$resql = $db->query($sql);
-$options="";
-if ($resql)
-{
-    $var=True;
-    $num = $db->num_rows($resql);
-    if ($num > 0) $options .= '<option value="0"'.(GETPOST('cat')?'':' selected').'>&nbsp;</option>';
-    $i = 0;
-    while ($i < $num)
-    {
-        $obj = $db->fetch_object($resql);
-        $options .= '<option value="'.$obj->rowid.'"'.(GETPOST('cat')==$obj->rowid?' selected':'').'>'.$obj->label.'</option>'."\n";
-        $i++;
-    }
-    $db->free($resql);
-    //print $options;
+foreach ($bankcateg->fetchAll() as $bankcategory) {
+	$options[$bankcategory->id] = $bankcategory->label;
 }
-else dol_print_error($db);
-
 
 /*
  * View
@@ -236,10 +222,11 @@ if ($resql)
     print '<strong>'.$langs->trans("InputReceiptNumber").'</strong>: ';
     print '<input class="flat" name="num_releve" type="text" value="'.(GETPOST('num_releve')?GETPOST('num_releve'):'').'" size="10">';  // The only default value is value we just entered
     print '<br>';
-    if ($options)
-    {
-        print $langs->trans("EventualyAddCategory").': <select class="flat" name="cat">'.$options.'</select><br>';
-    }
+	if ($options) {
+		print $langs->trans("EventualyAddCategory").': ';
+		print Form::selectarray('cat', $options, GETPOST('cat'), 1);
+		print '<br>';
+	}
     print '<br>'.$langs->trans("ThenCheckLinesAndConciliate").' "'.$langs->trans("Conciliate").'"<br>';
 
     print '<br>';
@@ -440,14 +427,6 @@ if ($resql)
 
             print '<td align="center" class="nowrap">';
             print '<input class="flat" name="rowid['.$objp->rowid.']" type="checkbox" value="'.$objp->rowid.'" size="1"'.(! empty($_POST['rowid'][$objp->rowid])?' checked':'').'>';
-//             print '<input class="flat" name="num_releve" type="text" value="'.$objp->num_releve.'" size="8">';
-//             print ' &nbsp; ';
-//             print "<input class=\"button\" type=\"submit\" value=\"".$langs->trans("Conciliate")."\">";
-//             if ($options)
-//             {
-//                 print "<br><select class=\"flat\" name=\"cat\">$options";
-//                 print "</select>";
-//             }
             print "</td>";
         }
         else