<form method="post" name="SBE_LIGN" id="{{ formId }}" action="{{ formAction }}">
    <h3 class="mb-base">
        &nbsp&nbsp
        <button type="submit" class="button principal button_right last" id="validateLignForm">
            {{ 'Enregistrer' | trad }}
        </button>
        <button type="button" class="button secondaire listeLigns">
            {{ 'Annuler' | trad }}
        </button>
    </h3>
    <div>
        <div class="tab-pane active in clearfix padding_form bg_form border_form">
            <div class="clearfix">
                <div class="colonne2">
                    <div class="row">
                        <input type="hidden" name="SBE_ENTE_SITE" id="input_SBE_ENTE_SITE" value="{{ bonEntree.SITE }}">
                        {{ inputAdvance('ZOOMADVANCE',{
                            titre: 'Code article' | trad,
                            name: 'SBE_LIGN[CODE_ART]',
                            value: ligneBonEntree.CODE_ART ?? '',
                            pahtZoom: path('Ajax.liste.stockLocal'),
                            entity: 'Sarticle',
                            titleZoom : strBuild('@1@ : liste des articles' | trad, [siteStock.DESIGN ~ ' (' ~ siteStock.SITE ~ ')']),
                            paramZoom: "{'filter_egal_STO#point#SITE' : $('#input_SBE_ENTE_SITE').val(), 'divPrix': 'input_SBE_LIGN[PRIX_ENT]', 'inputToDisable': 'input_SBE_LIGN[PRIX_ENT]', 'filter_egal_SL#point#NO_PR': " ~  bonEntree.BE_NOPR ~ ", 'divStkloSi': 'text_SBE_LIGN[SECTIMP]', 'divStkloCdc': 'text_SBE_LIGN[CODE_COMP]', 'divStkloSca': 'text_SBE_LIGN[SSCPTEANA]', 'divQte': 'input_SBE_LIGN[QTE_ENT]', 'qteLabelText': '" ~ 'Quantité' | trad ~ "' }",
                            pathConvert: path('Ajax.outil.convertLibelle'),
                            convertLibelle: 'convertLibelleGlobal',
                            libelleBDD: 'DESIGN',
                            obligatoire: true,
                            pathValidator : path('Ajax.validator.zoomStockLocal'),
                            paramsValidator : "{'null' : false, 'site' : $('#input_SBE_ENTE_SITE').val() }",
                        }) }}
                    </div>
                </div>
                <div class="colonne2 last">
                    <div class="row">
                        {{ inputAdvance('TEXT', {
                            titre: strBuild('Quantité @1@' | trad, [uniteStockee ? '(' ~ uniteStockee ~ ')': '']),
                            name: 'SBE_LIGN[QTE_ENT]',
                            obligatoire: true,
                            value: ligneBonEntree.QTE_ENT ? ligneBonEntree.QTE_ENT | qte: '',
                            pathValidator: path('Ajax.validator.float'),
                            paramsValidator: "{'min' : '0', 'obligatoire': true, 'format': " ~ format_qte() ~ "}",
                            addClass: 'text-right'
                        }) }}
                    </div>
                    <div class="row mb-0" {% if not is_prix_visible() %}style="display:none;"{% endif %}>
                        {{ inputAdvance('TEXT', {
                            titre: strBuild(
                                'Prix d\'entrée (@1@)' | trad, 
                                [bonEntree.DEVISE]
                            ),
                            name: 'SBE_LIGN[PRIX_ENT]',
                            obligatoire: false,
                            value: ligneBonEntree.PRIX_ENT ? ligneBonEntree.PRIX_ENT | prixUnitaire: '',
                            pathValidator: path('Ajax.validator.float'),
                            paramsValidator: "{'min' : '0', 'format': " ~ format_pu() ~ "}",
                            addClass: 'text-right',
                            option: not has_droit_modification_prix() ? 'readonly': ''
                        }) }}
                        <small class="text-warning" id="prixEntWarning" data-text="{{ 'Attention : le prix d\'entrée diffère de plus de 10% de la valeur actuelle !' | trad }}"></small>
                    </div>
                </div>
            </div>
            <div class="clearfix">
                <hr>
                <div class="colonne2">
                    <div class="row">
                        {{ include('@Stock/Composant/ZoomAdvance/_section_imputation.twig', {
                            name: 'SBE_LIGN[SECTIMP]',
                            configAxeImp: configAxeImp,
                            siObligatoire: is_si_obligatoire(typeEntete),
                            codeSteInputId: 'input_SBE_ENTE_CODE_STE',
                            value: ligneBonEntree.SECTIMP ?? post.SBE_LIGN.INIT.SECTIMP,
                        }) }}
                    </div>
                    <div class="row mb-0">
                        {{ include('@Stock/Composant/ZoomAdvance/_code_complementaire.twig', {
                            name: 'SBE_LIGN[CODE_COMP]',
                            configAxeImp: configAxeImp,
                            cdcObligatoire: is_cdc_obligatoire(typeEntete),
                            codeSteInputId: 'input_SBE_ENTE_CODE_STE',
                            value: ligneBonEntree.CODE_COMP ?? post.SBE_LIGN.INIT.CODE_COMP,
                        }) }}
                    </div>
                </div>
                <div class="colonne2 last">
                    {% if is_cg_active() %}
                    <div class="row">
                        {{ inputAdvance('TREEVIEW', {
                            'titre' : 'Code gestion' | trad,
                            'name' : 'SBE_LIGN[CODGES]',
                            'pathTreeview' : path('Ajax.Treeview.codeGestion'),
                            'paramsTreeview' : "{'CODE_SI': $('#'+CSS.escape('input_SBE_LIGN[SECTIMP]')).val() !== '' ? $('#'+CSS.escape('input_SBE_LIGN[SECTIMP]')).val(): $('#'+CSS.escape('input_SBE_LIGN[INIT][SECTIMP]')).val(),  'cg_valide': 'on', 'CODE_STE': $('#'+CSS.escape('input_SBE_ENTE_CODE_STE')).val(), 'inputCG' : 'SBE_LIGN[CODGES]', 'affichageLibelle' : 1 }",
                            'titleTreeview' : 'Code gestion' | trad,
                            'value':  ligneBonEntree.CODGES ?? post.SBE_LIGN.INIT.CODGES,
                            'convertLibelle' : 'cgTrad',
                            'pathValidator' : path('Ajax.validator.codeGestion'),
                            'paramsValidator' : "{'nomChamp' : '"~ ('Code gestion' | trad |e('js')|raw)~"', 'null' : true, 'CODE_SI': $('#'+CSS.escape('input_SBE_LIGN[SECTIMP]')).val() !== '' ? $('#'+CSS.escape('input_SBE_LIGN[SECTIMP]')).val(): $('#'+CSS.escape('input_SBE_LIGN[INIT][SECTIMP]')).val() }",
                            '_pathConvert' : path('Ajax.outil.convertLibelle'),
                            'entity' : 'Codgest',
                            'codeBDD' : 'CODE_GES',
                            'libelleBDD' : 'CODE_AFF',
                            'codeSte' : "$('#input_SBE_ENTE_CODE_STE').val()",
                            'siLink': 'input_SBE_LIGN[SECTIMP]',
                            'codeAffCG' : post['text_SBE_LIGN[CODGES]'],
                            'codeSteCG': bonEntree.CODE_STE ?? '',
                            'sectimpu': ligneBonEntree.SECTIMP ?? '',
                            'myFunction' : 'convertLibelleCodeGestion',
                            'obligatoire': isCodgestObligatoire,
                            'myParams' : '["'~path('Ajax.outil.convertLibelleCodeGestion')~'", this, "CODE_GES", "CODE_AFF", "input_SBE_LIGN[CODGES]", "text_SBE_LIGN[CODGES]", "' ~ post['SBE_LIGN[CODGES]'] ~ '", "1", "", "input_SBE_LIGN[SECTIMP]", 1, ]',
                            'option': not has_codgest(bonEntree.CODE_STE, ligneBonEntree.SECTIMP ?? post.SBE_LIGN.INIT.SECTIMP) ? 'readonly': ''
                        }) }}
                    </div>
                    {% endif %}
                    <div class="row mb-0">
                        {{ include('@Stock/Composant/ZoomAdvance/_sous_compte_analyse.twig', {
                            name: 'SBE_LIGN[SSCPTEANA]',
                            configAxeImp: configAxeImp,
                            scaObligatoire: is_sca_obligatoire(typeEntete),
                            codeSteInputId: 'input_SBE_ENTE_CODE_STE',
                            value: ligneBonEntree.SSCPTEANA ?? post.SBE_LIGN.INIT.SSCPTEANA
                        }) }}
                    </div>
                </div>
            </div>
            <div class="clearfix" id="cs">
                {% if CSExist('SBE_LIGN') %}
                    {% set codeEnr = autoCompletCodeEnr(noBe, noLigne) %}
                    <hr>
                    {{ inputCSAdvance({
                        'codTab' : 'SBE_LIGN',
                        'colonneActif' : true,
                        'ModeModif' : modeModif,
                        'codeEnr' : codeEnr,
                        'post' : post
                    }) }}
                {% endif %}
            </div>
            <fieldset class="scheduler-border {% if stockArticle is not defined or stockArticle.TRACABLE != '54' %}d-none{% endif %} mb-0" id="lots">
                <legend class="scheduler-border">{{ 'Répartition par lots' | trad }}</legend>
                <div id="collection">
                    {% if ligneBonEntree is defined and stockArticle.TRACABLE == '54' %}
                        {% for key, lotBonEntree in ligneBonEntree.SBENT_LOS %}
                            {{ include('@Stock/LigneBonEntree/Composant/_lot.twig', { key: key, lotBonEntree: lotBonEntree, ligneBonEntree: ligneBonEntree, dateInputType: 'DATE' }) }}
                        {% endfor %}
                    {% endif %}
                </div>
                <div class="bs-col-1">
                    <button type="button" class="principal addItem">
                        + Ajouter un lot
                    </button>
                </div>
            </fieldset>
        </div>
    </div>
</form>
<div class="d-none">
    {{ include('@Stock/LigneBonEntree/Composant/_lot.twig', { key: '%i%', ligneBonEntree: ligneBonEntree, model: true, dateInputType: 'TEXT' }) }}
    {{ include('@Stock/LigneBonEntree/Composant/_lot.twig', { key: 0, ligneBonEntree: ligneBonEntree, dateInputType: 'TEXT' }) }}
</div>
<script type="application/javascript" src="{{ baseUrl('js/Modules/Stock/csInitializer.js') }}"></script>
<script type="application/javascript">
    $('#' + CSS.escape('input_SBE_LIGN[PRIX_ENT]')).on('change', (event) => {
        const prixEntWarning = $('#prixEntWarning');
        if ((Math.abs($(event.target).attr('data-sstocklosValue') - $(event.target).val()) / $(event.target).attr('data-sstocklosValue')) > 0.1) {
            prixEntWarning.text(prixEntWarning.attr('data-text'));
        } else {
            prixEntWarning.text('');
        }
    });

    $('#' + CSS.escape('input_SBE_LIGN[CODE_ART]')).on('change', (event) => {
        const codeArt = $(event.target).val();
        const site =  $('#input_SBE_ENTE_SITE').val();

        showLotsFieldSet(
           '{{ path('Stock.StockLocal.getInformation') }}',
           site,
           codeArt,
           () => $('#collection').find($('#' + CSS.escape('input_SBENT_LO[0][DTE_PEREM]'))).addClass('datepicker')
        );

        if (!'{{ modeModif }}') {
            initLigneBonEntreeCs([['SARTICLE', codeArt], ['SSTOCKLO', site + codeArt]])
        }
    });

    if (!'{{ modeModif }}') {
        $('#' + CSS.escape('input_SBE_LIGN[SECTIMP]')).on('change', (event) => {
            initLigneBonEntreeCs([['SECTIMPU', $(event.target).val()]])
        });

        $('#' + CSS.escape('input_SBE_LIGN[CODE_COMP]')).on('change', (event) => {
            initLigneBonEntreeCs([['CODECOMP', $(event.target).val()]])
        });

        $('#' + CSS.escape('input_SBE_LIGN[SSCPTEANA]')).on('change', (event) => {
            initLigneBonEntreeCs([['SSCPTANA', $(event.target).val()]])
        });
    }

    function initLigneBonEntreeCs (tablesSources) {
        initializeCs(
            '{{ path('Ajax.InitChampController.initializeCs') }}',
            '{{ formId }}',
            $('#'+CSS.escape('input_SBE_ENTE_CODE_STE')).val(),
            '{{ autoCompletCodeEnr(noBe, noLigne) }}',
            'SBE_LIGN',
            tablesSources
        );
    }
</script>