noalyss  Version-6.7.2
 All Data Structures Namespaces Files Functions Variables Enumerations
Functions
anc_script.js File Reference

javascript for the analytic accountancy More...

Go to the source code of this file.

Functions

function add_row (p_table, p_seq)
 add a row for the CA
function add_row_key (p_table)
 Add a row for distribution key.
function anc_add_row (tableid)
 add a row in misc operation for ANC the code must be adapted for that
function anc_key_choice (p_dossier, p_table, p_amount, p_ledger)
 choose the distribution key in ajax, a window let you choose what key you want to use
function anc_key_compute (p_dossier, p_table, p_amount, p_key_id)
 compute and display Analytic activity, related to the choosen distribution key
function anc_key_compute_table ()
function anc_refresh_remain (p_table, p_seq)
 Refresh remain of account.
function anc_remove_operation (p_dossier, p_oa_group)
 remove an operation
function caod_checkTotal ()
function compute_total_table (p_table, seq)
 Compute total of a form from Anc_Operation::display_form_plan.
function filter_anc (obj, queryString)
 this function is called before the querystring is send to the fid2.php, add a filter based on the ledger 'p_jrn'
function search_anc_form (obj)
function search_ca (p_dossier, p_target, p_source)
 open a window for searching a CA account,
function verify_ca (div)
 Check the amount of the CA.

Detailed Description

javascript for the analytic accountancy

Definition in file anc_script.js.


Function Documentation

function add_row (   p_table,
  p_seq 
)

add a row for the CA

Parameters:
p_table_id
p_amountamount to reach

Definition at line 31 of file anc_script.js.

References alert(), anc_refresh_remain(), compute_total_table(), g(), and value.

Referenced by Anc_Operation::display_form_plan().

{
    var mytable = g(p_table).tBodies[0];
    var max = parseFloat(g('amount_t' + p_seq).value);
    if (!mytable)
    {
        return;
    }
    var new_value = mytable.rows.length + 1;


    if (mytable.rows.length > 15)
    {
        alert("Maximum 15 lignes ");
        return;
    }
    var amount = compute_total_table(p_table, p_seq);
    if (max < amount)
    {
        alert('Montant incorrect : max = ' + max + " calculé=" + amount);
        return;
    }
    // For the detail view (modify_op) there is several form and then several time the
    // element
    var rowToCopy = mytable.rows[1];
    var row = mytable.insertRow(mytable.rows.length);

    for (var i = 0; i < rowToCopy.cells.length; i++)
    {
        var cell = row.insertCell(i);
        var txt = rowToCopy.cells[i].innerHTML;
//      txt=txt.replace(/row_1/g,"row_"+new_value);
        cell.innerHTML = txt;
    }
    var col = document.getElementsByName("val[" + p_seq + "][]");
    col[col.length - 1].value = max - amount;
    anc_refresh_remain(p_table, p_seq);
}
function add_row_key (   p_table)

Add a row for distribution key.

This function add a row in the table key distribution

Parameters:
p_tabletable id

Definition at line 482 of file anc_script.js.

References alert(), g(), nb(), and value.

{
    var mytable = g(p_table).tBodies[0];
    if (!mytable)
    {
        return;
    }
    var table_length=mytable.rows.length ;
    if ( table_length > 15)
    {
        alert("Maximum 15 lignes ");
        return;
    }
    var rowToCopy = mytable.rows[1];
    var row = mytable.insertRow(table_length);
    var nb=mytable.rows.length -2;
    for (var i = 0; i < rowToCopy.cells.length; i++)
    {
        var cell = row.insertCell(i);
        cell.className=rowToCopy.cells[i].className;
        var txt = rowToCopy.cells[i].innerHTML;
        if (  i == 0 )
        {
            var change=nb+1;
            cell.innerHTML =change+'<input id="row[]" type="hidden" value="-1" name="row[]">';
        } 
        else
        {
            if (i == rowToCopy.cells.length -1 )  {
                txt=txt.replace(/value="[0-9]*.{1}[0-9]*"/,'value="0"')
            } else {
                txt=txt.replace(/po_id\[0\]/g,'po_id['+nb+']');
            }
           cell.innerHTML = txt;
        }
    }
    $('total_key').innerHTML="?";
}
function anc_add_row (   tableid)

add a row in misc operation for ANC the code must be adapted for that

Definition at line 341 of file anc_script.js.

References g(), nb(), style, and value.

{
    var style = 'class="input_text"';
    var mytable = g(tableid).tBodies[0];
    var nNumberRow = mytable.rows.length;
    var oRow = mytable.insertRow(nNumberRow);
    var rowToCopy = mytable.rows[1];
    var nNumberCell = rowToCopy.cells.length;
    var nb = g("nbrow");
    var oNewRow = mytable.insertRow(nNumberRow);
    for (var e = 0; e < nNumberCell; e++)
    {
        var newCell = oRow.insertCell(e);
        var tt = rowToCopy.cells[e].innerHTML;
        var new_tt = tt.replace(/pop0/g, "pop" + nb.value);
        new_tt = new_tt.replace(/pamount0/g, "pamount" + nb.value);
        new_tt = new_tt.replace(/pdeb0/g, "pdeb" + nb.value);
        newCell.innerHTML = new_tt;
        new_tt.evalScripts();
    }
    $("pamount" + nb.value).value = "0";
    nb.value++;
}
function anc_key_choice (   p_dossier,
  p_table,
  p_amount,
  p_ledger 
)

choose the distribution key in ajax, a window let you choose what key you want to use

Parameters:
p_dossieris the dossier
p_tablethe table id of the target
p_amountamount to distribute
p_ledger

Definition at line 434 of file anc_script.js.

References add_div(), alert(), error_box(), error_message(), fixed_position(), getNodeText(), remove_waiting_box(), style, unescape_xml(), and waiting_box().

Referenced by Anc_Operation::display_form_plan().

{
    waiting_box();
    var op = 'op=anc_key_choice';
    var queryString = op + "&gDossier=" + p_dossier + "&t=" + p_table + "&amount=" + p_amount;
    try {
        queryString+='&led='+p_ledger;
        var action = new Ajax.Request(
                "ajax_misc.php",
                {
                    method: 'get',
                    parameters: queryString,
                    onFailure: error_box,
                    onSuccess: function(req, json) {
                        try
                        {
                            var name_ctl = 'div_anc_key_choice';
                            var answer = req.responseXML;
                            remove_waiting_box();
                            var html = answer.getElementsByTagName('code');
                            if (html.length == 0) {
                                var rec = req.responseText;
                                alert('erreur :' + rec);
                            }

                            var code_html = getNodeText(html[0]); // Firefox ne prend que les 4096 car.
                            code_html = unescape_xml(code_html);
                            var position=fixed_position(50,120);
                            add_div({id: name_ctl, cssclass: 'inner_box', style: position, drag: 1});
                            $(name_ctl).innerHTML = code_html;
                        } catch (e)
                        {
                            error_message(e.message);
                        }
                    }
                }

        );

    } catch (e) {
        error_message(e.message);
    }
}
function anc_key_compute (   p_dossier,
  p_table,
  p_amount,
  p_key_id 
)

compute and display Analytic activity, related to the choosen distribution key

Parameters:
p_dossieris the dossier id
p_tableis table id to replace
p_amountis the amount to distribute
p_key_idis the choosen key

Definition at line 385 of file anc_script.js.

References alert(), error_box(), error_message(), getNodeText(), remove_waiting_box(), removeDiv(), unescape_xml(), and waiting_box().

{
    waiting_box();
    var op = "op=anc_key_compute";
    var queryString = op + "&gDossier=" + p_dossier + "&t=" + p_table + "&amount=" + p_amount + '&key=' + p_key_id;
    try {
        var action = new Ajax.Request(
                "ajax_misc.php",
                {
                    method: 'get',
                    parameters: queryString,
                    onFailure: error_box,
                    onSuccess: function(req, json) {
                        try
                        {
                            var name_ctl = p_table;
                            var answer = req.responseXML;
                            remove_waiting_box();
                            var html = answer.getElementsByTagName('code');
                            if (html.length == 0) {
                                var rec = req.responseText;
                                alert('erreur :' + rec);
                            }

                            var code_html = getNodeText(html[0]); // Firefox ne prend que les 4096 car.
                            code_html = unescape_xml(code_html);
                            $(name_ctl).innerHTML = code_html;
                            removeDiv('div_anc_key_choice');
                        } catch (e)
                        {
                            error_message(e.message);
                        }
                    }
                }

        );
    } catch (e) {
        error_message(e.message);
    }
}
function anc_key_compute_table ( )

Definition at line 520 of file anc_script.js.

References value.

{
    var tot=0;
    var i=0;
    var value=0;
    var percent=document.getElementsByName('percent[]');
    for (i=0;i<percent.length;i++)
    {
        value=percent[i].value;
        if ( value == 'undefined')
        {
            value=0;
        }
        if ( isNaN(value)) {
            value=0;
        }
        tot=tot+Math.round(value*100)/100;
    }
    $('total_key').innerHTML=Math.round(tot*100)/100;

}
function anc_refresh_remain (   p_table,
  p_seq 
)

Refresh remain of account.

analytic

Parameters:
p_tabletable id
p_seqsequence of the line
See also:
Anc_Operation::display_form_plan

Definition at line 101 of file anc_script.js.

References alert(), compute_total_table(), g(), style, and value.

Referenced by add_row().

{
    try
    {
        var tot_line = parseFloat(g('amount_t' + p_seq).value);
        var tot_table = compute_total_table(p_table, p_seq);
        var remain = tot_line - tot_table;
        remain = Math.round(remain * 100) / 100;
  //      var popup_table = p_table.toString();
//        p_table = popup_table.replace("popup", "");
        $('remain' + p_table).innerHTML = remain;
        if (remain == 0)
        {
            $('remain' + p_table).style.color = "green"
        }
        else
        {
            $('remain' + p_table).style.color = "red"
        }
    } catch (a)
    {
        alert(a.message);
    }
}
function anc_remove_operation (   p_dossier,
  p_oa_group 
)

remove an operation

Parameters:
p_dossieris the folder
p_oa_groupis the group of the analytic operation

Definition at line 323 of file anc_script.js.

References encodeJSON(), and g().

{
    var a = confirm("Etes-vous sur de vouloir effacer cette operation ?\n");
    if (a == false)
        return;
    var obj = {"oa":
                p_oa_group, "gDossier":
                p_dossier, "op": "remove_anc"};
    var queryString = encodeJSON(obj);
    g(p_oa_group).style.display = 'none';
    var e = new Ajax.Request("ajax_misc.php",
            {method: 'get', parameters: queryString});

}
function caod_checkTotal ( )

Definition at line 256 of file anc_script.js.

References g().

{
    var ie4 = false;
    if (document.all)
    {
        ie4 = true;
    }// Ajouter getElementById par document.all[str]
    var total_deb = 0.0;
    var total_cred = 0.0;
    var nb_item = g('nbrow').value;

    for (var i = 0; i < nb_item; i++)
    {
        var doc_amount = g("pamount" + i);
        if (!doc_amount)
        {
            return;
        }
        var side = g("pdeb" + i);
        if (!side)
        {
            return;
        }
        var amount = parseFloat(doc_amount.value);

        if (isNaN(amount) == true)
        {
            amount = 0.0;
        }
        if (side.checked == false)
        {
            total_cred += amount;
        }
        if (side.checked == true)
        {
            total_deb += amount;
        }
    }



    var r_total_cred = Math.round(total_cred * 100) / 100;
    var r_total_deb = Math.round(total_deb * 100) / 100;
    g('totalDeb').innerHTML = r_total_deb;
    g('totalCred').innerHTML = r_total_cred;

    if (r_total_deb != r_total_cred)
    {
        g("totalDiff").style.color = "red";
        g("totalDiff").style.fontWeight = "bold";
        g("totalDiff").innerHTML = "Différence";
        var diff = total_deb - total_cred;
        diff = Math.round(diff * 100) / 100;
        g("totalDiff").innerHTML = diff;

    }
    else
    {
        g("totalDiff").innerHTML = "0.0";
    }
}
function compute_total_table (   p_table,
  seq 
)

Compute total of a form from Anc_Operation::display_form_plan.

Parameters:
p_tabletable id
seqsequence of the line
See also:
Anc_Operation::display_form_plan

Definition at line 75 of file anc_script.js.

References alert(), and value.

Referenced by add_row(), and anc_refresh_remain().

{
    try {

        var i = 0;
        var tot = 0;
        var col = document.getElementsByName("val[" + seq + "][]");
        for (i = 0; i < col.length; i++)
        {
            // here is the problem
            tot += parseFloat(col[i].value);

        }
        return tot;
    }
    catch (e)
    {
        alert(e.message);
    }
}
function filter_anc (   obj,
  queryString 
)

this function is called before the querystring is send to the fid2.php, add a filter based on the ledger 'p_jrn'

Parameters:
objis the input field
queryStringis the queryString to modify
See also:
ICard::input

Definition at line 371 of file anc_script.js.

{
    var pa_id = obj.plan_ctl;
    queryString = queryString + "&pa_id=" + pa_id;
    return queryString;
}
function search_anc_form (   obj)

Definition at line 231 of file anc_script.js.

References alert(), name, remove_waiting_box(), and waiting_box().

{
    var qs = "op=resultancsearch&ctl=searchanc&";
    var name = obj.id;
    qs += $(name).serialize(false);
    waiting_box();
    var action = new Ajax.Request('ajax_misc.php',
            {
                method: 'get',
                parameters: qs,
                onFailure: null,
                onSuccess: function(req) {
                    try {
                        remove_waiting_box();
                        $('searchanc').innerHTML = req.responseText;
                        req.responseText.evalScripts();

                    } catch (e) {
                        alert(e.message);
                    }
                }
            }
    );
    return false;
}
function search_ca (   p_dossier,
  p_target,
  p_source 
)

open a window for searching a CA account,

Parameters:
p_dossierdossier id
p_targetctrl to update
p_sourcectrl containing the pa_id
Returns:

Definition at line 198 of file anc_script.js.

References add_div(), alert(), fixed_position(), g(), remove_waiting_box(), removeDiv(), style, and waiting_box().

{
    var pa_id = g(p_source).value;
    waiting_box();
    removeDiv('search_anc');
    var qs = "op=openancsearch&gDossier=" + p_dossier + "&ctl=searchanc";
    qs += "&c2=" + pa_id + "&c1=" + p_target;

    var action = new Ajax.Request('ajax_misc.php',
            {
                method: 'get',
                parameters: qs,
                onFailure: null,
                onSuccess: function(req) {
                    try {
                        remove_waiting_box();
                        var pos = fixed_position(250, 150) + ";width:30%;height:50%";
                        add_div({
                            id: "searchanc",
                            drag: 1,
                            cssclass: "inner_box",
                            style: pos
                        });
                        $('searchanc').innerHTML = req.responseText;

                    } catch (e) {
                        alert(e.message);
                    }
                }
            }
    );

}
function verify_ca (   div)

Check the amount of the CA.

Parameters:
p_style: error or ok, if ok show a ok box if the amount are equal
Returns:
true if the amounts are equal

Definition at line 132 of file anc_script.js.

References alert(), g(), table, and value.

{
    try
    {

        var idx = 0;
        var amount_error = 0;
        // put a maximum
        while (idx < 50)
        {
            var table = div + 't' + idx;
            if (g(table))
            {
                var total_amount = 0;
                // table is found compute the different val[]
                var array_value = document.getElementsByName('val[' + idx + '][]');

                for (var i = 0; i < array_value.length; i++)
                {
                    if (isNaN(array_value[i].value))
                    {
                        array_value[i].value = 0;
                    }

                    total_amount += parseFloat(array_value[i].value);
                }
                var amount = parseFloat(g('amount_t' + idx).value);
                var diff = amount - total_amount;

                if (Math.round(diff, 2) != 0.0)
                {
                    g(table).style.backgroundColor = 'red';
                    amount_error++;
                }
                else
                {
                    g(table).style.backgroundColor = 'lightgreen';

                }
                idx++;
            }
            else
                break;
        }
        if (amount_error != 0)
        {
            alert('Désolé, les montants pour la comptabilité analytique sont incorrects');
            return false;
        }
        return true;
    }
    catch (e)
    {
        alert(e.message);
        return false;
    }
}
 All Data Structures Namespaces Files Functions Variables Enumerations