{% extends 'layout.twig' %}

{% block body %}

    <div class="contenu clearfix"  id="createLigneLibre">
	
		<h1>
            {% if idBlocFrs %}
                {{ 'Récapitulatif panier' | trad }} : {{ infoPanierEntete.lib_panier }}
            {% else %}
                {{ 'Création d\'une nouvelle ligne' | trad }}
            {% endif %}

            <button class="principal button" 
                {% if idBlocFrs %}
                    onClick="ajaxPopupV2('{{ path('Panier.Articles.validateArticle', {'idBlocFrs':idBlocFrs, 'idLigne':idLigne}) }}', 'formLigneLibre');"
                {% else %}
                    onClick="ajaxPopupV2('{{ path('RechercheArticles.Articles.validate', {'table':table, 'rowCompteur':rowCompteur}) }}', 'formLigneLibre');"
                {% endif %}
            >
                {{ 'Enregistrer la nouvelle ligne' |trad }}
            </button>
		</h1>
		
		{{ ariane() }}

        <div class="tab-content" id="divRefresh">
            <input type="hidden" id="input_CTR_EMETT" value="{{ infoPanierEntete.CENTRE_EMETTEUR }}">
            <input type="hidden" id="input_CTR_LIV" value="{{ infoPanierEntete.LIV_CTR }}">

            <form method="post" id="formLigneLibre" class="bg_form padding_form border_form clearfix">
                <input type="hidden" id="input_ID_CAT" name="ID_CAT" value="{{ article.ID_CAT }}">
                <input type="hidden" id="input_REF_FAB" name="REF_FAB" value="{{ article.REF_FAB }}">
                <input type="hidden" id="input_PRIXDEGRESSIF" name="PRIXDEGRESSIF" value="{{ article.PRIXDEGRESSIF }}">
                <input type="hidden" id="input_CATPRLST" name="CATPRLST" value="{{ article.CATPRLST }}">

                <input type="hidden" id="input_table" name="table" value="{{ table }}">
                <input type="hidden" id="input_rowCompteur" name="rowCompteur" value="{{ rowCompteur }}">

                <div class="clearfix">
                    <div class="colonne2">
                        <div class="row">
                            {{ inputAdvance('ZOOM', {
                                'titre': 'Code article Haplus' | trad,
                                'name' : 'COD_ART',
                                'pahtZoom' : path('Ajax.liste.articles'),
                                'paramZoom' : "{'displayCode' : false}",
                                'pathValidator' : path('Ajax.validator.zoom'),
                                'paramsValidator' : "{'entity' : 'Articles','nomChamp' : '"~'Code article Haplus' | trad~"', 'null' : false}",
                                'titleZoom' : 'Liste des articles' | trad,
                                'Entity' : 'Articles',
                                'idText' : 'input_DES_ART',
                                'value' : article.COD_ART,
                                'option' : (table!= '' or idBlocFrs != '')? 'readOnly':'', 
                            }) }}
                        </div>
                        <div class="row">
                            {{ inputAdvance('text', {
                                'titre' : 'Désignation' | trad,
                                'name' : 'DES_ART',
                                'value' : article.DES_ART,
                                'pathValidator' : path('Ajax.validator.isStringAvecEspace'),
                                'paramsValidator' : "{'sizeMin' : 0, 'sizeMax' : 100}",
                                'obligatoire' : true,
                                'option' : (table=='CAT' or table=='ART')? 'readOnly':article.optionDES_ART,
                            }) }}
                        </div>
                        <div class="row">
                            {{ inputAdvance('TEXTAREA',{
                                'titre' : 'Désignation complémentaire' | trad,
                                'name' : 'DES_COMP',
                                'value' : article.DES_COMP,
                                'pathValidator' : path('Ajax.validator.isStringAvecEspace'),
                                'paramsValidator' : "{'sizeMin' : 0, 'sizeMax' : 3000}",
                            }) }}
                        </div>
                    </div>

                    <div class="colonne2 last">

                        <div class="row">
                            {{ inputAdvance('ZOOMADVANCE', {
                                'titre' : 'Sous famille' | trad,
                                'name' : 'COD_SFAM',
                                'value' : article.COD_SFAM,
                                'pahtZoom' : path('Ajax.liste.sousFamille'),
                                'titreZoom' : 'liste sous famille' | trad,
                                'paramZoom' : "",
                                'entity' : 'SousFamille',
                                'pathValidator' : path('Ajax.validator.zoom'),
                                'paramsValidator' : "{'entity' : 'SousFamille','nomChamp' : '"~'Sous famille' | trad~"', 'null' : false}",
                                'pathConvert' : path('Ajax.outil.convertLibelle'),
                                'convertLibelle' : 'convertLibelleGlobal',
                                'option' : sfamEdit? '':'readOnly',
                                'obligatoire' : sfamEdit? true:false,
                            }) }}
                        </div>

                        <div class="row" style="height:34px;">
                        </div>

                        <div class="row">
                            {{ inputAdvance('zoomAdvance', {
                                'titre' : 'Unité' | trad,
                                'name' : 'COD_UNIT',
                                'pahtZoom' : path('Ajax.liste.unites'),
                                'paramZoom' : "{'filtreArticle': $('#input_COD_ART').val()}",
                                'pathConvert' : path('Ajax.outil.convertLibelle'),
                                'convertLibelle' : 'convertLibelleGlobal',
                                'pathValidator' : path('Ajax.validator.unite'),
                                'paramsValidator' : "{'entity' : 'Unites','nomChamp' : '"~'Unité' | trad~"', 'null' : true}",
                                'entity' : 'Unites',
                                'titleZoom' : 'Liste des unités' | trad,
                                'value' : article.COD_UNIT,
                                'obligatoire' : true,
                                'option' : table=='CAT'? 'readOnly':article.optionCOD_UNIT,
                            }) }}
                        </div>
                        <div class="row">
                            {{ inputAdvance('TEXT',{
                                'titre' : 'Quantité' | trad,
                                'name' : 'QTE',
                                'value' : qteByUnite(article.QTE, article.COD_UNIT),
                                'pathValidator' : path('Ajax.validator.float'),
                                'paramsValidator' : "{'format' : "~getConst('formatQTE')~", 'min' : '"~(param.INTERDIRE_PX_QTE_NEG? '0':'')~"'}",
                                'obligatoire' : true,
                            }) }}
                        </div>

                    </div>
                </div>

                <hr>

                <div class="clearfix">
                    <div class="colonne2">
                        {% if listeFrsPanier %}
                            <div class="row">
                                {{ inputAdvance('SELECT', {
                                    'titre' : 'Sélection rapide du fournisseur' | trad,
                                    'name' : 'selectRapide',
                                    'listeValue' : listeFrsPanier,
                                    'value' : article.COD_FOURN,
                                    'option' : table=='CAT' or lockFrs? 'readOnly':article.optionCOD_FOURN,
                                }) }}
                            </div>
                        {% endif %}
                        <div class="row">
                            {{ inputAdvance('zoomAdvance', {
                                'titre' : 'Fournisseur' | trad,
                                'name' : 'COD_FOURN',
                                'pahtZoom' : path('Ajax.liste.fournisseur'),
                                'paramZoom' : "{'activeZone' : '"~param.ZONE_GEO_ACTIVE~"', 'centre' : '"~param.centreZoneGeo~"', 'code_art_haplus' : $('#input_COD_ART').val(), 'code_sous_famille' : $('#input_COD_SFAM').val(), 'advancedPopup' : false}",
                                'pathConvert' : path('Ajax.outil.convertLibelle'),
                                'convertLibelle' : 'convertLibelleGlobal',
                                'pathValidator' : path('RechercheArticles.Articles.validatorFrs'),
                                'paramsValidator' : "{}",
                                'entity' : 'Fourniss',
                                'titleZoom' : 'Liste des fournisseurs' | trad,
                                'value' : article.COD_FOURN,
                                'option' : table=='CAT'or lockFrs? 'readOnly':article.optionCOD_FOURN,
                            }) }}
                        </div>
                    </div>
                    <div class="colonne2 last">
                        <div class="row">
                            {{ inputAdvance('text', {
                                'titre' : 'Réf. Fournisseur' | trad,
                                'name' : 'REF_FOURN',
                                'value' : article.REF_FOURN,
                                'pathValidator' : path('Ajax.validator.isStringAvecEspace'),
                                'paramsValidator' : "{'sizeMin' : '0', 'sizeMax' : '50'}",
                                'option' : table=='CAT'? 'readOnly':article.optionREF_FOURN,
                            }) }}
                        </div>
                        <div class="row">
                            {{ inputAdvance('zoomAdvance', {
                                'titre' : 'Accord cadre' | trad,
                                'name' : 'COD_ACD',
                                'pahtZoom' : path('Ajax.liste.accadre'),
                                'paramZoom' : "{ 'valide' : '1','CODE_STE' : '"~codeSte~"', 'CODE_FOUR' : $('#input_COD_FOURN').val(), 'CENTRE_EMETTEUR' : $('#input_CTR_EMETT').val(), 'CENTRE_LIVRAISON' : $('#input_CTR_LIV').val()}",
                                'pathConvert' : path('Ajax.outil.convertLibelle'),
                                'convertLibelle' : 'convertLibelleGlobal',
                                'pathValidator' : path('Ajax.validator.zoom'),
                                'paramsValidator' : "{'entity' : 'Acccadre','nomChamp' : '"~'Accord cadres' | trad~"', 'null' : true}",
                                'entity' : 'Acccadre',
                                'titleZoom' : 'Liste des accords-cadres' | trad,
                                'value' : article.COD_ACD,
                                'option' : table=='CAT'? 'readOnly':article.optionCOD_ACD,
                            }) }}
                        </div>
                    </div>
                </div>

                <hr>

                <div class="clearfix">
                    <div class="colonne2">
                        <div class="row">
                            {{ inputAdvance('DEVISE',{
                                'titre' : 'Prix unitaire' | trad,
                                'name' : 'PX_ART',
                                'value' : article.PX_ART | prixUnitaire,
                                'pathValidator' : path('Ajax.validator.float'),
                                'paramsValidator' : "{'format' : "~getConst('formatPU')~", 'min' : '"~(param.INTERDIRE_PX_QTE_NEG? '0':'')~"'}",
                                'DEVISE' : article.COD_DEV,
                                'option' : table=='CAT'? 'readOnly':article.optionPX_ART,
                            }) }}
                        </div>
                        <div class="row" style="{% if param.AFFTVA == false %}display:none;{% endif %}">
                            {{ inputAdvance('zoomAdvance', {
                                'titre' : 'Taux Tva' | trad,
                                'name' : 'TAUX_TVA',
                                'pahtZoom' : path('Ajax.liste.TVA'),
                                'pathConvert' : path('Ajax.outil.convertLibelle'),
                                'convertLibelle' : 'convertLibelleGlobal',
                                'pathValidator' : path('Ajax.validator.zoom'),
                                'paramsValidator' : "{'entity' : 'TVA','nomChamp' : '"~'Taux Tva' | trad |e('js')|raw~"', 'null' : true}",
                                'entity' : 'TVA',
                                'titleZoom' : 'Liste des tva' | trad,
                                'value' : (article.TAUX_TVA??'0') | tva,
                                'option' : (table=='CAT')? 'readOnly':article.optionTAUX_TVA,
                            }) }}
                        </div>
                    </div>
                    <div class="colonne2 last">
                        <div class="row">
                            <input type="hidden" name="oldDevise" id="input_oldDevise" value="{{article.COD_DEV}}"/>
                            {{ inputAdvance('ZOOMADVANCE', {
                                'titre' : 'Devise' | trad,
                                'name' : 'COD_DEV',
                                'pahtZoom' : path('Ajax.liste.devise'),
                                'paramZoom' : "{}",
                                'entity' : 'Devise',
                                'titleZoom' : 'Liste des devises' | trad,
                                'pathConvert' : path('Ajax.outil.convertLibelle'),
                                'convertLibelle' : 'convertLibelleGlobal',
                                'pathValidator' : path('Ajax.validator.zoom'),
                                'paramsValidator' : "{'entity' : 'Devise','nomChamp' : '"~'Devise' | trad~"', 'null' : false}",
                                'value' : article.COD_DEV,
                                'obligatoire' : true,
                                'option' : (table=='CAT' or idBlocFrs)? 'readOnly':'',
                            }) }}
                        </div>
                        <div class="row" style="{% if param.TTC == false %}display:none;{% endif %}">
                            {{ inputAdvance('DEVISE',{
                                'titre' : 'Prix unitaire TTC' | trad,
                                'name' : 'PX_ART_TTC',
                                'value' : article.PX_ART_TTC | prixUnitaire,
                                'pathValidator' : path('Ajax.validator.float'),
                                'paramsValidator' : "{'format' : "~getConst('formatPU')~"}",
                                'DEVISE' : article.COD_DEV,
                                'option' : table=='CAT'? 'readOnly':article.optionPX_ART,
                            }) }}
                        </div>
                    </div>
                </div>
                <div class="clearfix">
                    <div class="colonne2">
                        <div class="row">
                            {{ inputAdvance('DEVISE',{
                                'titre' : 'Montant total de la ligne' | trad,
                                'name' : 'montantTotalLigne',
                                'value' : (article.montantTotalLigne??0) | tva,
                                'pathValidator' : path('Ajax.validator.float'),
                                'paramsValidator' : "{'format' : "~getConst('formatMontant')~"}",
                                'option' : 'readOnly',
                                'DEVISE' : article.COD_DEV,
                            }) }}
                        </div>
                    </div>
                </div>
                <div class="clearfix" {% if param.MASQUER_BUDGET_SAISIE_LIGNE %}style="display:none;"{% endif %}>
                    <div class="colonne2">
                        <div class="row">
                            {{ inputAdvance('DEVISE',{
                                'titre' : 'Budget unitaire' | trad,
                                'name' : 'budgetUnitaire',
                                'value' : (article.budgetUnitaire??0) | tva,
                                'pathValidator' : path('Ajax.validator.float'),
                                'paramsValidator' : "{'format' : "~getConst('formatMontant')~"}",
                                'DEVISE' : infoPanierEntete.COD_DEV,
                            }) }}
                        </div>
                    </div>
                    <div class="colonne2 last">
                        <div class="row">
                            {{ inputAdvance('DEVISE',{
                                'titre' : 'Budget total' | trad,
                                'name' : 'budget_total',
                                'value' : (article.budget_total??0) | tva,
                                'pathValidator' : path('Ajax.validator.float'),
                                'paramsValidator' : "{'format' : "~getConst('formatMontant')~"}",
                                'DEVISE' : infoPanierEntete.COD_DEV,
                            }) }}
                        </div>
                    </div>
                </div>
                {% if CSExist('DA_LIGNE') %}
                    <hr>
                    <div class="clearfix">
                        {{ inputCSAdvance({
							'codTab' : 'DA_LIGNE', 
							'colonneActif' : true, 
							'codeEnr' : '',
							'option' : '',
                            'societe' : codeSte,
                            'post' : arrayInitCs,
                            'codTableDifferent' : 'PANIER',
                            'idLignePanier' : article.id_lig
						}) }} 
                    </div>
                {% endif %}

                <hr>

                <div class="clearfix" id="refreshCC">
					{{ generateCC({
						'init' 		: initCC, 
						'typeDoc' 	: 'PAN',
						'idDoc' 	: CC_idDoc, 
						'idLigne' 	: article.id_lig, 
						'idPanier' 	: idUserPanier,
						'article' 	: article.COD_ART,
						'ssFamille' : article.COD_SFAM,
						'societe' 	: codeSte,

						'idPU'    	: 'input_PX_ART',
						'idQte'   	: 'input_QTE',
						'idTVA'   	: 'input_TAUX_TVA',
					}) }}
                </div>
            </form>
            
            <script>
                $('#input_PX_ART, #input_TAUX_TVA, #input_QTE, #input_PX_ART_TTC').change(function(){
                    {% if param.TTC == true %}
                        var tva = $('#input_TAUX_TVA').val().replace(/\s/g, '');
                        var tva = parseFloat(tva.replace(',','.'));
                    {% else %}
                        var tva = 0;
                    {% endif %}

                    var prixUnitaire = $('#input_PX_ART').val().replace(/\s/g, '');
                    var qte = $('#input_QTE').val().replace(/\s/g, '');

                    prixUnitaire = parseFloat(prixUnitaire.replace(',','.'));
                    var qte = parseFloat(qte.replace(',','.'));

                    if($('#input_PX_ART_TTC').length && $(this).attr('id') != 'input_PX_ART_TTC') {
                        var prixUnitaire = (prixUnitaire) * (1 + tva/100);
                        $('#input_PX_ART_TTC').val(prixUnitaire.toFixed('{{ getConst('PUDECIMAL') }}'));
                    }

                    if ($('#input_PX_ART_TTC').length && $(this).attr('id') == 'input_PX_ART_TTC') {
                        var prixUnitaireTTC = parseFloat($('#input_PX_ART_TTC').val().replace(/\s/g, ''));
                        
                        var prixUnitaire = prixUnitaireTTC / (1+tva/100);
                        $('#input_PX_ART').val(prixUnitaire.toFixed('{{ getConst('PUDECIMAL') }}'));
                    }

                    if (qte) {
                        var montant = prixUnitaire * qte;
                        if(isNaN(montant)) {
                            var montant = 0;
                        }
                        $('#input_montantTotalLigne').val(montant.toFixed(2));
                    }
                });

                $('#input_budgetUnitaire, #input_budget_total ,#input_QTE ').change(function(){
                    var qte = $('#input_QTE').val().replace(/\s/g, '');
                    var budgetUnitaire = $('#input_budgetUnitaire').val().replace(/\s/g, '');
                    var budgetTotal = $('#input_budget_total').val().replace(/\s/g, '');

                    qte = parseFloat(qte.replace(',','.'));
                    budgetUnitaire = parseFloat(budgetUnitaire.replace(',','.'));
                    budgetTotal = parseFloat(budgetTotal.replace(',','.'));

                    if ($(this).attr('id') == 'input_budgetUnitaire') {
                        budgetTotal = budgetUnitaire * qte;
                    } else if ($(this).attr('id') == 'input_budget_total') {
                        budgetUnitaire = budgetTotal / qte;
                    } else {
                        budgetTotal = budgetUnitaire * qte;
                    }

                    if(isNaN(budgetUnitaire)) {
                        var budgetUnitaire = 0;
                    }

                    if(isNaN(budgetTotal)) {
                        var budgetTotal = 0;
                    }

                    $('#input_budgetUnitaire').val(budgetUnitaire);
                    $('#input_budget_total').val(budgetTotal);
                });

                $('#input_COD_ART').change(function() {
                    activeLoader();
                    $.ajax({
                        url: window.location.pathname,
                        type: 'POST',
                        dataType: 'html',
                        data : $('#formLigneLibre').serialize()+'&action=changeArt',
                        success: function (htmlData) 
                        {
                            refreshFonction('divRefresh', htmlData);
                            desactiveLoader();
                        },
                        error: function (data){
                            $('#input_COD_ART').val('');
                            $('#input_DES_ART').val('');
                            desactiveLoader();
                            $("#modal-content").addClass("modal_small");
                            $("#modal-body").html(data.responseText);

                            activePopup();
                        }
                    });
                });

                $('#input_COD_SFAM').change(function() {
                    activeLoader();
                    $.ajax({
                        url: window.location.pathname,
                        type: 'POST',
                        dataType: 'html',
                        data : $('#formLigneLibre').serialize()+'&action=changeSfam',
                        success: function (htmlData) 
                        {
                            refreshFonction('refreshCC', htmlData);
                            desactiveLoader();
                        },
                        error: function (data){
                            $('#input_COD_SFAM').val('');
                            $('#text_COD_SFAM').val('');
                            desactiveLoader();
                            $("#modal-content").addClass("modal_small");
                            $("#modal-body").html(data.responseText);

                            activePopup();
                        }
                    });
                });

                $('#input_COD_DEV').change(function(){
                    if ($(this).val()) {
                        $('#devise_PX_ART').html($(this).val());
                        $('#devise_PX_ART_TTC').html($(this).val());
                        $('#devise_montantTotalLigne').html($(this).val());
                        $('#devise_budgetUnitaire').html($(this).val());
                        $('#devise_budget_total').html($(this).val());
                    }

                    updateView("{{ path('RechercheArticles.Articles.ajaxUpdate', {'action' : 'devise'}) }}");

                });

                $('#input_COD_FOURN').change(function(){
                    updateView("{{ path('RechercheArticles.Articles.ajaxUpdate', {'action' : 'fournisseur'}) }}");
                });

                $('#input_COD_ACD').change(function(){
                    updateView("{{ path('RechercheArticles.Articles.ajaxUpdate', {'action' : 'acd'}) }}");
                });

                {% if idBlocFrs == false %}
                    $('#input_QTE').change(function(){
                        updateView("{{ path('RechercheArticles.Articles.ajaxUpdate', {'action' : 'qte'}) }}");
                    });
                {% endif %}

                function updateView(path)
                {
                    activeLoader();

                    $.ajax({
                        url: path,
                        type: 'POST',
                        dataType: 'JSON',
                        data : $('#formLigneLibre').serialize(),
                        success: function (data) 
                        {
                            $.each(data.dataUpdate, function( key, value ) {
                                if (value.change) {
                                    $('#'+value.id).val(value.value).change();
                                } else {
                                    $('#'+value.id).val(value.value);
                                }
                            });
                            desactiveLoader();
                        },
                        error: function (data){
                        }
                    });
                }

                $('#input_selectRapide').change(function(){
                    var frsSelected = $(this).val();
                    $('#text_COD_FOURN').val(frsSelected).change();
                });
            </script>
        </div>
        <button style="float: right; margin-top: 15px;" class="principal button" 
                {% if idBlocFrs %}
                    onClick="ajaxPopupV2('{{ path('Panier.Articles.validateArticle', {'idBlocFrs':idBlocFrs, 'idLigne':idLigne}) }}', 'formLigneLibre');"
                {% else %}
                    onClick="ajaxPopupV2('{{ path('RechercheArticles.Articles.validate', {'table':table, 'rowCompteur':rowCompteur}) }}', 'formLigneLibre');"
                {% endif %}
        >
            {{ 'Enregistrer la nouvelle ligne' | trad }}
        </button>
    </div>



{% endblock %}