{% extends 'layout.twig' %}

{% block body %}
    <div class="contenu clearfix">
        <H1>{{ 'Bons de sortie' | trad }}</H1>
        {{ ariane() }}
        <h3 class="mb-base">
            {{ 'Création de bon de sortie' | trad }}

            <button type="button" class="principal button button_right last" id="bonSortieCreate">
                {{ 'Créer' | trad }}
            </button>
            <a href="{{ path('Stock.BonSortie.gestion') }}" class="secondaire button">
                {{  'Annuler' | trad }}
            </a>
        </h3>
        <div class="tab-content clearfix" id="tab-content">
            <div class="tab-content">
                <div class="tab-pane active in clearfix bg_form border_form pr-base pl-base">
                    <form method="post" name="sbs_ente" id="bonSortieForm" action="{{ path('Stock.BonSortie.nouveau') }}">
                        <fieldset class="scheduler-border">
                            <legend class="scheduler-border">{{ 'Bon de sortie' | trad }}</legend>
                            <div class="colonne2">
                                <div class="row">
                                    {{ inputAdvance('DATE', {
                                        'titre' : 'Date de création' | trad,
                                        'name'  : 'SBS_ENTE[DTE_CREAT]',
                                        'value' : post.SBS_ENTE.DTE_CREAT ? post.SBS_ENTE.DTE_CREAT: dateCreation,
                                        'pathValidator': path('Ajax.validator.date'),
                                        'paramsValidator': "{'dateMin' : '"~ dateJour ~"', 'null': false}",
                                        'obligatoire': true
                                    }) }}
                                </div>
                                <div class="row">
                                    {{ inputAdvance('TEXT', {
                                        'titre': 'Taux de marge (%)' | trad,
                                        'name': 'SBS_ENTE[MARK_UP]',
                                        'value': siteMarkUp | prix,
                                        'pathValidator': path('Ajax.validator.float'),
                                        'paramsValidator': "{'min': '0', 'max': 100, 'obligatoire': true}",
                                        'addClass': 'text-right'
                                    }) }}
                                </div>
                                <div class="row">
                                    {{ inputAdvance('TEXT', {
                                        'titre': 'N° de bon de sortie' | trad,
                                        'name': 'SBS_ENTE[NO_BS]',
                                        'value': post.SBS_ENTE.NO_BS,
                                        'option': not is_no_modifiable(parametreNumerotation) ? 'disabled': '',
                                        'obligatoire': parametreNumerotation.TYPE_NUM == 'M',
                                        'pathValidator' : path('Ajax.validator.noEntete'),
                                        'paramsValidator' : "{'typeEntete': 'BS', 'entity': 'BonSortie', 'enteLabel': 'bon de sortie', 'site': $('#'+CSS.escape('input_SBS_ENTE[SITE]')).val()}",
                                        'myFuncValidator' : 'reserverNoEntete',
                                        'paramFuncValidator' : '["BS", "input_SBS_ENTE[NO_BS]", "input_SBS_ENTE[SITE]", "' ~ path('Stock.Numerotation.noReservation') ~ '"]',
                                    }) }}
                                </div>
                            </div>
                            <div class="colonne2 last">
                                <div class="row">
                                    {{ inputAdvance('ZOOMADVANCE', {
                                        'titre': 'Magasinier' | trad,
                                        'name' : 'SBS_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">
                                    {{ inputAdvance('ZOOMADVANCE', {
                                        'titre': 'Site' | trad,
                                        'name' : 'SBS_ENTE[SITE]',
                                        'value' : site,
                                        'pahtZoom' : path('Ajax.liste.siteStockAccessible'),
                                        'paramZoom' : "{'opened_only': true, 'divCodeSte' : 'input_CODE_STE' }",
                                        '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' : '["BS", "input_SBS_ENTE[NO_BS]", "input_SBS_ENTE[SITE]", "' ~ path('Stock.Numerotation.isNoEnteteModifiable') ~ '"]',
                                        'option': post.NO_DS ? 'readonly': ''
                                    }) }}
                                    <input type="hidden" id="input_CODE_STE" value="{{ codeSte }}">
                                </div>
                                <div class="row">
                                    {% set is_nullable = is_tiers_nullable() ? 'true': 'false' %}
                                    {% set exclude_empty_code = is_blanc_interdit_tiers() ? 'true': 'false' %}
                                    {{ inputAdvance('ZOOMADVANCE', {
                                        'titre': 'Destinataire' | trad,
                                        'name' : 'SBS_ENTE[DEST]',
                                        'value': dest,
                                        'pahtZoom' : path('Ajax.liste.tiers'),
                                        'paramZoom': "{'exclude_empty_code': " ~ exclude_empty_code ~ "}",
                                        'entity' : 'Tiers',
                                        'titleZoom' : 'Liste des destinataires' | trad,
                                        'pathConvert' : path('Ajax.outil.convertLibelle'),
                                        'convertLibelle' : 'convertLibelleGlobal',
                                        'pathValidator' : path('Ajax.validator.zoom'),
                                        'paramsValidator' : "{'entity' : 'Tiers','nomChamp' : 'Provenance', 'null' : " ~ is_nullable ~ "}",
                                    }) }}
                                </div>
                            </div>
                        </fieldset>
                        <fieldset class="scheduler-border">
                            <legend class="scheduler-border">{{ 'Initialisation des lignes' | trad }}</legend>
                                <div class="colonne2">
                                    <div class="row">
                                        {{ inputAdvance('ZOOMADVANCE', {
                                            'titre': 'N° de demande de service' | trad,
                                            'name' : 'NO_DS',
                                            'value' : post.NO_DS,
                                            'pahtZoom' : path('Ajax.liste.demandesServices'),
                                            'paramZoom' : "{'filter_SE#point#SOLDE_DS': 'E', 'filter_SE#point#TYPE_DEM': 'S', 'filter_SE#point#SITE': $('#' + CSS.escape('input_SBS_ENTE[SITE]')).val(), 'divDest': 'text_SBS_ENTE[DEST]'  }",
                                            'entity' : 'SdsEnte',
                                            'titleZoom' : 'Liste des demandes de service à satisfaire' | trad,
                                            'widthPopup' : 'modal_large',
                                            'pathValidator' : path('Ajax.validator.zoom'),
                                            'paramsValidator' : "{'entity' : 'SdsEnte', 'nomChamp' : '"~ 'N° de demande de service' | trad ~"', 'null' : true}",
                                            'option': post.NO_DS ? 'readonly': ''
                                        }) }}
                                    </div>
                                </div>
                                <div class="colonne2 bs-flex last">
                                    <div class="row">
                                        {{ include('@Stock/Composant/_select_multiple.twig', {
                                            jsonValues: '[]',
                                            isPrincipal: true,
                                            cssClass: 'modal_large',
                                            name: 'SBS_LIGNS',
                                            title: 'Choix des lignes' | trad,
                                            path: path('Stock.LigneDemandeService.liste'),
                                            popupTitleJS: '\'' ~ 'Choix des lignes de la demande de service n°' | trad ~  '\'' ~ ' + $(\'#input_NO_DS\').val()',
                                            parameters: '{ inputName: \'SBS_LIGNS\', divInputs: \'input_SBS_LIGNS\', NO_DS: $(\'#\'+CSS.escape(\'input_NO_DS\')).val() }'
                                        }) }}
                                    </div>
                                </div>
                        </fieldset>
                    </form>
                    <form method="post" name="init_imputations" id="init_imputations">
                        <fieldset class="scheduler-border">
                            <legend class="scheduler-border">{{ 'Imputation pour initialisation (hors init par DS et par stock local)' | trad }}</legend>
                            <div class="colonne2">
                                <div class="row">
                                    {{ include('@Stock/Composant/ZoomAdvance/_section_imputation.twig', {
                                        name: 'SBS_LIGN[INIT][SECTIMP]',
                                        configAxeImp: configAxeImp,
                                        siObligatoire: false,
                                        codeSteInputId: 'input_CODE_STE',
                                    }) }}
                                </div>
                                <div class="row">
                                    {{ include('@Stock/Composant/ZoomAdvance/_code_complementaire.twig', {
                                        name: 'SBS_LIGN[INIT][CODE_COMP]',
                                        configAxeImp: configAxeImp,
                                        cdcObligatoire: false,
                                        codeSteInputId: 'input_CODE_STE',
                                    }) }}
                                </div>
                            </div>
                            <div class="colonne2 last">
                                {% if is_cg_active() %}
                                <div class="row">
                                    {{ inputAdvance('TREEVIEW', {
                                        'titre' : 'Code gestion' | trad,
                                        'name' : 'SBS_LIGN[INIT][CODGES]',
                                        'pathTreeview' : path('Ajax.Treeview.codeGestion'),
                                        'paramsTreeview' : "{'CODE_SI': $('#'+CSS.escape('input_SBS_LIGN[INIT][SECTIMP]')).val(),  'cg_valide': 'on', 'CODE_STE': $('#'+CSS.escape('input_CODE_STE')).val(), 'inputCG' : 'SBS_LIGN[INIT][CODGES]', 'affichageLibelle' : 1 }",
                                        'titleTreeview' : 'Code gestion' | trad,
                                        'value': post['SBS_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_SBS_LIGN[INIT][SECTIMP]')).val() }",
                                        '_pathConvert' : path('Ajax.outil.convertLibelle'),
                                        'entity' : 'Codgest',
                                        'codeBDD' : 'CODE_GES',
                                        'libelleBDD' : 'CODE_AFF',
                                        'codeSte' : "$('#input_CODE_STE').val()",
                                        'siLink': 'input_SBS_LIGN[INIT][SECTIMP]',
                                        'codeAffCG' : post['text_SBS_LIGN[INIT][CODGES]'],
                                        'codeSteCG': post['input_SBS_LIGN_CODE_STE'],
                                        'sectimpu': post['input_SBS_LIGN[INIT][SECTIMP]'],
                                        'myFunction' : 'convertLibelleCodeGestion',
                                        'myParams' : '["'~path('Ajax.outil.convertLibelleCodeGestion')~'", this, "CODE_GES", "CODE_AFF", "input_SBS_LIGN[INIT][CODGES]", "text_SBS_LIGN[INIT][CODGES]", "' ~ post['SBS_LIGN[INIT][CODGES]'] ~ '", "1", "", "input_SBS_LIGN[INIT][SECTIMP]", 1, ]',
                                    }) }}
                                </div>
                                {% endif %}
                                <div class="row">
                                    {{ include('@Stock/Composant/ZoomAdvance/_sous_compte_analyse.twig', {
                                        name: 'SBS_LIGN[INIT][SSCPTEANA]',
                                        configAxeImp: configAxeImp,
                                        scaObligatoire: false,
                                        codeSteInputId: 'input_CODE_STE',
                                    }) }}
                                </div>
                            </div>
                        </fieldset>
                    </form>
                </div>
            </div>
        </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">
        $('#bonSortieCreate').on('click', () => {
            activeLoader();
            const form = $('#bonSortieForm');
            const formData = form.serializeArray();

            submitForm(form, formData, (data) => {
                const initImputationsForm = $('#init_imputations');

                initImputationsForm.prop('action', data.redirectRoute);
                initImputationsForm.submit();
            });
        });
    </script>
{% endblock %}