843 lines
28 KiB
PHP
843 lines
28 KiB
PHP
<?php
|
|
/*
|
|
* This file is part of NOALYSS.
|
|
*
|
|
* NOALYSS 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.
|
|
*
|
|
* NOALYSS 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 NOALYSS; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
|
|
// Copyright Author Dany De Bontridder danydb@aevalys.eu
|
|
|
|
/*!\file
|
|
* \brief this file respond to an ajax request and return an object with the ctl and the html string
|
|
* at minimum
|
|
\verbatim
|
|
{'ctl':'','html':''}
|
|
\endverbatim
|
|
* The parameters are
|
|
* - gDossier
|
|
* - op
|
|
- dc Detail of a card
|
|
parameter : $qcode , optional ro for readonly and nohistory without the history button, nofollowup
|
|
- bc Blank Card : display form for adding a card
|
|
parameter fd_id (fiche_def:fd_id)
|
|
- st Show Type : select type of card
|
|
parameter fil : possible values of fd_id if empty it means all the fiche cat.
|
|
- sc Save Card : insert a new card (call first bc)
|
|
- upc update a card
|
|
specific parameter qcode
|
|
- fs Form to search card
|
|
parameter like
|
|
- inp : the input text field to update
|
|
- str : current content of the input text field (inp)
|
|
- label : the element to put the name of the card
|
|
- price : the element to put the price of the card (if exists)
|
|
- tvaid : the element to put the tvaid of the card (if exists)
|
|
- jrn : the concerned ledger (or all)
|
|
- typecard : possible values are cred, deb, filter (list of fd_id)
|
|
- ac Add Category
|
|
- cat type of cat to add (FICHE_TYPE_CLIENT,...)
|
|
* - ctl (to return)
|
|
* - popup
|
|
* - ref if we want to refresh the window
|
|
* - acc is accounting is visible or not
|
|
*\see fiche fiche::Save constant.php
|
|
*/
|
|
if ( ! defined('ALLOWED')) die (_('Accès non autorisé'));
|
|
|
|
require_once NOALYSS_INCLUDE.'/lib/function_javascript.php';
|
|
require_once NOALYSS_INCLUDE.'/lib/ac_common.php';
|
|
|
|
mb_internal_encoding("UTF-8");
|
|
|
|
$var=array('gDossier','op2','ctl');
|
|
$cont=0;
|
|
/* check if mandatory parameters are given */
|
|
foreach ($var as $v)
|
|
{
|
|
if ( ! isset ($_REQUEST [$v] ) )
|
|
{
|
|
echo "$v._(' is not set ')";
|
|
$cont=1;
|
|
}
|
|
}
|
|
extract($_REQUEST, EXTR_SKIP );
|
|
|
|
if ( $cont != 0 ) exit();
|
|
|
|
set_language();
|
|
|
|
$http=new HttpInput();
|
|
$cn=Dossier::connect();
|
|
global $g_user;
|
|
$g_user=new Noalyss_User($cn);
|
|
$g_user->check(true);
|
|
$g_user->check_dossier($gDossier,true);
|
|
$html=var_export($_REQUEST,true);
|
|
// For storing extra information , example the HTML elt id to update
|
|
// after creating
|
|
$extra="";
|
|
switch($op2)
|
|
{
|
|
case 'attribute':
|
|
require_once "ajax/ajax_card_attribute.php";
|
|
return ;
|
|
/* ------------------------------------------------------------ */
|
|
/* Display card detail */
|
|
/* ------------------------------------------------------------ */
|
|
|
|
case 'dc':
|
|
$f=new Fiche($cn);
|
|
/* add title + close */
|
|
$qcode=$http->request("qcode","string",false);
|
|
// if there is no qcode then try to find it thanks the card id
|
|
if ( $qcode == false ){
|
|
$f->id=$http->get("f_id","number","0");
|
|
if ( $f->id==0) {
|
|
$html=HtmlInput::title_box(_("Fiche"), $ctl,"close","","y");
|
|
$html.='<h2 class="error">'._('Aucune fiche demandée').'</h2>';
|
|
break;
|
|
}
|
|
$qcode=$f->get_quick_code();
|
|
} else {
|
|
$f->get_by_qcode($qcode);
|
|
|
|
}
|
|
$title=$f->getLabelCategory();
|
|
$html=HtmlInput::title_box($title, $ctl,"close","","y");
|
|
|
|
// after save , we can either show a card in readonly or update a row
|
|
$safter_save=$http->request("after_save","string","1");
|
|
switch ($safter_save)
|
|
{
|
|
case "1":
|
|
// show a card it readonly and fade it
|
|
$after_save="update_card(this)";
|
|
break;
|
|
case "2":
|
|
// update a row in the table X
|
|
$after_save="card_update_row(this)";
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if ( $qcode != null)
|
|
{
|
|
$can_modify=$g_user->check_action(FIC);
|
|
if ( isset($ro) )
|
|
{
|
|
$can_modify=0;
|
|
}
|
|
if ( $can_modify==1)
|
|
$card=$f->Display(false,$ctl);
|
|
else
|
|
$card=$f->Display(true);
|
|
if ( $card == 'FNT' )
|
|
{
|
|
$html.='<h2 class="error">'._('Fiche non trouvée').'</h2>';
|
|
$html.='<div style="text-align:center">'.HtmlInput::button_close($ctl).'</div>';
|
|
}
|
|
else
|
|
{
|
|
|
|
if ($can_modify==1)
|
|
{
|
|
$html.='<form id="form_'.$ctl.'" method="get" onsubmit="'.$after_save.';return false;">';
|
|
$html.=dossier::hidden();
|
|
$html.=HtmlInput::hidden('f_id',$f->id);
|
|
$html.=HtmlInput::hidden('ctl',$ctl);
|
|
}
|
|
$html.=$card;
|
|
$html.='<p style="text-align:center">';
|
|
$html.=HtmlInput::button_close($ctl);
|
|
if ( $can_modify==1)
|
|
{
|
|
$html.=HtmlInput::submit('save',_('Sauver'));
|
|
}
|
|
if ( ! isset ($nohistory))$html.=HtmlInput::history_card_button($f->id,_('Historique'));
|
|
if ( ! isset ($nofollowup))$html.=HtmlInput::followup_card_button($f->id,_('Suivi'));
|
|
$button_pdf=HtmlInput::button_anchor(_("PDF"),"export.php?".http_build_query([
|
|
"act"=>"PDF:card",
|
|
"card_id"=>$f->id,
|
|
"gDossier"=>Dossier::id()
|
|
]));
|
|
$html.=$button_pdf;
|
|
// Display a remove button if not used and can modify card
|
|
if ( $can_modify == 1 && $f->is_used()==FALSE)
|
|
{
|
|
$js=str_replace('"',"'",json_encode(["gDossier"=>Dossier::id(),'op'=>'card','op2'=>"rm_card","f_id"=>$f->id,'ctl'=>$ctl]));
|
|
$html.=HtmlInput::button_action(_("Efface"), "delete_card($js)","x","smallbutton");
|
|
}
|
|
$html.='</p>';
|
|
if ($can_modify==1)
|
|
{
|
|
$html.='</form>';
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$html.='<h2 class="error">'._('Aucune fiche demandée').'</h2>';
|
|
}
|
|
break;
|
|
/* ------------------------------------------------------------ */
|
|
/* Blank card */
|
|
/* ------------------------------------------------------------ */
|
|
case 'bc':
|
|
if ( $g_user->check_action(FICADD)==1 || $g_user->check_action(FIC)==1)
|
|
{
|
|
/* get cat. name */
|
|
$cat_name=$cn->get_value('select fd_label from fiche_def where fd_id=$1',
|
|
array($fd_id));
|
|
$r=HtmlInput::title_box($cat_name, $ctl,p_draggable:true);
|
|
$f=new Fiche($cn);
|
|
$r.='<form id="save_card" method="POST" onsubmit="this.ipopup=\''.$ctl.'\';save_card(this);return false;" >';
|
|
$r.=dossier::hidden();
|
|
$r.=(isset($ref))?HtmlInput::hidden('ref',1):'';
|
|
$r.=HtmlInput::hidden('fd_id',$fd_id);
|
|
$r.=HtmlInput::hidden('ctl',$ctl);
|
|
$r.=$f->blank($fd_id);
|
|
$r.='<p style="text-align:center">';
|
|
$r.=HtmlInput::submit('sc',_('Sauve'));
|
|
$r.=HtmlInput::button_close($ctl);
|
|
$r.='</p>';
|
|
if ( isset ($eltid)) {
|
|
$r.=HtmlInput::hidden("eltid", $eltid);
|
|
}
|
|
// Action after save = 0, the card is display one second and fade out
|
|
$after_save=$http->get("after_save","number",0);
|
|
$r.=HtmlInput::hidden("after_save",$after_save);
|
|
$r.='</form>';
|
|
$html=$r;
|
|
}
|
|
else
|
|
{
|
|
$html=alert(_('Action interdite'),true);
|
|
}
|
|
break;
|
|
/* ------------------------------------------------------------ */
|
|
/* Show Type */
|
|
/* Before inserting a new card, the type must be selected */
|
|
/* ------------------------------------------------------------ */
|
|
case 'st':
|
|
$sql="select fd_id,fd_label,fd_description from fiche_def";
|
|
/* if we filter thanks the ledger*/
|
|
if ( $ledger != -1 )
|
|
{
|
|
/* we want the card for deb or cred or both of this ledger */
|
|
switch( $fil )
|
|
{
|
|
case -1:
|
|
$l=new Acc_Ledger($cn,$ledger);
|
|
$array=$l->get_all_fiche_def();
|
|
$array=(empty($array))?"-1":$array;
|
|
$where=' where fd_id in ('.$l->get_all_fiche_def().')';
|
|
break;
|
|
case 'cred':
|
|
$l=new Acc_Ledger($cn,$ledger);
|
|
$prop=$l->get_propertie();
|
|
if ( empty($prop) || empty($prop['jrn_def_fiche_cred']))
|
|
{
|
|
$where ="";
|
|
}else {
|
|
$where=' where fd_id in ('.$prop['jrn_def_fiche_cred'].')';
|
|
}
|
|
break;
|
|
case 'deb':
|
|
$l=new Acc_Ledger($cn,$ledger);
|
|
$prop=$l->get_propertie();
|
|
if ( empty($prop) || empty($prop['jrn_def_fiche_deb']) ) {
|
|
$where = "" ;
|
|
} else {
|
|
$where=' where fd_id in ('.$prop['jrn_def_fiche_deb'].')';
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
/* we filter thanks a given model of card */
|
|
if ( isset($cat) && ! empty($cat))
|
|
{
|
|
$where=sprintf(' where frd_id in ('.sql_string ($cat).')');
|
|
}
|
|
elseif ( isset($fil) && noalyss_strlentrim($fil) > 0 && $fil != -1 )
|
|
{
|
|
/* we filter thanks a given list of category of card
|
|
*/
|
|
$where=sprintf(" where fd_id in (%s)",
|
|
sql_string($fil));
|
|
} else
|
|
{
|
|
// create any type of cards
|
|
$where ="";
|
|
}
|
|
}
|
|
if ( strpos($where," in ()") != 0)
|
|
{
|
|
$html=_("Aucune catégorie de fiche ne correspond à".
|
|
" votre demande, le journal pourrait n'avoir accès à aucune fiche");
|
|
break;
|
|
}
|
|
$sql.=" ".$where." order by fd_label";
|
|
$array=$cn->get_array($sql);
|
|
|
|
$list_fiche="";
|
|
if ( empty($array))
|
|
{
|
|
$html=_("Aucune catégorie de fiche ne correspond à votre demande");
|
|
if ( DEBUGNOALYSS > 0 ) $html.=$sql;
|
|
}
|
|
else
|
|
{
|
|
$html=HtmlInput::title_box(_("Choix de la catégorie"), $ctl);
|
|
$r='';
|
|
|
|
$r.='<div dd>';
|
|
$r.='<p style="padding-left:2em">';
|
|
$r.=_("Choisissez la catégorie de fiche à laquelle vous aimeriez ajouter une fiche").'</p>';
|
|
if ( ! isset($eltid)) $eltid="";
|
|
$msg=_('Choisissez une catégorie svp');
|
|
$r.='<span id="error_cat" style="display:none" class="notice"></span>';
|
|
$r.=dossier::hidden();
|
|
$r.=(isset($ref))?HtmlInput::hidden('ref',1):'';
|
|
$r.=_('Cherche').' '.HtmlInput::filter_table("cat_card_table", '0,1', 0);
|
|
$r.='<table id="cat_card_table" class="result">';
|
|
for ($i=0;$i<count($array);$i++)
|
|
{
|
|
$nb_count=$cn->get_value("select count(*) from fiche where fd_id=$1",[$array[$i]['fd_id']]);
|
|
$list_fiche.=sprintf("<fiche_cat_item>%d</fiche_cat_item>",$array[$i]['fd_id']);
|
|
$class=($i%2==0)?' class="even" ':' class="odd" ';
|
|
$r.='<tr '.$class.' id="select_cat_row_'.$array[$i]['fd_id'].'">';
|
|
$r.='<td >';
|
|
$r.='<a href="javascript:void(0)" onclick="select_cat(\''.$array[$i]['fd_id'].'\','.$gDossier.',\''.$eltid.'\')">'.h($array[$i]['fd_label']).'</a>';
|
|
$r.='</td>';
|
|
$r.='<td>';
|
|
$r.='<a href="javascript:void(0)" onclick="select_cat(\''.$array[$i]['fd_id'].'\','.$gDossier.',\''.$eltid.'\')">'.h
|
|
($array[$i]['fd_description'])."($nb_count)".'</a>';
|
|
$r.='</td>';
|
|
|
|
$r.="</tr>";
|
|
}
|
|
|
|
$r.='</table>';
|
|
$r.=HtmlInput::hidden('fd_id',0);
|
|
$r.='<p style="text-align:center">';
|
|
$r.=HtmlInput::button('Fermer',_('Fermer')," onclick=\"removeDiv('$ctl')\" ");
|
|
$r.='</p>';
|
|
$r.='</div>';
|
|
$html.=$r;
|
|
|
|
}
|
|
$xml=escape_xml($html);
|
|
if (!defined("TEST_UNIT")) header('Content-type: text/xml; charset=UTF-8');
|
|
echo <<<EOF
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<data>
|
|
<ctl>$ctl</ctl>
|
|
<code>$xml</code>
|
|
<fiche_cat>{$list_fiche}</fiche_cat>
|
|
</data>
|
|
EOF;
|
|
return;
|
|
|
|
break;
|
|
/*----------------------------------------------------------------------
|
|
* SC save card
|
|
* save the new card (insert)
|
|
*
|
|
----------------------------------------------------------------------*/
|
|
case 'sc':
|
|
|
|
if ( $g_user->check_action(FICADD)==1 )
|
|
{
|
|
$f=new Fiche($cn);
|
|
$status="<status>OK</status>";
|
|
try {
|
|
$f->insert($fd_id,$_POST);
|
|
$f->Get();
|
|
$after_save=$http->post("after_save","number",0);
|
|
|
|
// Action after save = 0, the card is display one second and fade out
|
|
//
|
|
if ( $after_save == 0 ) {
|
|
$html=HtmlInput::title_box(_("Choix de la catégorie"), $ctl);
|
|
$html.='<h2 class="notice">'._('Fiche sauvée').'</h2>';
|
|
$html.=$f->Display(true);
|
|
$js="";
|
|
if ( isset( $_POST['ref'])) $js=create_script(' window.location.reload()');
|
|
$html.=$js;
|
|
if ( isset ($eltid)) {
|
|
// after adding a new card, we update some field
|
|
$extra="<eltid>$eltid</eltid>".
|
|
"<elt_value>{$f->get_quick_code ()}</elt_value>";
|
|
|
|
|
|
}
|
|
$extra.=$status;
|
|
$extra.="<after_save>0</after_save>";
|
|
|
|
}
|
|
// Action after save = 1 ; after adding a card the table must be updated
|
|
// see fiche.inc.php
|
|
//
|
|
if ( $after_save == 1 ){
|
|
$f_id=$f->id;
|
|
ob_start();
|
|
$detail=Icon_Action::modify("mod".$f_id, sprintf("modify_card('%s')",$f_id)).
|
|
" ".
|
|
Icon_Action::trash("del".$f_id, sprintf("delete_card_id('%s')",$f_id));
|
|
$html = td($detail);
|
|
$html .= $f->display_row();
|
|
$html.=ob_get_contents();
|
|
ob_clean();
|
|
$extra="<f_id>".$f_id."</f_id>";
|
|
$ctl="row_card".$f_id;
|
|
$extra.="<after_save>1</after_save>";
|
|
|
|
}
|
|
} catch (Exception $exc) {
|
|
$html="<h2 class=\"error\">"._("Erreur sauvegarde")."</h2>";
|
|
$html.=$exc->getMessage();
|
|
$status="<status>NOK</status>";
|
|
$extra=$status;
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$html.=alert(_('Action interdite'),true);
|
|
$html.=HtmlInput::button_close($ctl);
|
|
}
|
|
break;
|
|
/*----------------------------------------------------------------------
|
|
* Search a card
|
|
*
|
|
*----------------------------------------------------------------------*/
|
|
case 'fs':
|
|
$r=HtmlInput::title_box(_("Détail fiche"), 'search_card');
|
|
$r.='<form method="GET" onsubmit="this.ctl=\'ipop_card\';search_get_card(this);return false;">';
|
|
$q=new IText('query');
|
|
$q->value=(isset($query))?$query:'';
|
|
$r.='<span style="margin-left:50px">';
|
|
$r.=_('Fiche contenant').Icon_Action::infobulle(19);
|
|
$r.=$q->input();
|
|
$r.=HtmlInput::submit('fs',_('Recherche'),"","smallbutton");
|
|
$r.='</span>';
|
|
$r.=dossier::hidden().HtmlInput::hidden('op','fs');
|
|
$array=array();
|
|
|
|
// to navigate
|
|
$page_card=$http->get("page_card","number",0);
|
|
$inactive=$http->get("inactive_card","string",0);
|
|
if ($inactive=="undefined" || $inactive == "") $inactive=0;
|
|
$is=new InputSwitch("inactive_card",$inactive);
|
|
$is->value=$inactive;
|
|
$r.=_("fiches inactives").$is->input();
|
|
|
|
// save previous info
|
|
$hidden="";
|
|
foreach (array('accvis','inp','jrn','label','typecard','price','tvaid','amount_from_type') as $i)
|
|
{
|
|
if (isset(${$i}) )
|
|
{
|
|
$r.=HtmlInput::hidden($i,${$i});
|
|
$hidden.=HtmlInput::hidden($i,${$i});
|
|
$sql_array[$i]=${$i};
|
|
}
|
|
}
|
|
$r.="</form>";
|
|
|
|
$sql_array["query"]=$query;
|
|
$sql_array["inactive_card"]=$inactive;
|
|
/* what is the type of the ledger */
|
|
$type="GL";
|
|
if (isset($jrn) && $jrn > 1)
|
|
{
|
|
$ledger=new Acc_Ledger($cn,$jrn);
|
|
$type=$ledger->get_type();
|
|
}
|
|
// if jrn == -10 , the search is called from the detail operation from an action follow-up
|
|
if ( isset($jrn) && $jrn == -10){
|
|
$type=$http->request("amount_from_type","string","VEN");
|
|
}
|
|
$fiche=new Fiche($cn);
|
|
/* Build the SQL and show result */
|
|
$sql=$fiche->build_sql($sql_array);
|
|
|
|
if ( strpos($sql," in ()") != 0)
|
|
{
|
|
$html="";
|
|
$html.=HtmlInput::title_box(_('Recherche de fiches'), 'search_card');
|
|
$html.='<h3 class="notice">';
|
|
$html.=_("Aucune catégorie de fiche ne correspond à".
|
|
" votre demande, le journal pourrait n'avoir accès à aucune fiche");
|
|
$html.='</h3>';
|
|
$html.=HtmlInput::button_close("search_card");
|
|
break;
|
|
}
|
|
/**
|
|
* if inactive == 0 , then only active card
|
|
*/
|
|
if ( $inactive == 0 ) {
|
|
$sql.=" and f_enable='1' ";
|
|
}
|
|
|
|
/* We limit the search to MAX_SEARCH_CARD records */
|
|
$sql=$sql.' order by vw_name ';
|
|
$total_card=$cn->get_value("select count(*) from ($sql) as c");
|
|
|
|
$record_start=$page_card*MAX_SEARCH_CARD;
|
|
$sql.=' limit '.MAX_SEARCH_CARD.' offset '.$record_start;
|
|
|
|
$aFound=$cn->get_array($sql);
|
|
$nb_found=count($aFound);
|
|
for($i=0;$i<$nb_found;$i++)
|
|
{
|
|
$array[$i]['quick_code']=$aFound[$i]['quick_code'];
|
|
$array[$i]['name']=h($aFound[$i]['vw_name']);
|
|
$array[$i]['accounting']=$aFound[$i]['accounting'];
|
|
$array[$i]['first_name']=h($aFound[$i]['vw_first_name']);
|
|
$array[$i]['description']=h($aFound[$i]['vw_description']);
|
|
$array[$i]['javascript']=sprintf("set_value('%s','%s');",
|
|
$inp,$array[$i]['quick_code']);
|
|
$array[$i]['javascript'].=sprintf("set_value('%s','%s');",
|
|
$label,j(noalyss_strip_tags($aFound[$i]['vw_name'])));
|
|
|
|
// var $rownb (int) number of the row
|
|
$rownb=preg_replace('/[^0-9]/','',$label);
|
|
|
|
|
|
/* if it is a ledger of sales we use vw_buy
|
|
if it is a ledger of purchase we use vw_sell*/
|
|
|
|
if ( $type=="ACH" ){
|
|
$amount=(isNumber($aFound[$i]['vw_buy']) == 1 )?$aFound[$i]['vw_buy']:0;
|
|
$array[$i]['javascript'].=sprintf("set_value('%s','%s');",
|
|
$price,$amount);
|
|
}
|
|
if ( $type=="VEN" ){
|
|
$amount=(isNumber($aFound[$i]['vw_sell']) == 1 )?$aFound[$i]['vw_sell']:0;
|
|
$array[$i]['javascript'].=sprintf("set_value('%s','%s');",
|
|
$price,$amount);
|
|
}
|
|
// if there is no TVA_ID in the view, it is possible we have a TVA_CODE
|
|
$tva_code=(empty($aFound[$i]['tva_id']))?$aFound[$i]['tva_code']:$aFound[$i]['tva_id'];
|
|
$array[$i]['javascript'].=sprintf("set_value('%s','%s');",
|
|
$tvaid,$tva_code);
|
|
$array[$i]['javascript'].="removeDiv('search_card');";
|
|
$array[$i]['javascript'].=(empty($tva_code))?"":"compute_ledger($rownb);";
|
|
}//foreach
|
|
|
|
ob_start();
|
|
require_once NOALYSS_TEMPLATE.'/card_result.php';
|
|
$r.=ob_get_contents();
|
|
$r.='<ul class="aligned-block ">';
|
|
$r.='<li>';
|
|
$r.=HtmlInput::button_close("search_card");
|
|
$r.='</li>';
|
|
if ($g_user->check_action(FICADD)==1)
|
|
{
|
|
$r.='<li>';
|
|
$create_card_js='onclick="select_card_type({});"';
|
|
$r.=HtmlInput::button_anchor(_("Créer fiche"),"javascript:void(0)","",$create_card_js,'smallbutton');
|
|
$r.='</li>';
|
|
}
|
|
$r.='</ul>';
|
|
|
|
ob_end_clean();
|
|
$ctl=$ctl.'_content';
|
|
$html=$r;
|
|
break;
|
|
case 'action_add_concerned_card':
|
|
require_once NOALYSS_INCLUDE.'/ajax/ajax_add_concerned_card.php';
|
|
return;
|
|
break;
|
|
// add several card to an action follow⁻up
|
|
case 'link_concerned_card':
|
|
require NOALYSS_INCLUDE.'/ajax/ajax_action_save_concerned.php';
|
|
return;
|
|
// remove card from an action follow⁻up
|
|
case 'action_remove_concerned':
|
|
require NOALYSS_INCLUDE.'/ajax/ajax_action_remove_concerned.php';
|
|
return;
|
|
case 'ac':
|
|
if ( $g_user->check_action(FICCAT)==1 )
|
|
{
|
|
|
|
/*----------------------------------------------------------------------
|
|
* Add a category, display first the form
|
|
*
|
|
*----------------------------------------------------------------------*/
|
|
$ipopup=str_replace('_content','',$ctl);
|
|
$msg="";$base="";
|
|
switch($cat)
|
|
{
|
|
case FICHE_TYPE_CLIENT:
|
|
$msg=_(' de clients');
|
|
$base=$cn->get_value("select p_value from parm_code where p_code='CUSTOMER'");
|
|
break;
|
|
case FICHE_TYPE_FOURNISSEUR:
|
|
$msg=_(' de fournisseurs');
|
|
$base=$cn->get_value("select p_value from parm_code where p_code='SUPPLIER'");
|
|
break;
|
|
case FICHE_TYPE_ADM_TAX:
|
|
$msg=_(' d\'administration');
|
|
$base='';
|
|
break;
|
|
case FICHE_TYPE_CONTACT:
|
|
$msg=_(' de contacts');
|
|
$base='';
|
|
break;
|
|
case FICHE_TYPE_FIN:
|
|
$msg=_(' Banque');
|
|
$base=$cn->get_value("select p_value from parm_code where p_code='BANQUE'");
|
|
break;
|
|
case FICHE_TYPE_EMPL:
|
|
$msg=_(' Employé ou administrateur');
|
|
$base='';
|
|
break;
|
|
|
|
}
|
|
|
|
$html='';
|
|
/* show the form */
|
|
|
|
$search=new IPoste("class_base");
|
|
$search->size=40;
|
|
$search->value=$base;
|
|
$search->label=_("Recherche poste");
|
|
$search->set_attribute('gDossier',dossier::id());
|
|
$search->set_attribute('account',$search->name);
|
|
$search->set_attribute('ipopup','ipop_account');
|
|
|
|
$nom_mod=new IText("nom_mod");
|
|
$str_poste=$search->input();
|
|
$submit=HtmlInput::submit('save',_('Sauve'));
|
|
ob_start();
|
|
require(NOALYSS_TEMPLATE.'/category_of_card.php');
|
|
$html.=ob_get_contents();
|
|
ob_end_clean();
|
|
|
|
}
|
|
else
|
|
{
|
|
$html=alert(_('Action interdite'),true);
|
|
}
|
|
break;
|
|
case 'scc':
|
|
/*----------------------------------------------------------------------
|
|
* Save card Category into the database and return a ok message
|
|
*
|
|
*----------------------------------------------------------------------*/
|
|
$html='';
|
|
$invalid=0;
|
|
if ( $g_user->check_action(FICCAT) == 1 )
|
|
{
|
|
|
|
$html="";
|
|
$nom_mod=$http->post("nom_mod");
|
|
$class_base=$http->post("class_base");
|
|
$fd_description=$http->post("fd_description","string","");
|
|
if ( noalyss_strlentrim($nom_mod) != 0 )
|
|
{
|
|
$array=array("FICHE_REF"=>$cat,
|
|
"nom_mod"=>$nom_mod,
|
|
"class_base"=>$class_base,
|
|
"fd_description"=>$fd_description);
|
|
|
|
if ( isset ($_POST['create'])) $array['create']="on";
|
|
|
|
$catcard=new Fiche_Def($cn);
|
|
|
|
ob_start();
|
|
$result=$catcard->Add($array);
|
|
|
|
$html.=ob_get_contents();
|
|
ob_end_clean();
|
|
|
|
if ( $result == 1)
|
|
{
|
|
$script="alert_box('"._('Catégorie existe déjà')."')";
|
|
$invalid=1;
|
|
}
|
|
else{
|
|
$script="alert_box('"._('Catégorie sauvée')."');removeDiv('$ctl')";
|
|
// add code to update the SELECT in include/template/category_of_card.php
|
|
$catcard->get();
|
|
|
|
$extra = '<code2>'.
|
|
'<id>'.$catcard->id.'</id>'.
|
|
'<name>'. escape_xml($catcard->label).'</name>'.
|
|
'</code2>';
|
|
|
|
}
|
|
|
|
$html.=create_script($script);
|
|
}
|
|
else
|
|
{
|
|
$script="alert_box('"._("Le nom ne peut pas être vide")."')";
|
|
$html.=create_script($script);
|
|
|
|
$invalid=1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$html=alert(_('Action interdite'),true);
|
|
$invalid=1;
|
|
}
|
|
if ($invalid == 1) {
|
|
$ctl="info_div";
|
|
}
|
|
break;
|
|
|
|
// Update a card and then display the result
|
|
// in a readonly box
|
|
case 'upc':
|
|
$html=HtmlInput::title_box("Détail fiche", $ctl);
|
|
|
|
if ( $g_user->check_action(FICADD)==0 )
|
|
{
|
|
$html.=alert(_('Action interdite'),true);
|
|
}
|
|
else
|
|
{
|
|
if ($cn->get_value('select count(*) from fiche where f_id=$1',array($http->get('f_id'))) == '0' )
|
|
{
|
|
$html.=alert(_('Fiche non valide'),true);
|
|
}
|
|
|
|
else
|
|
{
|
|
$html=HtmlInput::title_box(_('Détail fiche (sauvée)'),$ctl);
|
|
|
|
$f=new Fiche($cn,$http->get('f_id'));
|
|
ob_start();
|
|
$f->update($_GET);
|
|
$html.=ob_get_contents();
|
|
ob_end_clean();
|
|
$html.=$f->Display(true);
|
|
}
|
|
}
|
|
$html.='<p style="text-align:center">'.HtmlInput::button_close($ctl).'</p>';
|
|
break;
|
|
// Update a card and then display the result
|
|
// in the table
|
|
case 'upr':
|
|
$f_id=$http->get("f_id","number");
|
|
$html="";
|
|
if ( $g_user->check_action(FICADD)==0 )
|
|
{
|
|
$html.=alert(_('Action interdite'),true);
|
|
}
|
|
else
|
|
{
|
|
if ($cn->get_value('select count(*) from fiche where f_id=$1',array($f_id)) == '0' )
|
|
{
|
|
$html.=alert(_('Fiche non valide'),true);
|
|
}
|
|
|
|
else
|
|
{
|
|
|
|
$f=new Fiche($cn,$f_id );
|
|
ob_start();
|
|
$f->update($_GET);
|
|
$detail=Icon_Action::modify("mod".$f_id, sprintf("modify_card('%s')",$f_id)).
|
|
" ".
|
|
Icon_Action::trash("del".$f_id, sprintf("delete_card_id('%s')",$f_id));
|
|
$html.=td($detail);
|
|
$html.=$f->display_row();
|
|
$html.=ob_get_contents();
|
|
ob_end_clean();
|
|
}
|
|
}
|
|
break;
|
|
|
|
|
|
|
|
//------------------------------------------------------------------
|
|
// Unlink a card
|
|
//------------------------------------------------------------------
|
|
case 'rm_card':
|
|
$html=HtmlInput::title_box("Détail fiche", $ctl);
|
|
|
|
if ( $g_user->check_action(FIC)==0 )
|
|
{
|
|
$html.=alert(_('Action interdite'),true);
|
|
}
|
|
else
|
|
{
|
|
if ($cn->get_value('select count(*) from fiche where f_id=$1',array($_GET['f_id'])) == '0' )
|
|
{
|
|
$html.=alert(_('Fiche non valide'),true);
|
|
}
|
|
|
|
else
|
|
{
|
|
|
|
$f=new Fiche($cn,$_GET['f_id']);
|
|
if ( $f->is_used()==0){
|
|
$f->delete();
|
|
$html="OK";
|
|
} else {
|
|
$html="";
|
|
$html=_("Fiche non effacée");
|
|
}
|
|
|
|
}
|
|
}
|
|
break;
|
|
//---------------------------------------------------------------------------------------------------------------
|
|
// Display option of a contact in an action-followup
|
|
//---------------------------------------------------------------------------------------------------------------
|
|
case 'display_card_option':
|
|
|
|
require_once NOALYSS_INCLUDE.'/ajax/ajax_display_card_option.php';
|
|
return;
|
|
break;
|
|
|
|
//---------------------------------------------------------------------------------------------------------------
|
|
// Save option of a contact in an action-followup
|
|
//---------------------------------------------------------------------------------------------------------------
|
|
case 'save_card_option':
|
|
require_once NOALYSS_INCLUDE.'/ajax/ajax_save_card_option.php';
|
|
return;
|
|
|
|
break;
|
|
// ----------------------------------------------------------------------------------------------------------------
|
|
// Display a list of other card linked to the event / followup
|
|
// ----------------------------------------------------------------------------------------------------------------
|
|
case 'action_concerned_list':
|
|
require_once NOALYSS_INCLUDE.'/ajax/ajax_action_concerned_list.php';
|
|
return ;
|
|
break;
|
|
|
|
} // switch
|
|
$xml=escape_xml($html);
|
|
if (DEBUGNOALYSS > 0 && headers_sent()) {
|
|
echo $html;return;
|
|
}
|
|
header('Content-type: text/xml; charset=UTF-8');
|
|
echo <<<EOF
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<data>
|
|
<ctl>$ctl</ctl>
|
|
<code>$xml</code>
|
|
$extra
|
|
</data>
|
|
EOF;
|