AnonSec Shell
Server IP : 162.214.74.102  /  Your IP : 216.73.217.80
Web Server : Apache
System : Linux dedi-4363141.lrsys.com.br 3.10.0-1160.119.1.el7.tuxcare.els25.x86_64 #1 SMP Wed Oct 1 17:37:27 UTC 2025 x86_64
User : lrsys ( 1015)
PHP Version : 5.6.40
Disable Function : exec,passthru,shell_exec,system
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/lrsys/public_html/lrsys_apps/meridional/ui/lib/jslib/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/lrsys/public_html/lrsys_apps/meridional/ui/lib/jslib/add-product.js
/* global _list_units, app_url, _L, existingFiles, _tagsSelecioandas */
var _list_units = [];
var _list_units_int = [];

var rowNum = 0;
var _list_width = [];
var _list_height = [];
var _list_diameter = [];
var _list_length = [];
var subTotalGeral = "0" + $("#_dec_point").val() + "00";
var qtdAnterior = ["1.000"];
var qtdCorrente = 1;
var validaDecimal;
var ind_decimal = $("#_dec_point").val();
var ind_mil = $("#_mil_point").val();
var curr_code = $("#_curr_code").val();
var optionsContact;
var optionsSegment;
Dropzone.autoDiscover = false;

$(document).ready(function () {
    $("#emsg").hide();
    $(".progress").hide();

    var _url = $("#_url").val();
    //habilita select2
    $(".select2").select2({
        theme: "bootstrap"
    });
    
    $('.amount').autoNumeric('init', {aSep: ind_mil, aDec: ind_decimal, mDec: 2, aSign: curr_code + ' '});
    $('.discount').autoNumeric('init', {aSep: ind_mil, aDec: ind_decimal, mDec: 2, aSign: ''});
          

//função para exibir o ítem em estoque de acordo com o valor selecionado para unidade
    $('#unit').on('change', function () {
        if ($(this).val() == '') {
            $('.addon-unity').text("un");
            $('.input-unit').autoNumeric('update', {aSep: '', aDec: ind_decimal, mDec: 0, aSign: ' ', pSign: 's'});
        } else {

            $('.addon-unity').text(_list_units[$(this).val()]);
            if (_list_units_int[$(this).val()] == 1) {
                $('.input-unit').autoNumeric('update', {aSep: '', aDec: ind_decimal, mDec: 0, aSign: ' ', pSign: 's'});
                $('#current_stock').val($('#current_stock').val() ) ;
            } else {
                $('.input-unit').autoNumeric('update', {aSep: '', aDec: ind_decimal, mDec: 3, aSign: ' ', pSign: 's'});
            }
        }
    });

    $('.input-unit').autoNumeric('init', {aSep: '', aDec: ind_decimal, mDec: 0, aSign: ' ', pSign: 's'});
    $('.input-float').autoNumeric('init', {aSep: '', aDec: ind_decimal, mDec: 2, aSign: ' ', pSign: 's'});
    
    $("#submit").click(function (e) {
        e.preventDefault();
        $('#ibox_form').block({message: null});
        var _url = $("#_url").val();
        var url_post = 'ps/add-post/';
        if ($("#id").val() != "" && $("#id").val() > 0) {
            url_post = 'ps/edit-post/';
        }
        $.post(_url + url_post, $("#rform").serialize())
                .done(function (data) {

                    setTimeout(function () {
                        var sbutton = $("#submit");
                        var _url = $("#_url").val();
                        if ($.isNumeric(data)) {
                            var body = $("html, body");
                            body.animate({scrollTop: 0}, '1000', 'swing');
                            location.reload();
                        } else {
                            $('#ibox_form').unblock();
                            $("#emsgbody").html(data);
                            $("#emsg").show("slow");
                            var body = $("html, body");
                            body.animate({scrollTop: 0}, '1000', 'swing');
                        }
                    }, 2000);
                });
    });

    ///////////////////////////////////////////UNIT//////////////////////////
    //adicionar unidade de medida
    //formulario para adicionar
    var ib_form_bootbox_unit = "<form class=\"form-horizontal push-10\" method=\"post\" onsubmit=\"return false;\">\n  \n\
        <div class=\"form-group\">\n        <div class=\"col-xs-12\">\n            <div class=\"form-material floating open\">\n                <input class=\"form-control\" type=\"text\" id=\"unit_name\" name=\"unit_name\">\n                <label for=\"envato_api_key\">" + _L['Unit Name'] + "<span class='red'>*</span></label>\n                           </div>\n        </div>\n    </div>\n\n\n\
        <div class=\"form-group\">\n        <div class=\"col-xs-12\">\n            <div class=\"form-material floating open\">\n                <input class=\"form-control\" type=\"text\" id=\"unit_initial\" maxlength='6' name=\"unit_initial\">\n                <label for=\"envato_api_key\">" + _L['Unit Initials'] + "<span class='red'>*</span></label>\n                           </div>\n        </div>\n    </div>\n\n\n\
        <div class=\"form-group\">\n        <div class=\"col-md-12 col-sm-12 col-xs-12\">\n    <div class=\"form-material floating open\"> <label class=\"\" >"+_L['Int Value']+"</label>     <input type=\"checkbox\"  data-toggle=\"toggle\" id=\"unit_int_value\" data-size=\"small\" data-on=\""+_L['Yes']+"\" data-off=\""+_L['No']+"\" name=\"int_value\" value=\"1\">      </div>\n   </div>\n    </div>\n\n\n\
 </form>";

    //adiciona nova unidade
    $("#add_new_unit").click(function (e) {
        var box = bootbox.dialog({
            title: _L['Add New Unit'],
            message: ib_form_bootbox_unit,
            buttons: {
                success: {
                    label: _L['Save'],
                    className: "btn-primary",
                    callback: function () {
                        var name_val = $('#unit_name').val();
                        var initial_val = $('#unit_initial').val();
                        var unit_int_value = ($('#unit_int_value').prop("checked") == true)?1:'';
                        $.post(_url + "unit/add-post/no-msg", {name: name_val, initials: initial_val,int_value:unit_int_value})
                                .done(function (data) {
                                    if ($.isNumeric(data)) {
                                        //recarrega as unidades de medida
                                        loadUnits('');
                                    } else {
                                        bootbox.alert(data);
                                    }
                                });
                    }
                }
            },
            show: false
        }
        );
        e.preventDefault();
        box.modal('show');
        $("[data-toggle='toggle']").bootstrapToggle();  
    });

    if ($('#unit_id').val() != "") {
        loadUnits($('#unit_id').val());
    } else {
        loadUnits('');
    }

    /////////////////////////////////////////Localização   
    var ib_form_location = "<form class=\"form-horizontal push-10\" method=\"post\" onsubmit=\"return false;\">\n    <div class=\"form-group\">\n        <div class=\"col-xs-12\">\n            <div class=\"form-material floating open\">\n                <input class=\"form-control\" type=\"text\" id=\"location_name\" name=\"location_name\">\n                <label for=\"envato_api_key\">" + _L['Location'] + "</label>\n                           </div>\n        </div>\n    </div>\n\n</form>";

///adiciona nova l9ocalização
    $("#add_new_location").click(function (e) {
        e.preventDefault();
        var box = bootbox.dialog({
            title: _L['Add New Location'],
            message: ib_form_location,
            buttons: {
                success: {
                    label: _L['Save'],
                    className: "btn-primary",
                    callback: function () {
                        var name_val = $('#location_name').val();
                        $.post(_url + "product_location/add-post/", {location_name: name_val})
                                .done(function (data) {
                                    if ($.isNumeric(data)) {
                                        //recarrega as unidades de medida
                                        loadLocation('');

                                    } else {
                                        bootbox.alert(data);
                                    }
                                });
                    }
                }
            },
            show: false
        }
        );

        box.modal('show');
    });

    if ($('#location_id').val() != "") {
        loadLocation($('#location_id').val());
    } else {
        loadLocation('');
    }

    if ($('#category_id').val() != "") {
        loadProductCategory($('#category_id').val());
    } else {
        loadProductCategory('');
    }

    if ($('#packing_type').val() != "") {
        loadPacking($('#packing_type').val(), $('#product_packing_id').val());
    }

//////////////////////////////////////Product CATEGORIA
    //formulario para adicionar
    var form_product_category = "<form class=\"form-horizontal push-10\" method=\"post\" onsubmit=\"return false;\">\n  \n\
         <div id='category_msg'></div>\n\
        <div id=\"div_parent_category\" class=\"form-group\">\n        <div class=\"col-xs-12\">\n            <div class=\"form-material floating open\">\n           <select name=\"parent\" id=\"parent_category\" style='width:100%' class=\"form-control select2\"></select>\n                <label for=\"envato_api_key\">" + _L["Parent Category"] + "</label>\n                           </div>\n        </div>\n    </div>\n\n\n\
        <div class=\"form-group\">\n        <div class=\"col-xs-12\">\n            <div class=\"form-material floating open\">\n                <input class=\"form-control\" type=\"text\" id=\"name_category\" maxlength='60' name=\"name\">\n                <label for=\"envato_api_key\">" + _L["Category"] + " <span class='red'>*</span></label>\n               </div>\n        </div>\n    </div>\n\n\n\
    </form>";


    //adiciona nova categoria
    $("#add_new_category").click(function (e) {
        var box = bootbox.dialog({
            title: _L['Add New Category'],
            message: form_product_category,
            buttons: {
                success: {
                    label: _L['Save'],
                    className: "btn-primary",
                    callback: function () {
                        var name_val = $('#name_category').val();
                        var parent_val = $('#parent_category').val();
                        $.post(_url + "product_category/add-post/", {name: name_val, parent: parent_val})
                                .done(function (data) {
                                    if ($.isNumeric(data)) {
                                        // location.reload();
                                        loadProductCategory();
                                    } else {
                                        bootbox.alert(data);
                                    }
                                });
                    }
                }
            },
            show: false
        }
        );

        loadParentCategory('');
        e.preventDefault();
        box.modal('show');
    });

    //evento ao escolher o tipo de campo de embalagem em dados complementares
    $('#packing_type').on('change', function () {
        //carrega o combo de opções com as embalagens cadastradas
        $("#div_pack_width").hide();
        $("#div_pack_height").hide();
        $("#div_pack_length").hide();
        $("#div_pack_diameter").hide();
        $("#img_pack").html("");
        loadPacking($(this).val(), 0);
    });
    $('#packing').on('change', function () {

        montaForm($('#packing_type').val(), $(this).val());
        //opção escolhida é novo. libera para insercao
        if ($(this).val() == '0') {
            $("#pack_width").removeAttr('disabled');

            $("#pack_height").removeAttr('disabled');

            $("#pack_length").removeAttr('disabled');

            $("#pack_diameter").removeAttr('disabled');

        }
    });
    //aciona o montar form ao iniciar a tela
    montaForm($('#packing_type').val(), $('#packing').val());

    //função que monta o form para envelope, desabilita os campos que irão mostrar os dados
    function montaForm(type, val) {
        //desabilita os inputs
        $("#pack_width").attr('disabled', 'disabled');
        $("#pack_height").attr('disabled', 'disabled');
        $("#pack_length").attr('disabled', 'disabled');
        $("#pack_diameter").attr('disabled', 'disabled');
        //monta para pacote ou caixa
        if (type == 'package_box') {
            $("#div_pack_width").show(); //mostra o input de medida do pacote
            $("#pack_width").val(_list_width[val]);//atribbui o valor guardado no vetor com o id da embalagem  width
            $("#div_pack_height").show();//repete o conceito de cima
            $("#pack_height").val(_list_height[val]);
            $("#div_pack_length").show();
            $("#pack_length").val(_list_length[val]);
            $("#div_pack_diameter").hide();//esconde  a medida diferente desse item
            $("#img_pack").html("<img src='" + app_url + "/ui/theme/lrsys/img/package_box.png'/>");
        } else if (type == 'envelope') {
            $("#div_pack_width").show();
            $("#pack_width").val(_list_width[val]);
            $("#div_pack_height").hide();
            $("#div_pack_length").show();
            $("#pack_length").val(_list_length[val]);
            $("#div_pack_diameter").hide();
            $("#img_pack").html("<img src='" + app_url + "/ui/theme/lrsys/img/envelope.png'/>");
        } else if (type == 'roller_cylinder') {
            $("#div_pack_width").hide();
            $("#div_pack_height").hide();
            $("#div_pack_length").show();
            $("#pack_length").val(_list_length[val]);
            $("#div_pack_diameter").show();
            $("#pack_diameter").val(_list_diameter[val]);
            $("#img_pack").html("<img src='" + app_url + "/ui/theme/lrsys/img/roller_cylinder.png'/>");
        } else {
            $("#div_pack_width").hide();
            $("#div_pack_height").hide();
            $("#div_pack_length").hide();
            $("#div_pack_diameter").hide();
            $("#img_pack").html("");
            $('#div_packing').hide();
        }
    }
    ////////////////////////IMAGES
    var upload_resp;

    var $ib_form_submit = $("#submit");




    var ib_file = new Dropzone("#upload_container",
            {
                url: _url + "ps/product-add-image/" + $("#id").val(),
                maxFiles: 100,
                acceptedFiles: "image/*",
                //      autoProcessQueue: false,
                addRemoveLinks: true,
                dictRemoveFile: _L["Remove"],
                dictCancelUpload: _L["Cancel"],
                removedfile: function (file) {
                    var id = file.id;
                    $.ajax({
                        type: 'POST',
                        url: _url + 'ps/product-delete-image/',
                        data: "name=" + file.name,
                        dataType: 'html'
                    }).done(function (data) {
                        //se ok remove
                        //remove com uma vírgula caso encontre o id
                        $('#images').val($('#images').val().replace(id + ",", ""));
                        $('#images').val($('#images').val().replace("," + id, ""));
                        $('#images').val($('#images').val().replace(id, ""));
                        var obj = JSON.parse(data);
                        toastr.success(obj.msg);
                        if (obj.status == 'OK') {
                            var _ref;
                            return (_ref = file.previewElement) != null ? _ref.parentNode.removeChild(file.previewElement) : void 0;
                        }
                    });


                }
            }
    );


    ib_file.on("sending", function () {
        $ib_form_submit.prop('disabled', true);
    });

    ib_file.on("success", function (file, response) {
        $ib_form_submit.prop('disabled', false);
        upload_resp = response;
        if (upload_resp.success == 'Yes') {
            $('#images').val(function (i, val) {
                return val + (!val ? '' : ',') + upload_resp.id;
            });
            file.id = upload_resp.id;
            toastr.success(upload_resp.msg);
        } else {
            toastr.error(upload_resp.msg);
            ib_file.removeFile(file);
        }

    });
    //Add existing files into dropzone arquivos existentes
    for (i = 0; i < existingFiles.length; i++) {
        ib_file.emit("addedfile", existingFiles[i]);
        ib_file.createThumbnailFromUrl(existingFiles[i], existingFiles[i].url);
        ib_file.emit("complete", existingFiles[i]);
    }
    /////////////////////////FIM IMAGES


//tags dos produtos

//formulario para adicionar
    var form_product_tag = "<form class=\"form-horizontal push-10\" method=\"post\" onsubmit=\"return false;\">\n  \n\
         <div id='category_msg'></div>\n\
        <div id=\"div_parent_tag\" class=\"form-group\">\n        <div class=\"col-xs-12\">\n            <div class=\"form-material floating open\">\n           <select name=\"tag_group\" id=\"tag_group\" style='width:100%' class=\"form-control select2\"></select>\n                <label for=\"envato_api_key\">" + _L["Group Tags"] + "<span class='red'>*</span></label>\n                           </div>\n        </div>\n    </div>\n\n\n\
        <div class=\"form-group\">\n        <div class=\"col-xs-12\">\n            <div class=\"form-material floating open\">\n                <input class=\"form-control\" type=\"text\" id=\"tag_name\" maxlength='60' name=\"tag_name\">\n                <label id='label_data' for=\"envato_api_key\">" + _L["Tags"] + " <span class='red'>*</span></label>\n               </div>\n        </div>\n    </div>\n\n\n\
    </form>";

    //adiciona nova tag e grupo de tag
    $(".add_new_product_tag").click(function (e) {
        var type = $(this).attr('data-type');
        var box = bootbox.dialog({
            title: _L['Add New Tags'],
            message: form_product_tag,
            buttons: {
                success: {
                    label: _L['Save'],
                    className: "btn-primary",
                    callback: function () {
                        var name_val = $('#tag_name').val();
                        var tag_group = $('#tag_group').val();
                        $.post(_url + "product_tags/add-post/msg", {name: name_val, group: tag_group, type: type})
                                .done(function (data) {
                                    if ($.isNumeric(data)) {
                                        loadTags('');
                                    } else {
                                        bootbox.alert(data);
                                    }
                                });
                    }
                }
            },
            show: false
        }
        );
        if ($(this).attr('data-type') == 'group_tags') {
            $('#div_parent_tag').hide(); //esconde o cadastro da informação
            $('#label_data').html(_L["Group Tags"] + "<span class='red'>*</span>");
        } else {
            loadGroupTags('');
        }
        e.preventDefault();
        box.modal('show');
    });

    loadTags(_tagsSelecionadas);



    ////////////////////////modal IPI enqudramento/////////////
    var $modal_ipi_framework = $('#ajax-modal');
    $('#list_ipi_framework').on('click', function (e) {
        e.preventDefault();
        // create the backdrop and wait for next modal to be triggered
        $('body').modalmanager('loading');
        setTimeout(function () {
            $modal_ipi_framework.load(_url + 'ps/modal_ipi_framework/', '', function () {
                $modal_ipi_framework.modal();
            });
        }, 1000);
    });

    //Manufacturer
    //formulario para adicionar
    var form_manufacturer = "<form class=\"form-horizontal push-10\" method=\"post\" onsubmit=\"return false;\">\n  \n\
        <div class=\"form-group\">\n        <div class=\"col-xs-12\">\n            <div class=\"form-material floating open\">\n                <input class=\"form-control\" type=\"text\" id=\"manufacturer_name\" maxlength='60' name=\"manufacturer_name\">\n                <label for=\"envato_api_key\">" + _L['Manufacturer Name'] + "<span class='red'>*</span></label>\n                           </div>\n        </div>\n    </div>\n\n\n\
        <div class=\"form-group\">\n        <div class=\"col-xs-12\">\n            <div class=\"form-material floating open\">\n                <input class=\"form-control\" type=\"text\" id=\"manufacturer_code\" maxlength='60' name=\"manufacturer_code\">\n                <label for=\"envato_api_key\">" + _L['Code'] + "</label>\n                           </div>\n        </div>\n    </div>\n\n\n\
      </form>";



    //adiciona novo
    $("#add_new_manufacturer").click(function (e) {
        var box = bootbox.dialog({
            title: _L['Add New Manufacturer'],
            message: form_manufacturer,
            buttons: {
                success: {
                    label: _L['Save'],
                    className: "btn-primary",
                    callback: function () {
                        var name_val = $('#manufacturer_name').val();
                        var code_val = $('#manufacturer_code').val();
                        $.post(_url + "product_manufacturer/add-post/msg", {name: name_val, code: code_val})
                                .done(function (data) {
                                    if ($.isNumeric(data)) {
                                        loadManufacturer('');
                                    } else {
                                        bootbox.alert(data);
                                    }
                                });
                    }
                }
            },
            show: false
        }
        );
        e.preventDefault();
        box.modal('show');
    });


    loadManufacturer($('#sys_items_manufacturer_id').val());



//////////////////ETAPAS
    var $step_items = $('#step_items');
    $('#step-add').on('click', function () {

        $step_items.find('tbody')
                .append(
                        '<tr> <td><input type="text" name="description_step[]" maxlength="100" class="form-control"  value=""></td>  <td class="col-xs-1"><button class="btn btn-danger btn-xs delete_step_item" ><i class="fa fa-trash"></i> </button></td></tr>'
                        );
    });
    //chamada para remover o contato adicionado
    $("#step_items").on("click", ".delete_step_item", function (e) {
        $(this).closest('tr').remove();
    });

//PRODUCTION
    var $modal_product_structure = $('#ajax-modal');
    var $production_items = $('#production_items');
    $('#product-add').on('click', function () {
        // create the backdrop and wait for next modal to be triggered
        $('body').modalmanager('loading');
        $modal_product_structure.load(_url + 'ps/modal-list-structure/', $(".idItenBusc").serialize(), function () {
            $modal_product_structure.modal();
        });

    });


    $modal_product_structure.on('click', '.update', function () {
        var tableControl = document.getElementById('items_table');

        $modal_product_structure.modal('loading');


        var guardaItens = [];
        $('input:checkbox:checked', tableControl).each(function () {
            rowNum++;
            var item_code = $(this).closest('tr').find('td:eq(1)').text();
            var item_name = $(this).closest('tr').find('td:eq(2)').text();

            var item_price = $(this).closest('tr').find('td:eq(4)').text();
            var item_id = $(this).closest('tr').find('td:eq(5)').text();
            var item_unit = $(this).closest('tr').find('td:eq(6)').text();
            var item_sifr = $(this).closest('tr').find('td:eq(7)').text();

            $(tableControl).find('tr_' + item_id).hide();

            $production_items.find('tbody')
                    .append(
                            '<tr><td><input type="hidden"  name="item_id[]" value="' + item_id + '" class="idItenBusc"><input type="hidden" value="' + item_sifr + '" id="unit_itm' + rowNum + '"><input type="text" value="' + item_name + '" class="form-control itm_nm_ftura" id="i_' + rowNum + '" name="desc[]" readonly></td> <td><input type="text" class="form-control qtyl qtyVal' + rowNum + '" data-qty-inicial="1" value="1' + ind_decimal + '000" name="qty[]" id="' + rowNum + '"><input type="hidden" name="qtdBe[]" id="qtdBe' + rowNum + '" value="1' + ind_decimal + '000"></td> <td><input type="text" class="form-control item_price' + rowNum + ' am" name="amount[]" value="' + item_price + '" readonly></td> <td class="ltotal"><input type="text" class="form-control lvtotal lvtotal' + rowNum + ' am" readonly value="' + item_price + '"></td><td class="col-xs-1"><button class="btn btn-danger btn-xs delete_production_item" data-row=' + rowNum + ' ><i class="fa fa-trash"></i> </button></td></tr>'
                            );

            $('.am').autoNumeric('init', {aSep: ind_mil, aDec: ind_decimal, mDec: 2, aSign: curr_code + ' '});
            $('.am').trigger('blur');
            if (item_unit == 0)
                $('#' + rowNum + '').autoNumeric('init', {aSep: '', aDec: ind_decimal, mDec: 3, aSign: ' ' + item_sifr, pSign: 's'});
            else
                $('#' + rowNum + '').autoNumeric('init', {aSep: '', aDec: ind_decimal, mDec: 0, aSign: ' ' + item_sifr, pSign: 's'});

            admItens(item_id, item_price);

            // $('#i_' + rowNum).redactor({paragraphize: false,
            //     replaceDivs: false,
            //     linebreaks: true});
        });

        //  console.debug(obj); // Write it to the console
        //  calculateTotal();


        $modal_product_structure.modal('hide');

    });


    $production_items.on('blur', '.qtyl', function () {
        if ($('.qtyVal' + this.id).val() == "")
            return;
        var unit = $("#unit_itm" + this.id).val();
        var qtd_itn = $('.qtyVal' + this.id).val().replace(" " + unit, "");
        $('#qtdBe' + this.id).val(calculaValor(qtd_itn, "1", "*", 3));
        var preco_itn = $('.item_price' + this.id).val().replace(curr_code + " ", "");
        var valorTotal = calculaValor(qtd_itn, preco_itn, "*", 3);
        $('.lvtotal' + this.id).val(retrataValor(valorTotal));
        var id = parseInt(this.id) - 1;

        qtdAnterior[id] = $(this).attr("data-qty-inicial");
        var valorAnterior = calculaValor(qtdAnterior[id], preco_itn, "*", 3);
        var subTotalCorrente = "0.000";
        subTotalCorrente = calculaValor(subTotalGeral, valorAnterior, "-", 3)
        subTotalGeral = calculaValor(subTotalCorrente, valorTotal, "+", 3);
        $('#sub_total').html(retrataValor(subTotalGeral));
        //    $("#subTotal").val(retrataValor(subTotalGeral));
        $('.am').trigger('blur');
        $(this).attr("data-qty-inicial", qtd_itn);
    });

//remove os item de production. 
    $('#production_items').on("click", ".delete_production_item", function (e) {
        val = $('.lvtotal' + $(this).attr("data-row")).val().replace(curr_code + " ", "");
        subTotalGeral = calculaValor(subTotalGeral, val, "-", 2);
        $('#sub_total').html(retrataValor(subTotalGeral));
        $("#subTotal").val(retrataValor(subTotalGeral));
        $(this).closest('tr').remove();
    });





    loadStructure();

    montaProduction($('#type_of_product').val());
    $('#type_of_product').on('change', function () {
        montaProduction($(this).val());

    });
    function montaProduction(val) {
        if (val == 'Finished product' || val == 'Component') {
            $('.step').show();
            $('.structure').show();
        } else {
            $('#div_packing').show();
            $('.step').hide();
            $('.structure').hide();
        }
    }

    //////////////////FIM PRODUÇÃO

    ///costs

    var $cost_items = $('#cost_items');
    $('.cost-add').on('click', function () {

        $cost_items.find('tbody')
                .append(
                        '<tr>'
                        + '<td> <input type="text" value="' + $("#data_atual").val() + '" class="form-control datepicker" name="cost_date[]" datepicker data-date-format="yyyy-mm-dd" data-auto-close="true"> </td>'
                        + '<td> <input type="text"  name="cost_current_balance[]"  class="form-control amount" autocomplete="off" data-a-sign="' + curr_code + ' "  data-a-dec="' + ind_decimal + '" data-a-sep="' + ind_mil + '" data-d-group="2"></td>'
                        + '<td> <input type="text"  name="cost_previus_balance[]"  class="form-control amount" autocomplete="off" data-a-sign="' + curr_code + ' "  data-a-dec="' + ind_decimal + '" data-a-sep="' + ind_mil + '" data-d-group="2"></td>'
                        + '<td> <input type="text"  name="cost_recoverable_taxes[]"  class="form-control amount" autocomplete="off" data-a-sign="' + curr_code + ' "  data-a-dec="' + ind_decimal + '" data-a-sep="' + ind_mil + '" data-d-group="2"></td>'
                        + '<td> <input type="text" value="' + $("#sub_total").html() + '" name="cost_price[]"  class="form-control amount" autocomplete="off" data-a-sign="' + curr_code + ' "  data-a-dec="' + ind_decimal + '" data-a-sep="' + ind_mil + '" data-d-group="2"></td>'
                        + '<td> <input type="text"  name="cost_average[]"  class="form-control amount" autocomplete="off" data-a-sign="' + curr_code + ' "  data-a-dec="' + ind_decimal + '" data-a-sep="' + ind_mil + '" data-d-group="2"></td>'
                        + '<td> <input type="text" value="' + $("#sales_price").val() + '"  name="cost_sales_price[]"  class="form-control amount" autocomplete="off" data-a-sign="' + curr_code + ' "  data-a-dec="' + ind_decimal + '" data-a-sep="' + ind_mil + '" data-d-group="2"></td>'
                        + '<td class="col-xs-1"> <button class="btn btn-danger btn-xs delete_cost_item" ><i class="fa fa-trash"></i> </button></td></tr>'
                        );

        $(".datepicker").datepicker();
        $(".amount").autoNumeric('init');
        $("#li_production").removeClass('active');
        $("#li_costs").addClass('active');
    });
    //chamada para remover o contato adicionado
    $("#cost_items").on("click", ".delete_cost_item", function (e) {
        $(this).closest('tr').remove();
    });


    //costs
    
    
    /////////////////preços  diferenciados
    var product_prices = $('#product_prices');
    var row=$('#product_prices_row').val();
  
    $('#price-add').on('click', function () {  
        //validação para saber se adiciona nova linha
         var products_prices = document.getElementsByName('product_prices[]');
              var adicionar=true;
            for (var i = 0; i <products_prices.length; i++) {
                if(products_prices[i].value==""){
                    adicionar=false;
                }
            }


        if(adicionar){   
            product_prices.find('tbody')
            .append(
                  '<tr> \n\
                    <td class=""><input type="hidden" name="product_row[]" value="'+row+'"> <input type="text" value="" class="form-control amount" name="product_prices[]" >  </td>   \n\
                    <td class=""><input type="text" value="" class="form-control input-unit" name="product_quantity[]" >  </td> \n\
                    <td> <select  name="product_segment_'+row+'[]" multiple="multiple"  class="form-control product_segment select2">'+optionsSegment+'<select> <div class="form-group"><label class="col-md-8 control-label" for="" data-toggle="tooltip" title="Defina se este preço deve ser aplicado aos filhos dos SEGMENTOS escolhidos." data-original-title="Defina se este preço deve ser aplicado aos filhos dos SEGMENTOS escolhidos.">'+_L['Apply for children']+'</label><div class="col-md-4"><input type="checkbox" id="check_'+row+'"checked data-toggle="toggle" data-size="small" data-on="'+_L['Yes']+'" data-off="'+_L['No']+'"  name="apply_children_segments['+row+']" value="1"></div></div></td>  n\
                    <td> <select  name="product_clients_'+row+'[]" multiple="multiple"  class="form-control product_clients select2">'+optionsContact+'<select></td>   \n\
                    <td> <select  name="product_type_delivery[]"  class="form-control "><option value="All">'+_L['All Type']+'</option><option value="Delivery">'+_L['Delivery']+'</option><option value="Withdrawal">'+_L['Withdrawal']+'</option><select></td>   \n\
                    <td class=""> <div class="input-group"><input type="text" value="" class="form-control discount" name="product_margin_discount[]" >  <span class="input-group-addon  after" id="span_type_disc">%</span> </div> </td>   \n\
                    <td class=""><span class="btn btn-danger btn-xs delete_price" ><i class="fa fa-trash"></i> </span></td>\n\
                 </tr>');  
             $("#check_"+row).bootstrapToggle();  
             $('.amount').autoNumeric('init', {aSep: ind_mil, aDec: ind_decimal, mDec: 2, aSign: curr_code + ' '});
             $('.discount').autoNumeric('init', {aSep: ind_mil, aDec: ind_decimal, mDec: 2, aSign: ''});
             $(".select2").select2({ theme: "bootstrap"});
             $('.input-unit').autoNumeric('init', {aSep: '', aDec: ind_decimal, mDec: 0, aSign: ' ', pSign: 's'});
            row++;

        }else{
            bootbox.alert(_L['There is a non-value price record, please enter this field first.'] );
        }
        
        // carrego o tooltip
        // TODO: verificar pq a tooltip ta quebrando os campos do input.
        tooltip();
    });

    product_prices.on("click", ".delete_price", function (e) {
              $(this).closest('tr').remove();
    });
    ///////////////fim dos preços diferenciados
    
    loadContacts();
    loadSegments();
});

//função que carrega as unidades de medidas no select
function loadManufacturer(val) {
    //carrega os grupos;
    $.getJSON($("#_url").val() + 'product_manufacturer/ajax-list', function (j) {
        var options = '';
        options += '<option value="">' + _L['Select'] + '</option>';
        for (var i = 0; i < j.length; i++) {
            options += '<option value="' + j[i].id + '">' + j[i].code + " - " + j[i].name + '</option>';

        }
        $('#manufacturer').html(options);
        if (val != '') {
            $('#manufacturer').select2('val', val);
        }
    });
}

//função que carrega as unidades de medidas no select
function loadUnits(val) {
    //carrega os grupos;
    $.getJSON($("#_url").val() + 'unit/ajax-list', function (j) {
        var options = '';
        options += '<option value="">' + _L['Select'] + '</option>';
        for (var i = 0; i < j.length; i++) {
            options += '<option value="' + j[i].id + '">' + j[i].initials + " - " + j[i].name + '</option>';
            //atribuo as opções retornadas a lista de unidades
            //utilizzo para mostrar o ítem correto em estoque
            _list_units[j[i].id] = j[i].initials;
            _list_units_int[j[i].id] = j[i].int_value;
        }
        //    $('#commercial_unit').html(options);  //carrega nos dois select
        //    $('#tax_unit').html(options);
        $('#unit').html(options);
        if ('val' != '') {
            $('#unit').select2('val', val);
        }
    });
}
//load category
function loadProductCategory(val) {
    //carrega os grupos;
    $.getJSON($("#_url").val() + 'product_category/ajax-list', function (j) {
        var options = '';
        options += '<option value="">' + _L['Select'] + '</option>';
        for (var i = 0; i < j.length; i++) {
            if (j[i].name_parent === null) {
                options += '<option value="' + j[i].id + '">' + j[i].name + '</option>';
            } else {
                options += '<option value="' + j[i].id + '">' + j[i].name_parent + " > " + j[i].name + '</option>';
            }

        }
        $('#category').html(options);
        if (val != '') {
            $('#category').select2('val', val);
        }
    });
}



//função que carrega as localizações no select
function loadLocation(val) {
    //carrega os grupos;
    $.getJSON($("#_url").val() + 'product_location/ajax-list', function (j) {
        if (j != null) {
            var options = '';
            options += '<option value="">' + _L['Select'] + '</option>';
            for (var i = 0; i < j.length; i++) {
                options += '<option value="' + j[i].id + '">' + j[i].name + '</option>';
            }
            $('#location').html(options);
            if ('val' != '') {
                $('#location').select2('val', val);
            }
        }
    });
}

//metodo que carrega as categorias dentro bo bootbox, para adicionar categoria
function loadParentCategory() {
    //carega as categorias pai antes de mostrar
    $.getJSON($("#_url").val() + 'product_category/ajax-list-parent', function (j) {
        var options = '';
        for (var i = 0; i < j.length; i++) {
            options += '<option value="' + j[i].id + '">' + j[i].name + '</option>';
        }
        if (options != '') {
            $('#parent_category').html("<option value=''>" + _L['Select Category'] + "</option>" + options);
            $(".select2").select2({
                theme: "bootstrap"
            });
        } else {
            $('#div_parent_category').hide();
        }
    });
    /// carrega no form ou esconde a div, caso ainda não exista
}

//CARREGA AS EMBALAGENS
function loadPacking(type, val) {
    if (type) {
        $.getJSON($("#_url").val() + 'product_packing/ajax-list', {type: type}, function (j) {
            var options = '';
            for (var i = 0; i < j.length; i++) {
                options += '<option value="' + j[i].id + '">' + j[i].description + '</option>';
                _list_width[j[i].id] = j[i].width;
                _list_height[j[i].id] = j[i].height;
                _list_diameter[j[i].id] = j[i].diameter;
                _list_length[j[i].id] = j[i].length;
            }
            options += '<option value="0">' + _L['Add New Packing'] + ' ... </option>'; //0 para novo
            _list_width[0] = '';
            _list_height[0] = '';
            _list_diameter[0] = '';
            _list_length[0] = '';
            $('#packing').html(options);

            $('#packing').select2('val', val);
            $('#div_packing').show();
        });
    } else {
        $('#div_packing').hide();
    }

}


function loadGroupTags(val) {
    //carega as categorias pai antes de mostrar
    $.getJSON($("#_url").val() + 'product_tags/ajax-list-group', function (j) {
        var options = '';
        for (var i = 0; i < j.length; i++) {
            options += '<option value="' + j[i].id + '">' + j[i].name + '</option>';
        }
        if (options != '') {
            $('#tag_group').html("<option value=''>" + _L['Select'] + "</option>" + options);
            $(".select2").select2({
                theme: "bootstrap"
            });
            $("#tag_group").select2("val", val);
        }
    });
    /// carrega no form ou esconde a div, caso ainda não exista
}


//carrega as tags
function loadTags(tags_selecionadas) {
    //carega as categorias pai antes de mostrar
    $.getJSON($("#_url").val() + 'product_tags/ajax-list', function (j) {
        var options = '';
        for (var i = 0; i < j.length; i++) {
            if (j[i].group_id === null) {
                options += '<optgroup label="' + j[i].name + '">';
            } else {
                //verifica se no alterar precisa selecioanr as tags
                options += '<option value="' + j[i].id + '">' + j[i].group_name + " > " + j[i].name + '</option>';
            }
        }
        //remove o select 2
        $('#tags').select2('destroy');
        //verifica as tags que foram selecionadas
        if (tags_selecionadas != "") {
            for (var i = 0; i < tags_selecionadas.length; i++) {
                options = options.replace('value="' + tags_selecionadas[i] + '"', 'value="' + tags_selecionadas[i] + '" selected')
            }
        }
        //atribui as opções ao select
        $('#tags').html(options);
       // habilita o select2
        $('#tags').select2();

    });
    /// carrega no form ou esconde a div, caso ainda não exista
}

//carrega os produtos que compõem a estrutura
function loadStructure() {
    //carega as categorias pai antes de mostrar
    $.getJSON($("#_url").val() + 'ps/ajax-product-structure/' + $("#id").val(), function (j) {

        for (var i = 0; i < j.length; i++) {
            rowNum++;
            var preco_itn = calculaValor(j[i].production_qty, j[i].price, "*", 2);
            $('#production_items').find('tbody')
                    .append(
                            '<tr><td><input type="hidden"  name="item_id[]" value="' + j[i].id + '" class="idItenBusc"><input type="hidden" value="' + j[i].item_sifr + '" id="unit_itm' + rowNum + '"><input type="text" value="' + j[i].description + '" class="form-control itm_nm_ftura" id="i_' + rowNum + '" readonly></td> <td><input type="text" class="form-control qtyl qtyVal' + rowNum + '" value="' + j[i].production_qty + '" name="qty[]" data-qty-inicial="' + j[i].production_qty + '" id="' + rowNum + '"><input type="hidden" name="qtdBe[]" id="qtdBe' + rowNum + '"  value="' + j[i].production_qty + '"></td> <td><input type="text" class="form-control item_price' + rowNum + ' am" name="amount[]" value="' + j[i].price + '" readonly></td> <td class="ltotal"><input type="text" class="form-control lvtotal lvtotal' + rowNum + ' am" readonly value="' + (preco_itn) + '"></td><td class="col-xs-1"><button class="btn btn-danger btn-xs delete_production_item" data-row=' + rowNum + ' ><i class="fa fa-trash"></i> </button></td></tr>'
                            );

            $('.am').autoNumeric('init', {aSep: ind_mil, aDec: ind_decimal, mDec: 2, aSign: curr_code + ' '});
            $('.am').trigger('blur');
            if (j[i].item_unit == 0)
                $('#' + rowNum + '').autoNumeric('init', {aSep: ind_mil, aDec: ind_decimal, mDec: 3, aSign: ' ' + j[i].item_sifr, pSign: 's'});
            else
                $('#' + rowNum + '').autoNumeric('init', {aSep: ind_mil, aDec: ind_decimal, mDec: 0, aSign: ' ' + j[i].item_sifr, pSign: 's'});

            //  admItens(j[i].id, j[i].price);

            subTotalGeral = calculaValor(subTotalGeral, preco_itn, "+", 3);
            $('#sub_total').html(retrataValor(subTotalGeral));
        }

    });

}

//adiciona o item
function admItens(item_id, item_price) {
    var unit = $("#unit_itm" + item_id).val();
    var preco_itn = item_price.replace(curr_code + " ", "");
    subTotalGeral = calculaValor(subTotalGeral, preco_itn, "+", 3);
    $('#sub_total').html(retrataValor(subTotalGeral));
}


function retrataValor(val) {
    var valor = val.replace(".", "");
    var valorDecimal = ind_decimal + '' + valor.substr(valor.length - 2);
    var valorCenMil = valor.substr(0, valor.length - 2);
    var primCasa = "";
    var segCasa = "";
    var terCasa = "";
    var quaCasa = "";
    var quiCasa = "";
    var valorFim;
    var tamnh = valorCenMil.length;
    if (tamnh <= 3) {
        valorFim = valorCenMil + valorDecimal;
    } else {
        if (tamnh <= 6) {
            var primCasa = valorCenMil.substr(tamnh - 3, 3);
            var segCasa = valorCenMil.substr(0, tamnh - 3);
            valorFim = segCasa + ind_mil + primCasa + valorDecimal;
        } else if (tamnh <= 9) {
            var primCasa = valorCenMil.substr(tamnh - 3, 3);
            var segCasa = valorCenMil.substr(tamnh - 6, 3);
            var terCasa = valorCenMil.substr(0, tamnh - 6);
            valorFim = terCasa + ind_mil + segCasa + ind_mil + primCasa + valorDecimal;
        } else if (tamnh <= 12) {
            var primCasa = valorCenMil.substr(tamnh - 3, 3);
            var segCasa = valorCenMil.substr(tamnh - 6, 3);
            var terCasa = valorCenMil.substr(tamnh - 9, 3);
            var quaCasa = valorCenMil.substr(0, tamnh - 9);
            valorFim = quaCasa + ind_mil + terCasa + ind_mil + segCasa + ind_mil + primCasa + valorDecimal;
        } else if (tamnh <= 15) {
            var primCasa = valorCenMil.substr(tamnh - 3, 3);
            var segCasa = valorCenMil.substr(tamnh - 6, 3);
            var terCasa = valorCenMil.substr(tamnh - 9, 3);
            var quaCasa = valorCenMil.substr(tamnh - 12, 3);
            var quiCasa = valorCenMil.substr(0, tamnh - 12);
            valorFim = quiCasa + ind_mil + quaCasa + ind_mil + terCasa + ind_mil + segCasa + ind_mil + primCasa + valorDecimal;
        } else {
            return;
        }
    }
    return valorFim;
}
//Padronizar valor para JS tirando a mask.
function trataValor(val, qtdFix) {

    if ((val.indexOf('.') <= 0) && (val.indexOf(',') <= 0)) {
        if (qtdFix == 3)
            val = val + '' + '.000';
        else
            val = val + '' + '.00';
    }
    var valor = val.replace(",", "");
    valor = valor.replace(".", "");
    valor = valor.substr(0, valor.length - qtdFix) + '.' + valor.substr(valor.length - qtdFix);
    return valor;
}

function calculaValor(val1, val2, op, qtdFxd) {

    var valor1 = trataValor(val1, qtdFxd);
    var valor2 = trataValor(val2, qtdFxd);
    var valorFinal;

    switch (op) {
        case "+":
            valorFinal = (parseFloat(valor1) + parseFloat(valor2)).toFixed(qtdFxd);
            break;
        case "-":
            valorFinal = (parseFloat(valor1) - parseFloat(valor2)).toFixed(qtdFxd);
            break;
        case "*":
            valorFinal = (parseFloat(valor1) * parseFloat(valor2)).toFixed(qtdFxd);
            break;
        case "/":
            valorFinal = (parseFloat(valor1) / parseFloat(valor2)).toFixed(qtdFxd);
            break;
    }

    return(valorFinal);
}

function loadContacts() {
    //carrega os segmentos
    $.getJSON($("#_url").val() + 'contacts/ajax-list', function (j) {
        var  options = '';
        for (var i = 0; i < j.length; i++) {
            options += '<option value="' + j[i].id + '">' + j[i].name_email + '</option>';
        }
       optionsContact=options;        
    });
}

function loadSegments(){
    //carrega os segmentos
    $.getJSON($("#_url").val()+'segment/ajax-list',function (j) {
        var  options = '';
        for (var i = 0; i < j.length; i++) {
            options += '<option value="' + j[i].id + '">' + j[i].name + '</option>';
        }
        optionsSegment=options;
      
    });
}


function tooltip() {
	$('body').find('[data-toggle="tooltip"]').tooltip();
}

Anon7 - 2022
AnonSec Team