Subversion-Projekte lars-tiefland.webanos.marine-sales.de

Revision

Revision 416 | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
2 lars 1
{block name="maincontent"}
2
    <!-- $Id: index.tpl 87 2023-05-20 23:09:43Z lars $ BEGIN -->
416 lars 3
        <link rel="stylesheet" type="text/css" href="/js/tooltipster-master/css/tooltipster.css" />
4
        <link rel="stylesheet" type="text/css" href="/js/tooltipster-master/css/themes/tooltipster-light.css" />
5
        <script type="text/javascript" src="/js/tooltipster-master/js/jquery.tooltipster.min.js"></script>
394 lars 6
    <style>
7
        #artikeluebersicht{
8
            max-width:100%;
9
            width:100%;
10
        }
11
        .dt-button:hover{
12
            font-size: 0.88em!important;
13
        }
14
        div.export{ float:right; clear:both; padding-top:2%; }
15
        div.DTTT { margin-bottom: 0.5em; float: right; }
16
        div.dataTables_wrapper { clear: both; }
17
        .statusZahl{ float:left;padding-right:1%;margin-top:-1px; }
18
    </style>
19
    <script>
20
        $(function()
21
        {
22
 
23
            $(".iconToggler").css("cursor", "pointer").on("click", function(e){
24
                e.preventDefault();
25
 
26
                // Get the column API object
27
                let columnValue = $(this).attr('data-column');
28
                columnValue = columnValue.split("_");
29
 
30
 
31
                for ( i = 0; i < columnValue.length; i++ ){
32
                    let column = table.column( columnValue[i] );
33
                    column.visible( !column.visible() );
34
                }
35
            } );
36
 
37
            let table = $('#artikeluebersicht').DataTable({
414 lars 38
                "language": {
39
                    "url": "/js/DataTables-1.10.19/German.json",
40
		},
394 lars 41
                "dom": 'lf<"export"B>rtip',
42
                "processing": true,
43
                "serverSide": true,
44
                "ajax": {
403 lars 45
                    "type": "GET",
46
                    "url" : "/vportale/salesPortalItems/getArtikel",
394 lars 47
                    "data": function(d){
411 lars 48
                        d.vp_id = $('#vportal_sel').val();
394 lars 49
                        d.artikelAnzeige = $("#artikelAnzeigeSelect").val();
50
                        d.statusSelect = $("#statusSelect").val();
51
                    }
52
                },
53
                "drawCallback": function( settings ) {
54
                    styleButtons();
55
                    $(".tooltip").tooltipster({
56
                        animation: 'fade',
57
                        delay: 200,
58
                        theme: 'tooltipster-light',
59
                        contentAsHTML: true,
60
                        touchDevices: true,
61
                        trigger: 'hover'
62
                    });
63
                },
64
                "stateSave": true,
65
                "buttons": [
66
                    {
67
                        extend: 'colvis',
68
                        text: 'Spalten anzeigen'
69
                    },
70
                    {
71
                        extend: 'csv',
72
                        text: 'CSV',
73
                        exportOptions: {
74
                            modifier: {
75
                                order: 'current',
76
                                page: 'current'
77
                            },
78
                            columns: ':visible',
79
                            stripHtml: false,
80
                            stripNewLines: false
81
                        },
82
                        title: 'vPortalArtikel'
83
                    },
84
                    {
85
                        extend: 'excel',
86
                        text: 'Excel',
87
                        exportOptions: {
88
                            modifier: {
89
                                order: 'current',
90
                                page: 'current'
91
                            },
92
                            columns: ':visible'
93
                        },
94
                        title: 'vPortalArtikel',
95
                        extension: ".xlsx",
96
                        fnCellRender: function ( sValue, iColumn, nTr, iDataIndex ) {
97
                            return sValue.replace(/<br\s*\/?>/ig, "\r\n") ;
98
                        }
99
                    },
100
                    {
101
                        extend: 'pdf',
102
                        text: 'PDF',
103
                        exportOptions: {
104
                            modifier: {
105
                                order: 'current',
106
                                page: 'current'
107
                            },
108
                            columns: ':visible'
109
                        },
110
                        title: 'vPortalArtikel',
111
                    }
112
 
113
                ],
114
                "columns":[
115
                    { "data": "id" },
116
                    { "data": "sku" },
414 lars 117
                    { "data": "foreign_item_id" },
118
                    { "data": "item_id" },
394 lars 119
                    { "data": "name" },
120
                    { "data": "artstammArtikel"},
414 lars 121
                    { "data": "manufacturer"},
394 lars 122
                    { "data": "ean" },
414 lars 123
                    { "data": "price" },
394 lars 124
                    { "data": "currency" },
414 lars 125
                    { "data": "price_type" },
126
                    { "data": "amount" },
394 lars 127
                    { "data": "status" },
128
                    { "data": null }
129
                ],
130
                "columnDefs": [
131
                    { "name": "id", "targets": 0 },
132
                    { "name": "sku", "targets": 1 },
414 lars 133
                    { "name": "foreign_item_id", "targets": 2 },
424 lars 134
                    { "name": "artikel_id", "targets": 3 },
135
                    { "name": "name", "targets": 4 },
394 lars 136
                    {
137
                        "name": "artstammArtikel",
424 lars 138
                        "targets": 5,
394 lars 139
                        "render": function ( data, type, row ) {
140
                            let string = "";
141
                            if(data != null){
142
                                string += "<table>";
143
                                for( let i = 0; i < data.length; i++){
144
                                    string += "<tr><td>" + data[i]["ID"] + "</td><td>" + data[i]["kurzbezeichnung"] + "</td><td>" + data[i]["menge"] + "</td></tr>";
145
                                }
146
                                string += "</table>";
147
                            }
148
                            return string;
149
                        },
150
                    },
424 lars 151
                    { "name": "manufacturer", "targets": 6 },
152
                    { "name": "ean", "targets": 7 },
153
                    { "name": "price", "targets": 8 },
154
                    { "name": "currency", "targets": 9 },
155
                    { "name": "price_type", "targets": 10 },
156
                    { "name": "amount", "targets": 11 },
394 lars 157
                    {
158
                        "name": "status",
424 lars 159
                        "targets": 12,
394 lars 160
                        "render": function ( data, type, row ) {
161
                            console.log(data);
162
                            let string = "";
163
                            string = "<span class='statusZahl'>"+ data["status"] + "</span><span class='ui-icon ui-icon-info tooltip' title='"+data["feedback"]+"'></span>";
164
 
165
                            return string;
166
                        }
167
                    },
168
                    {
169
                        "name": "aktionen",
424 lars 170
                        "targets": 13,
394 lars 171
                        "render": function ( data, type, row ) {
172
                            let string = "";
173
                            string += data["aktionen"];
174
 
175
                            return string;
176
                        }
177
                    },
424 lars 178
                    { "orderable": false, "targets": [ 6, 13 ] },
179
                    { "searchable": false, "targets": [ 5, 13 ] }
394 lars 180
                ],
181
                "lengthMenu": [[100, 150, -1], [100, 150, "Alle"]],
182
            });
183
            jQuery.fn.dataTableExt.oSort['currency-asc'] = function(a,b) {
184
                /* Remove any commas (assumes that if present all strings will have a fixed number of d.p) */
185
                let x = a == "-" ? 0 : a.replace( /,/g, "" );
186
                let y = b == "-" ? 0 : b.replace( /,/g, "" );
187
 
188
                x = x.replace(/\./g, "");
189
                y = y.replace(/\./g, "");
190
 
191
                /* Parse and return */
192
                x = parseFloat( x );
193
                y = parseFloat( y );
194
                return x - y;
195
            };
196
 
197
            jQuery.fn.dataTableExt.oSort['currency-desc'] = function(a,b) {
198
                /* Remove any commas (assumes that if present all strings will have a fixed number of d.p) */
199
                let x = a == "-" ? 0 : a.replace( /,/g, "" );
200
                let y = b == "-" ? 0 : b.replace( /,/g, "" );
201
 
202
                x = x.replace(/\./g, "");
203
                y = y.replace(/\./g, "");
204
 
205
                /* Parse and return */
206
                x = parseFloat( x );
207
                y = parseFloat( y );
208
                return y - x;
209
            };
210
 
211
            jQuery.fn.dataTableExt.oSort['num-html-asc'] = function(a,b) {
212
                let x = a.replace( /<.*?>/g, "" );
213
                let y = b.replace( /<.*?>/g, "" );
214
                x = parseFloat( x );
215
                y = parseFloat( y );
216
                return ((x < y || isNaN(y) ) ? -1 : ((x > y || isNaN(x)) ? 1 : 0));
217
            };
218
            jQuery.fn.dataTableExt.oSort['num-html-desc'] = function(a,b) {
219
                let x = a.replace( /<.*?>/g, "" );
220
                let y = b.replace( /<.*?>/g, "" );
221
                x = parseFloat( x );
222
                y = parseFloat( y );
223
                return ((x < y || isNaN(x)) ? 1 : ((x > y || isNaN(y) ) ? -1 : 0));
224
            };
225
 
226
            $("#artikeluebersicht").delegate( "button.assign","click", assign_artikel);
227
            $("#artikeluebersicht").delegate( "button.edit","click", edit_artikel);
228
            $("#artikeluebersicht").delegate( "button.del","click", del_artikel);
229
            $("#artikeluebersicht").delegate( "button.lock","click", lock_artikel);
230
            $("#artikeluebersicht").delegate( "button.bestandsUpdate","click", bestandsUpdate);
231
 
232
            $('#artikelAnzeigeSelect, #statusSelect').change( function() {
233
                table.draw();
234
            } );
235
 
236
 
237
            table.on( 'column-visibility.dt', function ( e, settings, column, state ) {
238
                if( column == 14 && state == true ){
239
                    styleButtons();
240
                }
241
            });
242
 
243
            function styleButtons(){
244
 
416 lars 245
                $('.edit').uibutton({
394 lars 246
                    icons: {
247
                        primary: "ui-icon-pencil"
248
                    }
249
                })
250
 
416 lars 251
                $('.del').uibutton({
394 lars 252
                    icons: {
253
                        primary: "ui-icon-trash"
254
                    }
255
                })
256
 
416 lars 257
                $('.lock').uibutton({
394 lars 258
                    icons: {
259
                        primary: "ui-icon-locked"
260
                    }
261
                })
262
 
416 lars 263
                $('.assign').uibutton({
394 lars 264
                    icons: {
265
                        primary: "ui-icon-transfer-e-w"
266
                    }
267
                })
268
 
416 lars 269
                $('.bestandsUpdate').uibutton({
394 lars 270
                    icons: {
271
                        primary: "ui-icon-arrowrefresh-1-e"
272
                    }
273
                })
274
            }
275
 
276
 
277
            $('#vportale_artikel_dlg').dialog({
278
                autoOpen: false,
279
                resizable: false,
280
                modal: true,
281
                width: "80%",
282
                height:600,
283
                maxHeight:670,
284
                minWidth:600,
285
                buttons: {
286
                    "speichern": function()
287
                    {
288
                        let valid = $('#vportale_artikel_form').validate()//.form();
289
 
290
                        if (valid)
291
                        {
292
                            $('#vportale_artikel_content').load("vportale_artikel.php",$('#vportale_artikel_form').serializeArray(),function(html){
293
                                //alert(html);
294
                            });
295
                            $('#vportale_artikel_dlg').empty().dialog("close");
296
                        }
297
                    },
298
                    "abbrechen": function()
299
                    {
300
                        $('#vportale_artikel_dlg').empty().dialog("close");
301
                    }
302
                }
303
 
304
 
305
            });
306
 
307
            function lock_artikel()
308
            {
309
                let a_id = this.id;
310
                a_id = a_id.split("_");
311
                a_id = a_id[1];
312
                let url="vportale_artikel.php?action=lock&id=" + a_id;
313
                $('#vportale_artikel_content').load(url,{
412 lars 314
                    vp_id:$('#vportal_sel').val()
394 lars 315
                });
316
            }
317
 
318
            function edit_artikel()
319
            {
320
 
321
                let a_id = this.id;
322
                a_id = a_id.split("_");
323
                a_id = a_id[1];
324
 
325
                $('#vportale_artikel_dlg').html("<div style='margin-top:20%'><center><img src='/images/loading.gif'><br>Lade. Bite warten...</center></div>")
412 lars 326
                    .load("vportale_artikel.php?action=edit&id=" + a_id+"&vp_id="+$('#vportal_sel').val())
394 lars 327
                    .dialog("open");
328
 
329
            }
330
 
331
            function assign_artikel(e)
332
            {
333
 
334
                let fremdartikel_id = this.id;
335
                fremdartikel_id = fremdartikel_id.split("_");
336
                fremdartikel_id = fremdartikel_id[1];
337
 
338
                let vportal_id = $("#vportal_id").val();
339
 
340
                $('<div id="vportalAssignDialog">').dialog({
341
                    resizable: false,
342
                    modal: true,
343
                    width:"80%",
344
                    open: function(){
345
                        vportal_id = $("#vportal_id").val();
346
                        $(this).load("vportale_artikel.php?action=assign&fremdartikel_id=" + fremdartikel_id + "&vportal_id=" + vportal_id, function(){
347
                            $("#bezeichnung", this).trigger("keyup");
348
                        });
349
                    },
350
                    close: function() {
351
                        $('#vportalAssignDialog').empty().remove();
352
                    },
353
                    buttons: {
354
                        "speichern": function()
355
                        {
356
                            /*let valid = $('#vportale_artikel_form').validate({
357
                                debug: false,
358
                                errorClass: "error_upd"
359
                            }).form();*/
360
 
361
                            //if (valid)
362
                            {
363
                                $('#vportale_artikel_content').load("vportale_artikel.php",$('#vportale_artikel_form').serializeArray());
364
                                $('#vportalAssignDialog').empty().remove();
365
                            }
366
                        },
367
                        "abbrechen": function()
368
                        {
369
                            $("#vportalAssignDialog").empty().remove();
370
                        }
371
                    }
372
                });
373
                //e.stopPropagation();
374
            }
375
 
376
            function del_artikel()
377
            {
378
                let vpa_id = this.id;
379
                vpa_id = vpa_id.split("_");
380
                let vpa_name = vpa_id[2];
381
                vpa_id = vpa_id[1];
382
                $('#vportale_artikel_del_dlg').dialog(
383
                    {
384
                        modal: true,
385
                        width: 400,
386
                        resizable: false,
387
                        title: "Verkaufsportal-Artikel " + vpa_name + " löschen",
388
                        buttons: {
389
                            "Nein": function()
390
                            {
391
                                $(this).dialog("close");
392
                            },
393
                            "Ja": function()
394
                            {
395
                                let url="/vportale/vportale_artikel.php?action=del&id=" + vpa_id
396
                                $.get(url,function() {
412 lars 397
                                    url="/vportale/vportale_artikel.php?action=list"+"&vp_id="+$('#vportal_sel').val();
394 lars 398
                                    $('#vportale_artikel_content').load(url);
399
                                    $("#vportale_artikel_del_dlg").dialog("close");
400
                                });
401
                            }
402
                        }
403
                    })
404
            }
405
 
406
            function bestandsUpdate(){
407
                let fremdartikel_id = this.id;
408
                fremdartikel_id = fremdartikel_id.split("_");
409
                let vportal_id = fremdartikel_id[2];
410
                fremdartikel_id = fremdartikel_id[1];
411
                $('<div id="vportalAssignDialog">').dialog({
412
                    "modal"  : true,
413
                    "width"  : "300",
414
                    "height" : "300",
415
                    "open"   : function(){
416
                        $(this).load("bestandsUpdate.php?fremdartikel_id="+fremdartikel_id);
417
                    },
418
                    "close"  : function() {
419
                        $(this).empty().remove();
420
                    },
421
                    "buttons": {
422
                        "Beenden": function()
423
                        {
424
                            $(this).empty().remove();
425
                            $('#vportale_artikel_content').load("vportale_artikel.php?action=list"+"&vp_id="+vportal_id);
426
                        }
427
                    }
428
                });
429
            }
430
        })
431
    </script>
432
    <table style="float: left;">
433
        <tbody>
434
        <tr>
435
            <td class="links">
436
                <label for="artikelAnzeigeSelect">Artikelart</label>
437
            </td>
438
            <td class="rechts">
439
                <select id="artikelAnzeigeSelect">
440
                    <option value="-1" {if $smarty.session.artikelAnzeigeSelect == -1}selected{/if} >- alle -</option>,
441
                    <option value="1" {if $smarty.session.artikelAnzeigeSelect == 1}selected{/if}>zugewiesen</option>
442
                    <option value="2" {if $smarty.session.artikelAnzeigeSelect == 2}selected{/if}>nicht zugewiesen</option>
443
                </select>
444
            </td>
445
        </tr>
446
        <tr>
447
            <td class="links">
448
                <label for="statusSelect">Status</label>
449
            </td>
450
            <td class="rechts">
451
                <select id="statusSelect" name="status">
452
                    {html_options options=$statusSelect}
453
                </select>
454
            </td>
455
        </tr>
456
        <tr>
457
            <td colspan="2">&nbsp;</td>
458
        </tr>
459
        <tr>
460
            {if isset($leistungsdatum)}
461
                <td>Leistungsdatum:</td>
462
                <td>{html_options options=$zeitraum name="leistungsdatum" id="leistungsdatumSelect" selected=0}</td>
463
            {/if}
464
        </tr>
465
        </tbody>
466
    </table>
467
 
468
    <table id="artikeluebersicht" class="table-striped table-bordered display" style="margin-top:10px;float:left;">
469
        <thead>
470
        <tr>
471
            <th>ID</th>
472
            <th>SKU</th>
473
            <th>fremde<br>Art.-Nr.</th>
474
            <th>Artikel-ID</th>
475
            <th>Name</th>
476
            <th>Artikelstamm-Artikel</th>
477
            <th>Hersteller</th>
478
            <th>EAN</th>
479
            <th>Preis</th>
480
            <th>Währung</th>
481
            <th>Preisart</th>
482
            <th>Menge</th>
483
            <th>Status</th>
484
            <th>Aktionen</th>
485
        </tr>
486
        </thead>
487
    </table>
412 lars 488
    <input type="hidden" id="vportal_id" value="" />
394 lars 489
 
490
    <div id="vportale_artikel_dlg" title="Artikel anlegen / ändern">
491
    </div>
492
    <div id="link_cat_dlg" title="Kategorie auswählen">
493
    </div>
494
 
495
    <div id="vportale_artikel_del_dlg" style="display:none">
496
        Wollen Sie diesen Artikel wirklich löschen?
497
    </div>
2 lars 498
    <!-- $Id: index.tpl 87 2023-05-20 23:09:43Z lars $ END -->
414 lars 499
{/block}