Check(); html_page_start($User->theme,"onLoad='window.focus();'"); echo JS_VIEW_JRN_MODIFY; if ( isset( $_REQUEST['p_jrn'] )) { $p_jrn=$_GET['p_jrn']; } // Check privilege // CheckJrn verify that the user is not an admin // an admin has all right if ( CheckJrn($gDossier,$_SESSION['g_user'],$_GET['p_jrn']) != 2 ) { NoAccess(); exit -1; } list ($l_array,$max_deb,$max_cred)=get_data($cn,$_GET['jrn_op']); foreach ($l_array as $key=>$element) { ${"e_$key"}=$element; echo_debug('annulation.php',__LINE__,"e_$key =$element"); } // cancel an operation if ( isset ($_POST['annul']) ) { /* Confirm it first */ if ( ! isset ( $_POST['confirm'])) { ?>
Attention: l'effacement d'une opération peut rompre la séquence de la numérotation des factures surtout celles générées automatiquement, soyez très prudent quand vous effacez. La pièce jointe sera elle aussi effacée. Si vous utilisez la comptabilité analytique les opérations liées seront effacées.
Voulez-vous vraiment annuler cette information soit par une remise à zéro des montants soit par son écriture inverse ?
alert('$msg');"; // set an incorrect pid to get out from here $p_id=-1; } if ($p_id != -1 ) { // A // userPref contient la periode par default $userPref=$User->get_periode($cn); list ($l_date_start,$l_date_end)=get_periode($cn,$userPref); $per=new Periode($cn); $per->set_jrn($p_jrn); $per->set_periode($userPref); // Periode ferme if ( $per->is_open()==0) { $msg="Votre periode par defaut est fermee, changez vos preferences"; echo_error($msg); echo ""; $p_id=-1; } if ( $p_id != -1 ) { //B // Test whether date of the operation is in a closed periode // get the period_id $p=ExecSqlParam($cn,"select jr_tech_per from jrn where jr_grpt_id=$1",array($_REQUEST['jrn_op'])); $period_id=pg_fetch_result($p,0,0); // thanks jrn_op (jrn.jr_id) we find out the concerned ledger $sql="select jr_def_id from jrn where jr_grpt_id=".$_REQUEST['jrn_op']; $r=ExecSql($cn,$sql); $nJrn=pg_fetch_result($r,0,0); $per=new Periode($cn); $per->set_jrn($nJrn); $per->set_periode($period_id); // Check the period_id if ( $per->is_open() == 0 ) { try { // if the operation is in a closed or centralized period // the operation is voided thanks the opposite operation StartSql($cn); $grp_new=NextSequence($cn,'s_grpt'); $seq=NextSequence($cn,"s_jrn"); $oJrn=new Acc_Ledger($cn,$l_array['jr_def_id']); $p_internal=$oJrn->compute_internal_code($seq); $sql= "insert into jrn ( jr_id,jr_def_id,jr_montant,jr_comment, jr_date,jr_grpt_id,jr_internal ,jr_tech_per, jr_valid ) select $seq,jr_def_id,jr_montant,'Annulation '||jr_comment, now(),$grp_new,'$p_internal', $userPref, true from jrn where jr_grpt_id=".$_POST['p_id']; $Res=ExecSql($cn,$sql); // Check return code if ( $Res == false) throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]")); // Make also the change into jrnx $sql= "insert into jrnx ( j_date,j_montant,j_poste,j_grpt, j_jrn_def,j_debit,j_text,j_internal,j_tech_user,j_tech_per,j_qcode ) select now(),j_montant,j_poste,$grp_new, j_jrn_def,not (j_debit),j_text,'$p_internal','".$User->id."', $userPref,j_qcode from jrnx where j_grpt=".$_POST['p_id']; $Res=ExecSql($cn,$sql); // Check return code if ( $Res == false) throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]")); // Mark the operation invalid into the ledger // to avoid to nullify twice the same op. $sql="update jrn set jr_comment='Annule : '||jr_comment where jr_grpt_id=".$_POST['p_id']; $Res=ExecSql($cn,$sql); // Check return code if ( $Res == false) throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]")); // Set the record to A (annulate) in quant_sold and quand_purchase $Res=ExecSql($cn,"update quant_sold set ". " qs_valid='A' where qs_internal='".$l_array['jr_internal']."'" ); if ( $Res == false) throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]")); $Res=ExecSql($cn,"update quant_purchase set ". " qp_valid='A' where qp_internal='".$l_array['jr_internal']."'" ); if ( $Res == false) throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]")); // Add a "concerned operation to bound these op.together // $Res=InsertRapt($cn,$seq,$l_array['jr_id']); // Check return code if ( $Res == false ) { throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]"));} // the table stock must updated // also in the stock table $sql="delete from stock_goods where sg_id = any ( select sg_id from stock_goods natural join jrnx where j_grpt=".$_POST['p_id'].")"; $Res=ExecSql($cn,$sql); // Check return code if ( $Res == false) throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]")); } catch (Exception $e) { Rollback($cn); $msg="Désolé mais il n a pas été possible d'annuler ". "cette opération"; echo ""; echo ''. 'Erreur : '. __FILE__.':'.__LINE__.' '. $e->getMessage(); echo ''; echo 'Postez ce message sur '. ''. 'le forum de www.phpcompta.org '. '
'; $p_id=-1; exit(-1); } Commit($cn); // close the window echo ''; echo 'Postez ce message sur '. ''. 'le forum de www.phpcompta.org '. '
'; $p_id=-1; exit(-1); } Commit($cn); echo '