noalyss-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Noalyss-commit] [noalyss] 06/119: reconcilaction : possibility to selec


From: Dany De Bontridder
Subject: [Noalyss-commit] [noalyss] 06/119: reconcilaction : possibility to select only one operation
Date: Mon, 26 Oct 2020 18:27:00 -0400 (EDT)

sparkyx pushed a commit to branch master
in repository noalyss.

commit 23b88e2bb889991c41a5b64dbae228ddac1ff186
Author: Dany De Bontridder <danydb@noalyss.eu>
AuthorDate: Tue Aug 18 19:11:23 2020 +0200

    reconcilaction : possibility to select only one operation
---
 html/js/scripts.js                          | 12 +++-
 include/ajax/ajax_search_operation.php      |  3 +
 include/class/acc_ledger_search.class.php   |  3 +
 include/lib/iconcerned.class.php            | 98 ++++++++++++++++++-----------
 unit-test/include/class/acc_ledger.Test.php | 65 +++++++++++++------
 5 files changed, 124 insertions(+), 57 deletions(-)

diff --git a/html/js/scripts.js b/html/js/scripts.js
index 404e99e..ce350f3 100644
--- a/html/js/scripts.js
+++ b/html/js/scripts.js
@@ -1304,6 +1304,7 @@ function search_reconcile(dossier, ctl_concern, 
amount_id, ledger, p_id_target,
     str_style += ";width:92%;overflow:auto;";
     waiting_box();
     var hide_operation = $(ctl_concern).getAttribute("hide_operation");
+    var single_operation = $(ctl_concern).getAttribute("single_operation");
 
     var param_send = {gDossier: dossier,
         ctlc: ctl_concern,
@@ -1313,7 +1314,8 @@ function search_reconcile(dossier, ctl_concern, 
amount_id, ledger, p_id_target,
         ledger: ledger,
         target: target,
         tiers: tiers,
-        hide_operation: hide_operation
+        hide_operation: hide_operation,
+        single_operation:single_operation
     };
 
     var qs = encodeJSON(param_send);
@@ -1381,6 +1383,7 @@ function set_reconcile(obj)
         if (!obj.elements['target'])
             return;
         var target = obj.elements['target'].value;
+        var single_operation = obj.elements['single_operation'].value;
         for (var e = 0; e < obj.elements.length; e++)
         {
 
@@ -1414,7 +1417,12 @@ function set_reconcile(obj)
                             });
                         }
                     }
-                    $(ctlc.value).value += nValue;
+                    if (single_operation==0) {
+                        $(ctlc.value).value += nValue;
+                    } else {
+                        $(ctlc.value).value = nValue;
+                        
+                    }
                 }
             }
         }
diff --git a/include/ajax/ajax_search_operation.php 
b/include/ajax/ajax_search_operation.php
index 0c47011..f5a541a 100644
--- a/include/ajax/ajax_search_operation.php
+++ b/include/ajax/ajax_search_operation.php
@@ -109,6 +109,8 @@ if (isset($_GET['viewsearch']))
         list($array['date_start'], 
$array['date_end'])=$g_user->get_limit_current_exercice();
     }
     $array['hide_operation']=$hide_operation;
+    $array['single_operation']=$http->get("single_operation");
+    
     list($sql, $where)=$ledger->build_search_sql($array);
     // Count nb of line
     $max_line=$cn->count_sql($sql);
@@ -128,6 +130,7 @@ if (isset($_GET['viewsearch']))
         }
     }
     echo '<form method="get" onsubmit="set_reconcile(this);return false">';
+    echo HtmlInput::hidden("single_operation", $array['single_operation']);
     echo HtmlInput::hidden("tiers", $tiers);
     echo HtmlInput::submit("upd_rec", _("Mettre à jour"));
     echo HtmlInput::get_to_hidden(array('ctlc', 'amount_id', 'ledger'));
diff --git a/include/class/acc_ledger_search.class.php 
b/include/class/acc_ledger_search.class.php
index 198b0e7..d2e7fa7 100644
--- a/include/class/acc_ledger_search.class.php
+++ b/include/class/acc_ledger_search.class.php
@@ -224,6 +224,9 @@ class Acc_Ledger_Search
         if (isset($_REQUEST['hide_operation']))
             $r.=HtmlInput::hidden("hide_operation", 
$http->request('hide_operation'));
         
+        if (isset($_REQUEST['single_operation']))
+            $r.=HtmlInput::hidden("single_operation", 
$http->request('single_operation'));
+        
         ob_start();
         $search_filter=$this->build_search_filter();
         require_once NOALYSS_TEMPLATE.'/ledger_search.php';
diff --git a/include/lib/iconcerned.class.php b/include/lib/iconcerned.class.php
index d43fa3e..2c4a418 100644
--- a/include/lib/iconcerned.class.php
+++ b/include/lib/iconcerned.class.php
@@ -1,4 +1,5 @@
 <?php
+
 /*
  *   This file is part of NOALYSS.
  *
@@ -15,78 +16,105 @@
  *   You should have received a copy of the GNU General Public License
  *   along with NOALYSS; if not, write to the Free Software
  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-*/
+ */
 
 // Copyright Author Dany De Bontridder danydb@aevalys.eu
 
-/*!\file
+/* !\file
  * \brief Html Input
  *  - name is the name and id of the input
  *  - extra amount of the operation to reconcile
  *  - extra2 ledger paid
  */
 require_once NOALYSS_INCLUDE.'/lib/html_input.class.php';
+
 class IConcerned extends HtmlInput
 {
+
     private $hideOperation; //!< string of j_id to hide, separated by comma to 
avoid to reconcile an operation with itself
+    private $singleOperation; //!< do not allow to select several operations
 
-       public function __construct($p_name='',$p_value='',$p_id="")
-       {
-               $this->name=$p_name;
-               $this->value=$p_value;
-               $this->amount_id=null;
-               $this->paid='';
-               $this->id=$p_id;
-        $this->tiers=""; // id of the field for the tiers to be updated
-        $this->div=""; // Dom Element to show the search result
-        $this->hideOperation=""; // string of j_id to hide, separated by comma 
to avoid to reconcile an operation with itself
-       }
-    /*!\brief show the html  input of the widget*/
-    public function input($p_name=null,$p_value=null)
+    public function __construct($p_name='', $p_value='', $p_id="")
+    {
+        $this->name=$p_name;
+        $this->value=$p_value;
+        $this->amount_id=null;
+        $this->paid='';
+        $this->id=$p_id;
+        // id of the field for the tiers to be updated
+        $this->tiers="";
+        // Dom Element to show the search result
+        $this->div="";
+        // string of j_id to hide, separated by comma to avoid to reconcile an 
operation with itself
+        $this->hideOperation="";
+        // by default we can select several operation
+        $this->singleOperation=0; 
+    }
+
+    /* !\brief show the html  input of the widget */
+
+    public function input($p_name=null, $p_value=null)
     {
         $this->name=($p_name==null)?$this->name:$p_name;
         $this->value=($p_value==null)?$this->value:$p_value;
-        if ( $this->readOnly==true) return $this->display();
+        if ($this->readOnly==true)
+            return $this->display();
 
         $this->id=($this->id=="")?$this->name:$this->id;
-        
$javascript=sprintf("search_reconcile(".dossier::id().",'%s','%s','%s','%s','%s')",
-                    $this->name,
-                    $this->amount_id,
-                    $this->paid,
-                    $this->div,
-                    $this->tiers  );
+        
$javascript=sprintf("search_reconcile(".dossier::id().",'%s','%s','%s','%s','%s')",
 $this->name,
+                $this->amount_id, $this->paid, $this->div, $this->tiers);
         $r=Icon_Action::icon_magnifier(uniqid(), $javascript);
         $r.=sprintf("
-                   <INPUT TYPE=\"text\"  
style=\"color:black;background:lightyellow;border:solid 1px grey;\"  
NAME=\"%s\" ID=\"%s\" VALUE=\"%s\" SIZE=\"8\" hide_operation=\"%s\" readonly>
+                   <INPUT TYPE=\"text\"  
style=\"color:black;background:lightyellow;border:solid 1px grey;\"  
NAME=\"%s\" ID=\"%s\" VALUE=\"%s\" SIZE=\"8\" hide_operation=\"%s\" readonly 
single_operation=\"%s\">
                                   <INPUT class=\"smallbutton\"  
TYPE=\"button\" onClick=\"$('%s').value=''\" value=\"X\">
 
-                   ",
-                   $this->name,
-                   $this->id,
-                   $this->value,
-                   $this->hideOperation,
-                   $this->id
-                  );
+                   ", $this->name, $this->id, $this->value, 
$this->hideOperation,$this->singleOperation,
+                $this->id
+        );
         return $r;
     }
 
     /**
      * setter
-     * @param $p_string
+     * @param number $p_string  jrn.jr_id of the operation to hide
      */
     function set_hideOperation($p_string)
     {
         $this->hideOperation=strip_tags($p_string);
     }
-    /*!\brief print in html the readonly value of the widget*/
+
+    /**
+     * Set the value of single operation, limit to one operation if TRUE
+     * @param bool $p_value TRUE or false
+     */
+    function set_singleOperation($p_value){
+        if ( $p_value == TRUE  ) {
+            $this->singleOperation=1;
+            return;
+        }
+        if ( $p_value == FALSE ) {
+            $this->singleOperation=0;
+            return;
+        }
+        throw new Exception (_("setSingleOperation failed"));
+    }
+    
+    function get_singleOperation(){
+        return $this->singleOperation;
+    }
+    
+    /* !\brief print in html the readonly value of the widget */
+
     public function display()
     {
-        $r=sprintf("<span><b>%s</b></span>",$this->value);
-        $r.=sprintf('<input type="hidden" name="%s" value="%s">', 
$this->name,$this->value);
+        $r=sprintf("<span><b>%s</b></span>", $this->value);
+        $r.=sprintf('<input type="hidden" name="%s" value="%s">', $this->name, 
$this->value);
         return $r;
-
     }
+
     static public function test_me()
     {
+        
     }
+
 }
diff --git a/unit-test/include/class/acc_ledger.Test.php 
b/unit-test/include/class/acc_ledger.Test.php
index 93e8af5..8edb68d 100644
--- a/unit-test/include/class/acc_ledger.Test.php
+++ b/unit-test/include/class/acc_ledger.Test.php
@@ -443,31 +443,56 @@ class Acc_LedgerTest extends TestCase
      */
     public function testVerify_Ledger()
     {
-        global $g_connection;
+       global $g_connection;
        $ledger=new Acc_Ledger($g_connection,4);
        $array=[
-           "p_jrn"=>"15",
-           "p_jrn_deb_max_line"=>5,
-           "p_jrn_name"=>"New ledger",
-           "p_jrn_type"=>"ODS"
-       ];
-       // Must success
-       try {
-           $ledger->verify_ledger($array);
-           $this->assertTrue(TRUE);
-       } catch (Exception $ex) {
-           var_dump($ex->getMessage());
-           var_dump($ex->getTraceAsString());
-       }
+            "p_jrn"=>"15",
+            "p_jrn_deb_max_line"=>5,
+            "p_jrn_name"=>"New ledger",
+            "p_jrn_type"=>"ODS"
+            ];
+       //-----------------------------------------------
+       // Must succeed
+       //-----------------------------------------------
+      $ledger->verify_ledger($array);
+      
        
+       // succeeds if negative amount  1
+       $array["negative_amount"]=1;
+       $ledger->verify_ledger($array);
+       
+       //-----------------------------------------------
        // Must fail
-       $a_ledger["p_jrn"]="a";
+       //-----------------------------------------------
        try {
-           $ledger->verify_ledger($array);
-           $this->assertTrue(FALSE);
-       } catch (Exception $ex) {
-           $this->assertTrue(TRUE);
-       }
+            $array["p_jrn"]="a";
+            $ledger->verify_ledger($array);
+            $this->assertTrue(FALSE,"p_jrn is invalide");
+        }catch (\Exception $e) {
+            $this->assertTrue(TRUE);
+        }
+       // reset properly ,
+       $array["p_jrn"]="15";
+       $ledger->verify_ledger($array);
+
+       
+       // fails if negative amount neither 1 nor 0
+       try {
+            $array["negative_amount"]=2;
+            $ledger->verify_ledger($array);
+            $this->assertTrue(FALSE,"negative_amount must be 1 or 0");
+        }catch (\Exception $e) {
+            $this->assertTrue(TRUE);
+        }
+       
+        // negative amount not set , so fails
+       try {
+            $array["negative_warning"]="Yes";
+            $ledger->verify_ledger($array);
+            $this->assertTrue(FALSE,"negative_warning must be a string");
+        }catch (\Exception $e) {
+            $this->assertTrue(TRUE);
+        }
     }
 
     /**



reply via email to

[Prev in Thread] Current Thread [Next in Thread]