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
........
250 lines
7 KiB
PHP
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écédent";
|
|
$r.='<INPUT TYPE="IMAGE" width="12" SRC="image/go-previous.png">';
|
|
$r.="</A> ";
|
|
}
|
|
//----------------------------------------------------------------------
|
|
// 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> ',$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.=' <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;
|
|
}
|
|
?>
|