{% extends 'layout.twig' %}

{% block body %}
    <div class="contenu clearfix">
        <H1>{{ 'Bons de transfert' | trad }}</H1>
        {{ ariane() }}

        <h3>
            {{ 'Création de bon de transfert' | trad }}

            <button type="submit" class="principal button button_right last" form="bonTransfertForm">
                {{ 'Créer' | trad }}
            </button>
            <a href="{{ path('Stock.BonTransfert.gestion') }}" class="secondaire button button_right">
                {{  'Annuler' | trad }}
            </a>
        </h3>

        <div class="tab-content clearfix" id="tab-content">
            <form method="post" name="sbt_ente" id="bonTransfertForm" action="{{ path('Stock.BonTransfert.nouveau') }}" style="margin-top:10px;">
                <div class="tab-content">
                    <div class="tab-pane active in clearfix padding_form bg_form border_form">
                        <div class="colonne2">
                            <div class="row">
                                {{ inputAdvance('DATE', {
                                    'titre' : 'Date de création' | trad,
                                    'name'  : 'SBT_ENTE[DTE_CREAT]',
                                    'value' : post.SBT_ENTE.DTE_CREAT ? post.SBT_ENTE.DTE_CREAT: dateCreation,
                                    'pathValidator': path('Ajax.validator.date'),
                                    'paramsValidator': "{'dateMin' : '"~ dateJour ~"', 'null': false}",
                                    'obligatoire': true
                                }) }}
                            </div>
                            <div class="row">
                                {{ inputAdvance('ZOOMADVANCE', {
                                    'titre': 'Site d\'origine' | trad,
                                    'name' : 'SBT_ENTE[SITE]',
                                    'value' : site,
                                    'pahtZoom' : path('Ajax.liste.siteStockAccessible'),
                                    'paramZoom' : "{'opened_only': true }",
                                    'entity' : 'SSiteSto',
                                    'titleZoom' : 'Liste des sites de stockage' | trad,
                                    'pathConvert' : path('Ajax.outil.convertLibelle'),
                                    'convertLibelle' : 'convertLibelleGlobal',
                                    'obligatoire': true,
                                    'pathValidator' : path('Ajax.validator.zoom'),
                                    'paramsValidator' : "{'entity' : 'SSiteSto', 'nomChamp' : '"~ 'Site' | trad ~"', 'null' : false}",
                                    'myFuncValidator' : 'isNoEnteteModifiable',
                                    'paramFuncValidator' : '["BT", "input_SBT_ENTE[NO_BT]", "input_SBT_ENTE[SITE]", "' ~ path('Stock.Numerotation.isNoEnteteModifiable') ~ '"]',
                                }) }}
                            </div>
                            {% set is_no_ds_editable = post.NO_DS != null %}
                            <div class="row {% if not is_no_ds_editable %}d-none{% endif %}" id="noDsDiv">
                                {{ inputAdvance('ZOOMADVANCE', {
                                    'titre': 'N° de demande de service' | trad,
                                    'name' : 'SBT_ENTE[NO_DS]',
                                    'value' : post.NO_DS,
                                    'pahtZoom' : path('Ajax.liste.demandesServices'),
                                    'paramZoom' : "{'filter_SE#point#SOLDE_DS' : 'E', 'filter_SE#point#SITE': $('#'+CSS.escape('input_SBT_ENTE[SITE]')).val(), 'filter_SE#point#TYPE_DEM': 'T' }",
                                    'entity' : 'SdsEnte',
                                    'titleZoom' : 'Liste des demandes de service à satisfaire' | trad,
                                    'widthPopup' : 'modal_large',
                                    'pathValidator' : path('Ajax.validator.sdsEntes'),
                                    'paramsValidator' : "{'entity' : 'SdsEnte', 'nomChamp' : '"~ 'N° de demande de service' | trad ~"', 'null' : true, 'filter_SE#point#SOLDE_DS': 'E', 'filter_SE#point#SITE': $('#'+CSS.escape('input_SBT_ENTE[SITE]')).val() }",
                                    'option': post.NO_DS ? 'readonly': ''
                                }) }}
                            </div>
                            <div class="row mb-0">
                                {{ include('@Stock/Composant/_select_multiple.twig', {
                                    jsonValues: '[]',
                                    isPrincipal: true,
                                    cssClass: 'modal_large',
                                    name: 'SBT_LIGNS',
                                    title: 'Choix des lignes' | trad,
                                    path: path('Stock.LigneDemandeService.liste'),
                                    popupTitleJS: '\'' ~ 'Choix des lignes de la demande de service n°' | trad ~  '\'' ~ ' + $(\'#\'+CSS.escape(\'input_SBT_ENTE[NO_DS]\')).val()',
                                    parameters: '{ inputName: \'SBT_LIGNS\', divInputs: \'input_SBT_LIGNS\', NO_DS: $(\'#\'+CSS.escape(\'input_SBT_ENTE[NO_DS]\')).val() }'
                                }) }}
                            </div>
                        </div>
                        <div class="colonne2 last">
                            <div class="row">
                                {{ inputAdvance('ZOOMADVANCE', {
                                    'titre': 'Magasinier' | trad,
                                    'name' : 'SBT_ENTE[MAG]',
                                    'value' : magasinier,
                                    'pahtZoom' : path('Ajax.liste.magasiniers'),
                                    'entity' : 'HASTUTIL',
                                    'titleZoom' : 'Liste des magasiniers' | trad,
                                    'pathConvert' : path('Ajax.outil.convertLibelle'),
                                    'convertLibelle' : 'convertLibelleGlobal',
                                    'pathValidator' : path('Ajax.validator.zoom'),
                                    'paramsValidator' : "{'entity' : 'HASTUTIL','nomChamp' : '"~ 'Magasinier' | trad ~"', 'null' : false}",
                                    'obligatoire': true
                                }) }}
                            </div>
                            <div class="row">
                                {% set isBonTransfertMultisociete = is_bon_transfert_multisociete() ? 'true': 'false' %}
                                {{ inputAdvance('ZOOMADVANCE', {
                                    'titre': 'Site destinataire' | trad,
                                    'name' : 'SBT_ENTE[SITE_DEST]',
                                    'value' : dest,
                                    'pahtZoom' : path('Ajax.liste.siteStockAccessible'),
                                    'paramZoom' : "{'opened_only': true, 'is_bon_transfert_multisociete': " ~ isBonTransfertMultisociete ~ ", 'site_origine': $('#' + CSS.escape('input_SBT_ENTE[SITE]')).val() }",
                                    'entity' : 'SSiteSto',
                                    'titleZoom' : 'Liste des sites de stockage' | trad,
                                    'pathConvert' : path('Ajax.outil.convertLibelle'),
                                    'convertLibelle' : 'convertLibelleGlobal',
                                    'obligatoire': true,
                                    'pathValidator' : path('Ajax.validator.zoom'),
                                    'paramsValidator' : "{'entity' : 'SSiteSto', 'nomChamp' : '"~ 'Site' | trad ~"', 'null' : false}",
                                    'myFuncValidator': 'toggleNoDsField',
                                    'paramFuncValidator': '[]'
                                }) }}
                            </div>
                            <div class="row">
                                {{ inputAdvance('TEXT', {
                                    'titre': 'N° de bon de transfert' | trad,
                                    'name': 'SBT_ENTE[NO_BT]',
                                    'value': post.SBT_ENTE.NO_BT,
                                    'obligatoire': parametreNumerotation.TYPE_NUM == 'M',
                                    'pathValidator' : path('Ajax.validator.noEntete'),
                                    'option': not is_no_modifiable(parametreNumerotation) ? 'disabled': '',
                                    'paramsValidator' : "{'typeEntete': 'BT', 'entity': 'BonTransfert', 'enteLabel': 'bon de transfert', 'site': $('#'+CSS.escape('input_SBT_ENTE[SITE]')).val()}",
                                    'myFuncValidator' : 'reserverNoEntete',
                                    'paramFuncValidator' : '["BT", "input_SBT_ENTE[NO_BT]", "input_SBT_ENTE[SITE]", "' ~ path('Stock.Numerotation.noReservation') ~ '"]',
                                }) }}
                            </div>
                        </div>
                    </div>
                </div>
            </form>
        </div>
    </div>

    <script type="application/javascript" src="{{ baseUrl('js/Modules/Stock/enteForm.js') }}"></script>
    <script type="application/javascript" src="{{ baseUrl('js/Modules/Stock/postAjaxForm.js') }}"></script>
    <script type="application/javascript">
        $('#bonTransfertForm').on('submit', (event) => {
            event.preventDefault();

            activeLoader();
            const form = $('#bonTransfertForm');
            const formData = form.serializeArray();

            submitForm(form, formData);
        });

        $('#' + CSS.escape('input_SBT_ENTE[MAG]')).on('change', (event) => {
            $.ajax({
                type: 'POST',
                url: '{{ path('Stock.SiteStock.getSiteStockFromMagasinier') }}',
                data: {
                    code: $(event.target).val()
                },
                success: (ssitesto) => {
                    const inputSite = $('#' + CSS.escape('input_SBT_ENTE[SITE]'));

                    inputSite.val(ssitesto.SITE);
                    inputSite.trigger('change');
                    $('#' + CSS.escape('text_SBT_ENTE[SITE]')).val(ssitesto.DESIGN + ' (' + ssitesto.SITE + ')');
                }
            });
        });

        function toggleNoDsField () {
            const noDsDiv = $('#noDsDiv');
            if ($('#' + CSS.escape('input_SBT_ENTE[SITE_DEST]')).val() === '') {
                noDsDiv.addClass('d-none');
                noDsDiv.removeClass('d-block');
            } else {
                noDsDiv.addClass('d-block');
                noDsDiv.removeClass('d-none');
            }
        }
    </script>
{% endblock %}