From 710d4bbf27973c151fe59eee301be81844370d27 Mon Sep 17 00:00:00 2001 From: Dany De Bontridder Date: Thu, 2 Dec 2010 20:31:18 +0000 Subject: [PATCH] =?UTF-8?q?0000159:=20Changement=20de=20p=C3=A9riode=20dev?= =?UTF-8?q?rait=20=C3=AAtre=20un=20popup=20en=20html?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/ajax_misc.php | 8 ++- html/js/scripts.js | 89 ++++++++++++++++++++++++++-- include/class_html_input.php | 7 +++ include/class_periode.php | 26 +++++---- include/modify_periode.inc.php | 104 +++++++++++++++++++++++++++++++++ 5 files changed, 216 insertions(+), 18 deletions(-) create mode 100644 include/modify_periode.inc.php diff --git a/html/ajax_misc.php b/html/ajax_misc.php index bc8830d35..8dbd3112d 100644 --- a/html/ajax_misc.php +++ b/html/ajax_misc.php @@ -53,7 +53,7 @@ foreach ($var as $v) } } if ( $cont != 0 ) exit(); -extract($_GET ); +extract($_REQUEST ); set_language(); $cn=new Database($gDossier); @@ -442,4 +442,10 @@ EOF; case 'mod_doc': require_once('modify_mod_document.inc.php'); break; +case 'input_per': + require_once('modify_periode.inc.php'); + break; +case 'save_per': + require_once('modify_periode.inc.php'); + break; } diff --git a/html/js/scripts.js b/html/js/scripts.js index bb439c761..4bc638d4c 100644 --- a/html/js/scripts.js +++ b/html/js/scripts.js @@ -859,11 +859,90 @@ function show_calc() shtml+='
Cette calculatrice vous permet de calculer, écrivez simplement les opérations que vous voulez puis la touche retour. exemple : 1+2+3*(1/5) '; shtml+='

Taper une formule (ex 20*5.1) puis enter
'; -var obj={id: - sid,html: - shtml,drag: - true,style:'position:absolute;display:block;top:30px;left:150px;width:250px;border:1px solid black;background-color:#99b1df;font-size:12;padding: 2 2 2 2;' - }; +var obj={id:sid,html:shtml, + drag:true,style:'position:absolute;display:block;top:30px;left:150px;width:250px;border:1px solid black;background-color:#99b1df;font-size:12;padding: 2 2 2 2;' + }; add_div(obj); this.document.getElementById('inp').focus(); } +function display_periode(p_dossier,p_id) +{ + + try + { + var queryString="gDossier="+p_dossier+"&op=input_per"+"&p_id="+p_id; + var popup={'id': 'mod_periode','cssclass':'op_detail','html':loading(),'style':'position:fixed;top:45%;left:45%', + 'drag':true}; + if ( ! $('mod_periode') ) { + add_div(popup); + } + var action = new Ajax.Request( + "ajax_misc.php" , + { method:'get', + parameters:queryString, + onFailure:ajax_misc_failure, + onSuccess:success_display_periode + } + ); + } + catch (e) + { + alert("display_periode "+e.message); + } + +} +function success_display_periode(req) +{ try + { + + var answer=req.responseXML; + var html=answer.getElementsByTagName('data'); + + if ( html.length == 0 ) + { + var rec=req.responseText; + alert ('erreur :'+rec); + } + + var code_html=getNodeText(html[0]); + code_html=unescape_xml(code_html); + + $('mod_periode').innerHTML=code_html; + } + catch (e) + { + alert("success_display_periode".e.message); + } + try + { + code_html.evalScripts(); + } + catch(e) + { + alert("success_display_periode Impossible executer script de la reponse\n"+e.message); + } + +} +function save_periode(obj) +{ + try + { + var queryString="?"+$(obj).serialize()+"&op=save_per"; + + var action = new Ajax.Request( + "ajax_misc.php" , + { method:'post', + parameters:queryString, + onFailure:ajax_misc_failure, + onSuccess:success_display_periode + } + ); + + } + catch (e) + { + alert("display_periode "+e.message); + } + + return false; +} \ No newline at end of file diff --git a/include/class_html_input.php b/include/class_html_input.php index 7ade1266c..aff77935d 100755 --- a/include/class_html_input.php +++ b/include/class_html_input.php @@ -372,4 +372,11 @@ class HtmlInput ob_clean(); return $r; } + static function display_periode($p_id) + { + $r=sprintf('Modifier', + dossier::id(), + $p_id); + return $r; + } } diff --git a/include/class_periode.php b/include/class_periode.php index 615dcbe9d..5ddd0af13 100644 --- a/include/class_periode.php +++ b/include/class_periode.php @@ -133,16 +133,8 @@ class Periode $this->cn->exec_sql("update jrn_periode set status='OP' ". " where jrn_def_id=".$this->jrn_def_id." and ". " p_id = ".$this->p_id); - /* if all ledgers have this periode open then synchro with - the table parm_periode - */ - $nJrn=$this->cn->count_sql( "select * from jrn_periode where ". - " p_id=".$this->p_id); - $nJrnPeriode=$this->cn->count_sql( "select * from jrn_periode where ". - " p_id=".$this->p_id." and status='OP'"); - - if ( $nJrnPeriode==$nJrn) - $this->cn->exec_sql("update parm_periode set p_closed=false where p_id=".$this->p_id); + /* if one ledger is open then the periode is open */ + $this->cn->exec_sql("update parm_periode set p_closed=false where p_id=".$this->p_id); return; } @@ -244,12 +236,22 @@ class Periode { $closed=''; $closed.=' Cloturer'; - $change=''; + + if ($l_line['count_op'] == 0 ) + { + $change=HtmlInput::display_periode($l_line['p_id']); + } + else + { + $change="Non modifiable"; + } + $change=td($change); + /* $change.=' Changer"; - + */ $reopen=td(""); diff --git a/include/modify_periode.inc.php b/include/modify_periode.inc.php new file mode 100644 index 000000000..633176d5c --- /dev/null +++ b/include/modify_periode.inc.php @@ -0,0 +1,104 @@ +check_action(PARPER) == 0 ) + { + $html='
Accès interdit
'; + $err=1; + } + else + { + switch ($op) + { + case 'input_per': + $per=new Periode($cn,$_GET['p_id']); + $per->load(); + $limit=$per->get_date_limit($_GET['p_id']); + + $p_start=new IDate('p_start'); + $p_start->value=$limit['p_start']; + $p_end = new IDate('p_end'); + $p_end->value = $limit['p_end']; + $p_exercice=new INum('p_exercice'); + $p_exercice->value=$per->p_exercice; + + $html='

Modifier les dates de début et fin de période

'; + $html.='

Cela pourrait avoir un impact sur les opérations déjà existantes

'; + $html.='
'; + $html.=dossier::hidden(); + $html.=''; + + $html.=tr(td(' Début période : ').td($p_start->input())); + $html.=tr(td(' Fin période : ').td($p_end->input())); + $html.=tr(td(' Exercice : ').td($p_exercice->input())); + + $html.=HtmlInput::submit('sauver','sauver'); + $html.=HtmlInput::button('close','Fermer','onclick="removeDiv(\'mod_periode\')"'); + $html.=HtmlInput::hidden('p_id',$_GET['p_id']); + $html.=''; + break; + case 'save_per': + $per=new Periode($cn,$_POST['p_id']); + $per->load(); + if ( isDate($_POST['p_start']) == null || + isDate($_POST['p_end'] == null ) || + isNumber($_POST['p_exercice']) == 0 || + $_POST['p_exercice'] > 2099 || + $_POST['p_exercice'] < 2000 ) + { + $html='

Modifier les dates de début et fin de période

'; + $html.="
Erreur date invalide
"; + + $html.=HtmlInput::button('close','Fermer','onclick="removeDiv(\'mod_periode\')"'); + } + else + { + $sql="update parm_periode set p_start=to_date($1,'DD.MM.YYYY'),p_end=to_date($2,'DD.MM.YYYY'),p_exercice=$3 where p_id=$4"; + try { + $cn->exec_sql($sql,array($_POST['p_start'],$_POST['p_end'],$_POST['p_exercice'],$_POST['p_id'])); + $html='

Modifier les dates de début et fin de période

'; + $html.='

Sauvé

'; + + $html.=HtmlInput::button('close','Fermer','onclick=" refresh_window();"'); + + + } catch (Exception $e) { + $html=alert($e->getTrace(),true); + } + + } + break; + } + } +$html=escape_xml($html); +header('Content-type: text/xml; charset=UTF-8'); +echo ''; +echo ''; +echo ''.$html.''; +echo ''; \ No newline at end of file