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
........
350 lines
10 KiB
PHP
350 lines
10 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
|
|
*/
|
|
// Copyright Author Dany De Bontridder ddebontridder@yahoo.fr
|
|
/* $Revision*/
|
|
/*! \file
|
|
* \brief show a detailled operation in a popup window
|
|
* Update : add a document , change the comment, the concerned op....
|
|
*
|
|
*/
|
|
include_once ("ac_common.php");
|
|
include_once("central_inc.php");
|
|
include_once("user_common.php");
|
|
require_once('class_database.php');
|
|
include_once("jrn.php");
|
|
require_once ("constant.php");
|
|
require_once('class_acc_reconciliation.php');
|
|
require_once('class_acc_operation.php');
|
|
echo js_include('scripts.js');
|
|
echo js_include('prototype.js');
|
|
echo js_include('anc_script.js');
|
|
/* Admin. Dossier */
|
|
$gDossier=dossier::id();
|
|
$cn=new Database($gDossier);
|
|
|
|
include_once ("class_user.php");
|
|
$User=new User($cn);
|
|
$User->Check();
|
|
$User->check_dossier(dossier::id());
|
|
|
|
html_page_start($User->theme,"onLoad='window.focus();'");
|
|
require_once('class_dossier.php');
|
|
|
|
$acc=new Acc_Operation($cn);
|
|
if (isset($_REQUEST['line']))
|
|
$acc->jr_id=$_REQUEST ['line'];
|
|
else
|
|
$acc->jr_id=$_REQUEST ['jr_id'];
|
|
|
|
$p_jrn=$acc->get_ledger();
|
|
|
|
if ( isset ( $_GET['action'] ) ) {
|
|
$action=$_GET['action'];
|
|
}
|
|
$p_view=(isset($_REQUEST['p_view']))?$_REQUEST['p_view']:"error";
|
|
|
|
if ( isset ( $_REQUEST['action'] ) ) {
|
|
$action=$_REQUEST['action'];
|
|
}
|
|
if ( ! isset ( $action )) {
|
|
echo_error("modify_op.php No action asked ");
|
|
exit();
|
|
}
|
|
|
|
// Javascript
|
|
echo JS_LEDGER;
|
|
?>
|
|
<script language="javascript">
|
|
function show_div (p_div) {
|
|
// show the div
|
|
// hide the div
|
|
if ( document.getElementById(p_div) ) {
|
|
var a=document.getElementById(p_div);
|
|
a.style.display="block";
|
|
}
|
|
}
|
|
function hide_div (p_div) {
|
|
// hide the div
|
|
if ( document.getElementById(p_div) ) {
|
|
var a=document.getElementById(p_div);
|
|
a.style.display="none";
|
|
}
|
|
}
|
|
</script>
|
|
<?php
|
|
echo_debug(__FILE__,__LINE__,"action is $action");
|
|
//-----------------------------------------------------
|
|
if ( $action == 'update' ) {
|
|
if ( $User->check_jrn($p_jrn) =='X' ) {
|
|
echo ' <script> window.close();</script>';
|
|
|
|
NoAccess();
|
|
exit -1;
|
|
|
|
}
|
|
// p_id is jrn.jr_id
|
|
$p_id=$_GET["line"];
|
|
echo_debug('modify_op.php',__LINE__," action = update p_id = $p_id");
|
|
|
|
$view='<h2 class="error">Erreur vue inconnue</h2>';
|
|
|
|
// show the detailled operation
|
|
if ( $p_view == 'S' )
|
|
$view='<div id="simple">';
|
|
else
|
|
$view='<div id="simple" style="display:none">';
|
|
|
|
$view.='<h2 class="info">Vue simple</h2>';
|
|
$view.='<FORM METHOD="POST" enctype="multipart/form-data" ACTION="modify_op.php">';
|
|
$view.=dossier::hidden();
|
|
$readonly=($p_view=='E')?0:1;
|
|
$view.=ShowOperationUser($cn,$p_id,$readonly);
|
|
$view.='<hr>';
|
|
$view.='<input type="button" onclick="hide_div(\'simple\');show_div(\'expert\');" value="Vue expert">';
|
|
$view.='<INPUT TYPE="Hidden" name="action" value="update_record">';
|
|
$view.="<br>";
|
|
$view.="<br>";
|
|
$view.="<br>";
|
|
if ( $User->check_jrn($p_jrn) == 'W')
|
|
$view.=($p_view == 'S')?HtmlInput::submit('update_record','Enregistre'):'';
|
|
$view.=" ";
|
|
$view.='<input type="button" value="Fermer" onClick="window.close(); self.opener.RefreshMe();">';
|
|
$view.='</FORM>';
|
|
$view.='</div>';
|
|
|
|
if ( $p_view == 'S' )
|
|
$view.='<div id="expert" style="display:none">';
|
|
else
|
|
$view.='<div id="expert" style="display:block">';
|
|
|
|
$view.='<h2 class="info">Vue expert</h2>';
|
|
$view.='<FORM METHOD="POST" enctype="multipart/form-data" ACTION="modify_op.php">';
|
|
$view.=dossier::hidden();
|
|
$readonly=($p_view=='S')?0:1;
|
|
$view.=ShowOperationExpert($cn,$p_id,$readonly);
|
|
$view.='<hr>';
|
|
$view.='<input type="button" onclick="hide_div(\'expert\');show_div(\'simple\')" value="Vue simple">';
|
|
$view.='<INPUT TYPE="Hidden" name="action" value="update_record">';
|
|
$view.="<br>";
|
|
$view.="<br>";
|
|
$view.="<br>";
|
|
if ( $User->check_jrn($p_jrn) == 'W')
|
|
$view.=($p_view == 'E') ?HtmlInput::submit('update_record','Enregistre'):'';
|
|
$view.=" ";
|
|
$view.='<input type="button" value="Fermer" onClick="window.close(); self.opener.RefreshMe();">';
|
|
$view.='</div>';
|
|
|
|
|
|
echo $view;
|
|
|
|
}
|
|
//---------------------------------------------------------------------
|
|
// action = vue ca
|
|
//---------------------------------------------------------------------
|
|
if ( $action=="view_ca") {
|
|
|
|
/*!\todo add security here */
|
|
$p_id=$_GET["line"];
|
|
|
|
$view='<div id="simple">';
|
|
$view.='<h2 class="info">Vue simple</h2>';
|
|
$view.=ShowOperationUser($cn,$p_id,0);
|
|
$view.='<hr>';
|
|
$view.='<input type="button" onclick="hide_div(\'simple\');show_div(\'expert\');" value="Vue Expert">';
|
|
$view.='<input type="button" value="Fermer" onClick="window.close(); ">';
|
|
$view.='</div>';
|
|
|
|
|
|
|
|
$view.='<div id="expert" style="display:none">';
|
|
|
|
$view.='<h2 class="info">Vue expert</h2>';
|
|
|
|
$view.=ShowOperationExpert($cn,$p_id,0);
|
|
$view.='<hr>';
|
|
$view.='<input type="button" onclick="hide_div(\'expert\');show_div(\'simple\')" value="Vue Simple">';
|
|
$view.='<input type="button" value="Fermer" onClick="window.close(); ">';
|
|
$view.='</div>';
|
|
echo $view;
|
|
exit();
|
|
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
// update the record and upload files
|
|
//----------------------------------------------------------------------
|
|
if ( isset($_POST['update_record']) ) {
|
|
/* in what ledger are we working */
|
|
$acc=new Acc_Operation($cn);
|
|
$acc->jr_id=$_POST['jr_id'];
|
|
$l=$acc->get_ledger();
|
|
if ( $User->check_jrn($l) != 'W' ) {
|
|
echo ' <script> window.close();</script>';
|
|
NoAccess();
|
|
exit -1;
|
|
}
|
|
try {
|
|
// NO UPDATE except rapt & comment && upload pj && PJ Number
|
|
$cn->start();
|
|
$acc=new Acc_Operation($cn);
|
|
$acc->jr_id=$_POST['jr_id'];
|
|
/* set the pj */
|
|
$acc->pj=$_POST['pj']; $acc->set_pj();
|
|
$acc->operation_update_comment($_POST['comment']);
|
|
/* insert now the grouping */
|
|
|
|
if ( trim($_POST['rapt']) != "" ) {
|
|
$rec=new Acc_Reconciliation ($cn);
|
|
$rec->set_jr_id($_POST['jr_id']);
|
|
|
|
if ( strpos($_POST['rapt'],',') != 0 )
|
|
{
|
|
$aRapt=explode(',',$_POST['rapt']);
|
|
/* reconcialition */
|
|
|
|
foreach ($aRapt as $rRapt) {
|
|
if ( isNumber($rRapt) == 1 )
|
|
{
|
|
// Add a "concerned operation to bound these op.together
|
|
//
|
|
$rec->insert($rRapt);
|
|
}
|
|
}
|
|
} else
|
|
if ( isNumber($_POST['rapt']) == 1 )
|
|
{
|
|
$rec->insert($_POST['rapt']);
|
|
}
|
|
}
|
|
|
|
if ( isset ($_FILES)) {
|
|
echo_debug("modify_op.php",__LINE__, "start upload doc.");
|
|
$cn->save_upload_document($_POST['jr_grpt_id']);
|
|
}
|
|
if ( isset ($_POST['is_paid'] ))
|
|
$Res=$cn->exec_sql("update jrn set jr_rapt='paid' where jr_id=$1",array($_POST['jr_id']));
|
|
|
|
if ( isset ($_POST['to_remove'] )) {
|
|
/*! \note we don't remove the document file if another
|
|
* operation needs it.
|
|
*/
|
|
$ret=$cn->exec_sql("select jr_pj from jrn where jr_id=$1",array($_POST['jr_id']));
|
|
if (Database::num_row($ret) != 0) {
|
|
$r=Database::fetch_array($ret,0);
|
|
$old_oid=$r['jr_pj'];
|
|
if (strlen($old_oid) != 0)
|
|
{
|
|
// check if this pj is used somewhere else
|
|
$c=$cn->count_sql("select * from jrn where jr_pj=".$old_oid);
|
|
if ( $c == 1 )
|
|
$cn->lo_unlink($old_oid);
|
|
}
|
|
$cn->exec_sql("update jrn set jr_pj=null, jr_pj_name=null, ".
|
|
"jr_pj_type=null where jr_id=$1",array($_POST['jr_id']));
|
|
}
|
|
|
|
}
|
|
//-------------------------------------
|
|
// CA
|
|
//------------------------------------
|
|
$own = new Own($cn);
|
|
|
|
if ( $own->MY_ANALYTIC != "nu" )
|
|
{
|
|
// Check the total only for mandatory
|
|
//
|
|
// if ( $own->MY_ANALYTIC == "ob") {
|
|
$tab=0; $row=1;
|
|
while (1) {
|
|
if ( !isset ($_POST['nb_t'.$tab]))
|
|
break;
|
|
$tot_tab=0;
|
|
|
|
for ($i_row=0;$i_row <= MAX_COMPTE;$i_row++) {
|
|
if ( ! isset($_POST['val'.$tab.'l'.$i_row]))
|
|
continue;
|
|
$tot_tab+=$_POST['val'.$tab.'l'.$i_row];
|
|
}
|
|
|
|
if ( $tot_tab != $_POST['amount_t'.$tab]) {
|
|
echo '<script>alert ("Erreur montant dans Comptabilite analytique\n Operation annulee")</script>';
|
|
redirect($_SERVER['HTTP_REFERER']);
|
|
return;
|
|
}
|
|
$tot_tab=0;
|
|
$tab++;
|
|
}
|
|
// }
|
|
|
|
// we need first old the j_id and j_poste
|
|
// so we fetch them all from the db
|
|
$sql="select j_id,j_poste,to_char(j_date,'DD.MM.YYYY') as j_date,j_debit ".
|
|
"from jrn join jrnx on (j_grpt=jr_grpt_id) ".
|
|
"where jr_id=$1";
|
|
$res=$cn->exec_sql($sql,array($_POST['jr_id']));
|
|
|
|
$array_jid=Database::fetch_all($res);
|
|
// if j_poste match 6 or 7 we insert them
|
|
$count=0;
|
|
$group=$cn->get_next_seq("s_oa_group");
|
|
|
|
foreach( $array_jid as $row_ca) {
|
|
echo_debug(__FILE__.':'.__LINE__,"array is ",$row_ca);
|
|
if ( ereg("^[6,7]+",$row_ca['j_poste'])) {
|
|
echo_debug(__FILE__.':'.__LINE__,"count is ",$count);
|
|
$op=new Anc_Operation($cn);
|
|
$op->delete_by_jid($row_ca['j_id']);
|
|
$op->j_id=$row_ca['j_id'];
|
|
$op->oa_debit=$row_ca['j_debit'];
|
|
$op->oa_date=$row_ca['j_date'];
|
|
$op->oa_group=$group;
|
|
$op->oa_description=$_POST['comment'];
|
|
$op->save_form_plan($_POST,$count);
|
|
$count++;
|
|
} //if ereg
|
|
}//foreach
|
|
}// if ( $own->MY_ANALYTIC != "nu" )
|
|
} catch (Exception $e) {
|
|
echo '<span class="error">'.
|
|
'Erreur dans l\'enregistrement '.
|
|
__FILE__.':'.__LINE__.' '.
|
|
$e->getMessage();
|
|
echo_debug(__FILE__,__LINE__,$e->getMessage());
|
|
$cn->rollback();
|
|
exit();
|
|
}
|
|
|
|
$cn->commit();
|
|
echo ' <script>
|
|
window.close();
|
|
self.opener.RefreshMe();
|
|
</script>';
|
|
} // if update_record
|
|
//-----------------------------------------------------
|
|
if ( $action == 'delete' ) {
|
|
$rec=new Acc_Reconciliation ($cn);
|
|
$rec->set_jr_id($_GET ['line']);
|
|
$rec->remove($_GET['line2']);
|
|
echo ' <script>
|
|
window.close();
|
|
self.opener.RefreshMe();
|
|
</script>';
|
|
}
|
|
html_page_stop();
|
|
?>
|