altocompta/include/user_common.php
Dany De Bontridder b43f4c87b4 Merged revisions 2905-2938 via svnmerge from
svn+ssh://danydb@svn/svn/phpcompta/branches/rel500

........
  r2906 | danydb | 2010-01-27 15:16:08 +0100 (Wed, 27 Jan 2010) | 2 lines
  
  Cosmetic for html popup
........
  r2907 | danydb | 2010-01-27 15:28:03 +0100 (Wed, 27 Jan 2010) | 5 lines
  
  Fix typo translation
  
  Fix Bug  : cannot save extension in IE, probably because the same scripts are included several times
........
  r2908 | danydb | 2010-01-28 13:56:37 +0100 (Thu, 28 Jan 2010) | 5 lines
  
  Fix Bug In getNodeText when retrieving data for Internet Explorer, 
  it fails if the xmlNode.firstChild.nodeValue does not contains data. 
  It is directly set to undefined
........
  r2909 | danydb | 2010-01-29 12:20:24 +0100 (Fri, 29 Jan 2010) | 2 lines
  
  Generate invoice : update the comment of the entry only if there were no comment
........
  r2910 | danydb | 2010-01-29 19:39:11 +0100 (Fri, 29 Jan 2010) | 6 lines
  
  Improve User
  ============
  Status only plugin means that the user can use only the plugin and can't access to 
  anything else.
........
  r2911 | danydb | 2010-01-29 19:42:38 +0100 (Fri, 29 Jan 2010) | 1 line
  
  Bug import Dexia
........
  r2912 | danydb | 2010-01-31 16:24:22 +0100 (Sun, 31 Jan 2010) | 3 lines
  
  For insert_jrnx, the desc is now in the function, we don't need anymore to update after inserting
........
  r2913 | danydb | 2010-01-31 16:33:55 +0100 (Sun, 31 Jan 2010) | 4 lines
  
  Fix bug : cannot see operation in quick_writing 
     cause : the p_action must be set to ALL, it wasn't for quick_writing
........
  r2914 | danydb | 2010-02-02 14:52:37 +0100 (Tue, 02 Feb 2010) | 4 lines
  
  Code cleaning
  Bug : in ledger of sale, we have twice the possibility to add~ or generate document, and only for invoice (type 4)
  Solution : fix the function Acc_Ledger_Purchase::extra_info (type of document = 10), remove extra code
........
  r2915 | danydb | 2010-02-05 01:01:11 +0100 (Fri, 05 Feb 2010) | 4 lines
  
  Improve : search_card you can also find a card thanks is tva_num
  Documentation doxygen improved
........
  r2916 | danydb | 2010-02-05 11:18:36 +0100 (Fri, 05 Feb 2010) | 2 lines
  
  when inserting into ledger_sold the test to check the attach was wrong
........
  r2917 | danydb | 2010-02-05 14:45:33 +0100 (Fri, 05 Feb 2010) | 2 lines
  
  Extension : add the possibility to use ajax
........
  r2918 | danydb | 2010-02-06 14:25:22 +0100 (Sat, 06 Feb 2010) | 1 line
  
  rewrite the function encodeJSON, hide and show for doxygen
........
  r2919 | danydb | 2010-02-06 14:26:07 +0100 (Sat, 06 Feb 2010) | 1 line
  
  remove error where _SESSION is expired
........
  r2920 | danydb | 2010-02-06 14:26:49 +0100 (Sat, 06 Feb 2010) | 1 line
  
  In ITva_Select add the display
........
  r2921 | danydb | 2010-02-06 14:27:47 +0100 (Sat, 06 Feb 2010) | 1 line
  
  Cosmetic
........
  r2922 | danydb | 2010-02-06 14:27:49 +0100 (Sat, 06 Feb 2010) | 1 line
  
  IPopup add a new property drag to make the ipopup dragguable or not
........
  r2923 | danydb | 2010-02-06 14:35:28 +0100 (Sat, 06 Feb 2010) | 5 lines
  
  Middle of payment
  =================
  Feature : add or remove middle of payment
........
  r2924 | danydb | 2010-02-06 18:17:15 +0100 (Sat, 06 Feb 2010) | 7 lines
  
  Card
  ----
  A same card can now have 2 different sides (debit or credit)
  usefull to have only one card for a customer and a supplier
........
  r2925 | danydb | 2010-02-06 18:23:03 +0100 (Sat, 06 Feb 2010) | 1 line
  
  Add the sql script for the double accounting
........
  r2926 | danydb | 2010-02-06 19:29:29 +0100 (Sat, 06 Feb 2010) | 2 lines
  
  Update documentation
........
  r2927 | danydb | 2010-02-06 20:37:12 +0100 (Sat, 06 Feb 2010) | 4 lines
  
  Fiche_def
  ========
  Permit to have 2 accouting as class_base
........
  r2928 | danydb | 2010-02-06 20:56:00 +0100 (Sat, 06 Feb 2010) | 1 line
  
  Bug : FK from stock prevent the removal of a card
........
  r2929 | danydb | 2010-02-06 21:14:10 +0100 (Sat, 06 Feb 2010) | 1 line
  
  removeless useless test
........
  r2930 | danydb | 2010-02-07 00:55:03 +0100 (Sun, 07 Feb 2010) | 1 line
  
  Improve appearance extension
........
  r2931 | danydb | 2010-02-07 00:56:28 +0100 (Sun, 07 Feb 2010) | 2 lines
  
  remove debug
........
  r2932 | danydb | 2010-02-07 01:16:51 +0100 (Sun, 07 Feb 2010) | 1 line
  
  Improve appearance extension
........
  r2933 | danydb | 2010-02-07 01:19:08 +0100 (Sun, 07 Feb 2010) | 1 line
  
  Improve appearance extension
........
  r2934 | danydb | 2010-02-07 01:30:31 +0100 (Sun, 07 Feb 2010) | 1 line
  
  Improve appearance extension
........
  r2935 | danydb | 2010-02-07 02:36:25 +0100 (Sun, 07 Feb 2010) | 1 line
  
  Version PHP5.3 : split is obsolete and replace by explode
........
  r2936 | danydb | 2010-02-07 04:56:17 +0100 (Sun, 07 Feb 2010) | 1 line
  
  remove owner
........
  r2937 | danydb | 2010-02-08 22:34:07 +0100 (Mon, 08 Feb 2010) | 1 line
  
  typo
........
  r2938 | danydb | 2010-02-08 22:34:28 +0100 (Mon, 08 Feb 2010) | 1 line
  
  Start translation for Dutch
........
2010-02-10 18:38:16 +00:00

250 lines
7 KiB
PHP

<?php
/*
* This file is part of PhpCompta.
*
* PhpCompta is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* PhpCompta is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PhpCompta; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* $Revision$ */
// Copyright Author Dany De Bontridder ddebontridder@yahoo.fr
require_once('class_database.php');
require_once("class_icheckbox.php");
require_once("class_ihidden.php");
require_once("class_document.php");
require_once("class_acc_operation.php");
/*! \file
* \brief Common functions
*/
/*!
*\brief Insert data into stock_goods,
*
* \param $p_cn Database object
* \param $p_j_id the j_id
* \param $p_good the goods
* \param $p_quant quantity
* \param $p_type c for credit or d for debit
*
* \return none
* \note Link to jrn gives the date
*/
function InsertStockGoods($p_cn,$p_j_id,$p_good,$p_quant,$p_type)
{
// Retrieve the good account for stock
$code=new fiche($p_cn);
$code->get_by_qcode($p_good);
$code_marchandise=$code->strAttribut(ATTR_DEF_STOCK);
$p_good=FormatString($p_good);
$sql="select f_id from vw_poste_qcode where j_qcode=upper('$p_good')";
$Res=$p_cn->exec_sql($sql);
$r=Database::fetch_array($Res,0);
$f_id=$r['f_id'];
$user=new User($p_cn);
$exercice=$user->get_exercice();
if ( $exercice == 0 ) throw new Exception ('Annee invalide erreur');
$Res=$p_cn->exec_sql("insert into stock_goods (
j_id,
f_id,
sg_code,
sg_quantity,
sg_type,sg_exercice ) values (
$p_j_id,
$f_id,
'$code_marchandise',
$p_quant, '$p_type',$exercice)
");
return $Res;
}
/*!
*\brief test if a jrn op is valid
*
* \param $p_cn db
* \param $p_grpt_id
* \return:
* - 1 is valid
* - 0 is not valid
*/
function isValid ($p_cn,$p_grpt_id) {
$Res=$p_cn->exec_sql("select jr_valid from jrn where jr_grpt_id=$p_grpt_id");
if ( ( $M = Database::num_row($Res)) == 0 ) return 0;
$a=Database::fetch_array($Res,0);
if ( $a['jr_valid'] == 't') return 1;
if ( $a['jr_valid'] == 'f') return 0;
echo_error ("Invalid result = ".$a['result']);
}
/*!
**************************************************
*\brief
* Create a navigation_bar (pagesize)
*
* \param $p_offset first record number
* \param $p_line total of returned row
* \param $p_size current g_pagesize user's preference
* \param $p_page number of the page where the user is
* \param $p_javascript javascript code to add
* \note example :
\verbatim
$step=$_SESSION['g_pagesize'];
$page=(isset($_GET['offset']))?$_GET['page']:1;
$offset=(isset($_GET['offset']))?$_GET['offset']:0;
list ($max_ligne,$list)=ListJrn($cn,$_GET['p_jrn'],$sql,null,$offset,1);
$bar=jrn_navigation_bar($offset,$max_ligne,$step,$page);
\endverbatim
* \return string with the nav. bar
*/
function jrn_navigation_bar($p_offset,$p_line,$p_size=0,$p_page=1,$p_javascript="")
{
echo_debug('user_common',__LINE__,"function jrn_navigation_bar($p_offset,$p_line,$p_size=0,$p_page=1)");
// if the pagesize is unlimited return ""
// in that case there is no nav. bar
if ( $_SESSION['g_pagesize'] == -1 ) return "";
if ( $p_size==0) {
$p_size= $_SESSION['g_pagesize'];
}
// if there is no row return an empty string
if ( $p_line == 0 ) return "";
// Clean url, cut away variable coming frm here
$url=cleanUrl();
// action to clean
$url=str_replace('&p_action=delete','',$url);
// compute max of page
$nb_page=($p_line-($p_line%$p_size))/$p_size;
echo_debug('user_common',__LINE__,"nb_page = $nb_page");
// if something remains
if ( $p_line % $p_size != 0 ) $nb_page+=1;
// if max page == 1 then return a empty string
if ( $nb_page == 1) return "";
// restore the sort
if ( isset($_GET['o']))
$url=$url.'&o='.$_GET['o'];
$r="";
// previous
if ($p_page !=1) {
$e=$p_page-1;
$step=$p_size;
$offset=($e-1)*$step;
$r='<A class="mtitle" href="'.$_SERVER['PHP_SELF']."?".$url."&offset=$offset&step=$step&page=$e&size=$step".'" '.$p_javascript.'>';
//$r.="Pr&eacute;c&eacute;dent";
$r.='<INPUT TYPE="IMAGE" width="12" SRC="image/go-previous.png">';
$r.="</A>&nbsp;&nbsp;";
}
//----------------------------------------------------------------------
// Create a partial bar
// if current page < 11 show 1 to 20
// otherwise show $p_page -10 to $p_page + 10
//----------------------------------------------------------------------
$start_bar=($p_page < 11 )?1:$p_page-10;
$end_bar =($p_page < 11 )?20:$p_page+10;
$end_bar =($end_bar > $nb_page )?$nb_page:$end_bar;
// Create the bar
for ($e=$start_bar;$e<=$end_bar;$e++) {
// do not included current page
if ( $e != $p_page ) {
$step=$p_size;
$offset=($e-1)*$step;
$go=$_SERVER['PHP_SELF']."?".$url."&offset=$offset&step=$step&page=$e&size=$step";
$r.=sprintf('<A class="mtitle" HREF="%s" CLASS="one" %s >%d</A>&nbsp;',$go,$p_javascript,$e);
} else {
$r.="<b> [ $e ] </b>";
} //else
} //for
// next
if ($p_page !=$nb_page) {
// If we are not at the last page show the button next
$e=$p_page+1;
$step=$p_size;
$offset=($e-1)*$step;
$r.='&nbsp;<A class="mtitle" href="'.$_SERVER['PHP_SELF']."?".$url."&offset=$offset&step=$step&page=$e&size=$step".'" '.$p_javascript.' >';
//$r.="Suivant";
$r.='<INPUT TYPE="IMAGE" width="12" SRC="image/go-next.png">';
$r.="</A>";
}
return $r;
}
/*!
* \brief Clean the url, remove the $_GET offset,step, page and size
* \param none
*
* \return the cleaned url
*/
function CleanUrl()
{
// Compute the url
$url="";
$and="";
$get=$_GET;
if ( isset ($get) ) {
foreach ($get as $name=>$value ) {
// we clean the parameter offset, step, page and size
if ( ! in_array($name,array('offset','step','page','size','s','o'))) {
$url.=$and.$name."=".$value;
$and="&";
}// if
}//foreach
}// if
return $url;
}
function redirect($p_string,$p_time=0) {
echo '<HTML><head><META HTTP-EQUIV="REFRESH" content="'.$p_time.';url='.$p_string.'"></head><body> Connecting... </body></html>';
}
/*!\brief remove the useless space, change comma by period and try to return
* a number
*\param $p_num number to format
*\return the formatted number
*/
function toNumber($p_num) {
$p_num=trim($p_num);
if ($p_num=='') return 0;
$p_num=str_replace(',','.',$p_num);
return $p_num;
}
?>