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

Revision

Revision 414 | Zur aktuellen Revision | 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": "foreign_catalog_item_id" },
119
                    { "data": "item_id" },
394 lars 120
                    { "data": "name" },
121
                    { "data": "artstammArtikel"},
414 lars 122
                    { "data": "manufacturer"},
394 lars 123
                    { "data": "ean" },
414 lars 124
                    { "data": "price" },
394 lars 125
                    { "data": "currency" },
414 lars 126
                    { "data": "price_type" },
127
                    { "data": "amount" },
394 lars 128
                    { "data": "status" },
129
                    { "data": null }
130
                ],
131
                "columnDefs": [
132
                    { "name": "id", "targets": 0 },
133
                    { "name": "sku", "targets": 1 },
414 lars 134
                    { "name": "foreign_item_id", "targets": 2 },
135
                    { "name": "foreign_catalog_item_id", "targets": 3 },
394 lars 136
                    { "name": "artikel_id", "targets": 4 },
137
                    { "name": "name", "targets": 5 },
138
                    {
139
                        "name": "artstammArtikel",
140
                        "targets": 6,
141
                        "render": function ( data, type, row ) {
142
                            let string = "";
143
                            if(data != null){
144
                                string += "<table>";
145
                                for( let i = 0; i < data.length; i++){
146
                                    string += "<tr><td>" + data[i]["ID"] + "</td><td>" + data[i]["kurzbezeichnung"] + "</td><td>" + data[i]["menge"] + "</td></tr>";
147
                                }
148
                                string += "</table>";
149
                            }
150
                            return string;
151
                        },
152
                    },
414 lars 153
                    { "name": "manufacturer", "targets": 7 },
394 lars 154
                    { "name": "ean", "targets": 8 },
414 lars 155
                    { "name": "price", "targets": 9 },
394 lars 156
                    { "name": "currency", "targets": 10 },
414 lars 157
                    { "name": "price_type", "targets": 11 },
158
                    { "name": "amount", "targets": 12 },
394 lars 159
                    {
160
                        "name": "status",
161
                        "targets": 13,
162
                        "render": function ( data, type, row ) {
163
                            console.log(data);
164
                            let string = "";
165
                            string = "<span class='statusZahl'>"+ data["status"] + "</span><span class='ui-icon ui-icon-info tooltip' title='"+data["feedback"]+"'></span>";
166
 
167
                            return string;
168
                        }
169
                    },
170
                    {
171
                        "name": "aktionen",
172
                        "targets": 14,
173
                        "render": function ( data, type, row ) {
174
                            let string = "";
175
                            string += data["aktionen"];
176
 
177
                            return string;
178
                        }
179
                    },
180
                    { "orderable": false, "targets": [ 7, 14 ] },
181
                    { "searchable": false, "targets": [ 6, 14 ] }
182
                ],
183
                "lengthMenu": [[100, 150, -1], [100, 150, "Alle"]],
184
            });
185
            jQuery.fn.dataTableExt.oSort['currency-asc'] = function(a,b) {
186
                /* Remove any commas (assumes that if present all strings will have a fixed number of d.p) */
187
                let x = a == "-" ? 0 : a.replace( /,/g, "" );
188
                let y = b == "-" ? 0 : b.replace( /,/g, "" );
189
 
190
                x = x.replace(/\./g, "");
191
                y = y.replace(/\./g, "");
192
 
193
                /* Parse and return */
194
                x = parseFloat( x );
195
                y = parseFloat( y );
196
                return x - y;
197
            };
198
 
199
            jQuery.fn.dataTableExt.oSort['currency-desc'] = function(a,b) {
200
                /* Remove any commas (assumes that if present all strings will have a fixed number of d.p) */
201
                let x = a == "-" ? 0 : a.replace( /,/g, "" );
202
                let y = b == "-" ? 0 : b.replace( /,/g, "" );
203
 
204
                x = x.replace(/\./g, "");
205
                y = y.replace(/\./g, "");
206
 
207
                /* Parse and return */
208
                x = parseFloat( x );
209
                y = parseFloat( y );
210
                return y - x;
211
            };
212
 
213
            jQuery.fn.dataTableExt.oSort['num-html-asc'] = function(a,b) {
214
                let x = a.replace( /<.*?>/g, "" );
215
                let y = b.replace( /<.*?>/g, "" );
216
                x = parseFloat( x );
217
                y = parseFloat( y );
218
                return ((x < y || isNaN(y) ) ? -1 : ((x > y || isNaN(x)) ? 1 : 0));
219
            };
220
            jQuery.fn.dataTableExt.oSort['num-html-desc'] = function(a,b) {
221
                let x = a.replace( /<.*?>/g, "" );
222
                let y = b.replace( /<.*?>/g, "" );
223
                x = parseFloat( x );
224
                y = parseFloat( y );
225
                return ((x < y || isNaN(x)) ? 1 : ((x > y || isNaN(y) ) ? -1 : 0));
226
            };
227
 
228
            $("#artikeluebersicht").delegate( "button.assign","click", assign_artikel);
229
            $("#artikeluebersicht").delegate( "button.edit","click", edit_artikel);
230
            $("#artikeluebersicht").delegate( "button.del","click", del_artikel);
231
            $("#artikeluebersicht").delegate( "button.lock","click", lock_artikel);
232
            $("#artikeluebersicht").delegate( "button.bestandsUpdate","click", bestandsUpdate);
233
 
234
            $('#artikelAnzeigeSelect, #statusSelect').change( function() {
235
                table.draw();
236
            } );
237
 
238
 
239
            table.on( 'column-visibility.dt', function ( e, settings, column, state ) {
240
                if( column == 14 && state == true ){
241
                    styleButtons();
242
                }
243
            });
244
 
245
            function styleButtons(){
246
 
416 lars 247
                $('.edit').uibutton({
394 lars 248
                    icons: {
249
                        primary: "ui-icon-pencil"
250
                    }
251
                })
252
 
416 lars 253
                $('.del').uibutton({
394 lars 254
                    icons: {
255
                        primary: "ui-icon-trash"
256
                    }
257
                })
258
 
416 lars 259
                $('.lock').uibutton({
394 lars 260
                    icons: {
261
                        primary: "ui-icon-locked"
262
                    }
263
                })
264
 
416 lars 265
                $('.assign').uibutton({
394 lars 266
                    icons: {
267
                        primary: "ui-icon-transfer-e-w"
268
                    }
269
                })
270
 
416 lars 271
                $('.bestandsUpdate').uibutton({
394 lars 272
                    icons: {
273
                        primary: "ui-icon-arrowrefresh-1-e"
274
                    }
275
                })
276
            }
277
 
278
 
279
            $('#vportale_artikel_dlg').dialog({
280
                autoOpen: false,
281
                resizable: false,
282
                modal: true,
283
                width: "80%",
284
                height:600,
285
                maxHeight:670,
286
                minWidth:600,
287
                buttons: {
288
                    "speichern": function()
289
                    {
290
                        let valid = $('#vportale_artikel_form').validate()//.form();
291
 
292
                        if (valid)
293
                        {
294
                            $('#vportale_artikel_content').load("vportale_artikel.php",$('#vportale_artikel_form').serializeArray(),function(html){
295
                                //alert(html);
296
                            });
297
                            $('#vportale_artikel_dlg').empty().dialog("close");
298
                        }
299
                    },
300
                    "abbrechen": function()
301
                    {
302
                        $('#vportale_artikel_dlg').empty().dialog("close");
303
                    }
304
                }
305
 
306
 
307
            });
308
 
309
            function lock_artikel()
310
            {
311
                let a_id = this.id;
312
                a_id = a_id.split("_");
313
                a_id = a_id[1];
314
                let url="vportale_artikel.php?action=lock&id=" + a_id;
315
                $('#vportale_artikel_content').load(url,{
412 lars 316
                    vp_id:$('#vportal_sel').val()
394 lars 317
                });
318
            }
319
 
320
            function edit_artikel()
321
            {
322
 
323
                let a_id = this.id;
324
                a_id = a_id.split("_");
325
                a_id = a_id[1];
326
 
327
                $('#vportale_artikel_dlg').html("<div style='margin-top:20%'><center><img src='/images/loading.gif'><br>Lade. Bite warten...</center></div>")
412 lars 328
                    .load("vportale_artikel.php?action=edit&id=" + a_id+"&vp_id="+$('#vportal_sel').val())
394 lars 329
                    .dialog("open");
330
 
331
            }
332
 
333
            function assign_artikel(e)
334
            {
335
 
336
                let fremdartikel_id = this.id;
337
                fremdartikel_id = fremdartikel_id.split("_");
338
                fremdartikel_id = fremdartikel_id[1];
339
 
340
                let vportal_id = $("#vportal_id").val();
341
 
342
                $('<div id="vportalAssignDialog">').dialog({
343
                    resizable: false,
344
                    modal: true,
345
                    width:"80%",
346
                    open: function(){
347
                        vportal_id = $("#vportal_id").val();
348
                        $(this).load("vportale_artikel.php?action=assign&fremdartikel_id=" + fremdartikel_id + "&vportal_id=" + vportal_id, function(){
349
                            $("#bezeichnung", this).trigger("keyup");
350
                        });
351
                    },
352
                    close: function() {
353
                        $('#vportalAssignDialog').empty().remove();
354
                    },
355
                    buttons: {
356
                        "speichern": function()
357
                        {
358
                            /*let valid = $('#vportale_artikel_form').validate({
359
                                debug: false,
360
                                errorClass: "error_upd"
361
                            }).form();*/
362
 
363
                            //if (valid)
364
                            {
365
                                $('#vportale_artikel_content').load("vportale_artikel.php",$('#vportale_artikel_form').serializeArray());
366
                                $('#vportalAssignDialog').empty().remove();
367
                            }
368
                        },
369
                        "abbrechen": function()
370
                        {
371
                            $("#vportalAssignDialog").empty().remove();
372
                        }
373
                    }
374
                });
375
                //e.stopPropagation();
376
            }
377
 
378
            function del_artikel()
379
            {
380
                let vpa_id = this.id;
381
                vpa_id = vpa_id.split("_");
382
                let vpa_name = vpa_id[2];
383
                vpa_id = vpa_id[1];
384
                $('#vportale_artikel_del_dlg').dialog(
385
                    {
386
                        modal: true,
387
                        width: 400,
388
                        resizable: false,
389
                        title: "Verkaufsportal-Artikel " + vpa_name + " löschen",
390
                        buttons: {
391
                            "Nein": function()
392
                            {
393
                                $(this).dialog("close");
394
                            },
395
                            "Ja": function()
396
                            {
397
                                let url="/vportale/vportale_artikel.php?action=del&id=" + vpa_id
398
                                $.get(url,function() {
412 lars 399
                                    url="/vportale/vportale_artikel.php?action=list"+"&vp_id="+$('#vportal_sel').val();
394 lars 400
                                    $('#vportale_artikel_content').load(url);
401
                                    $("#vportale_artikel_del_dlg").dialog("close");
402
                                });
403
                            }
404
                        }
405
                    })
406
            }
407
 
408
            function bestandsUpdate(){
409
                let fremdartikel_id = this.id;
410
                fremdartikel_id = fremdartikel_id.split("_");
411
                let vportal_id = fremdartikel_id[2];
412
                fremdartikel_id = fremdartikel_id[1];
413
                $('<div id="vportalAssignDialog">').dialog({
414
                    "modal"  : true,
415
                    "width"  : "300",
416
                    "height" : "300",
417
                    "open"   : function(){
418
                        $(this).load("bestandsUpdate.php?fremdartikel_id="+fremdartikel_id);
419
                    },
420
                    "close"  : function() {
421
                        $(this).empty().remove();
422
                    },
423
                    "buttons": {
424
                        "Beenden": function()
425
                        {
426
                            $(this).empty().remove();
427
                            $('#vportale_artikel_content').load("vportale_artikel.php?action=list"+"&vp_id="+vportal_id);
428
                        }
429
                    }
430
                });
431
            }
432
        })
433
    </script>
434
    <table style="float: left;">
435
        <tbody>
436
        <tr>
437
            <td class="links">
438
                <label for="artikelAnzeigeSelect">Artikelart</label>
439
            </td>
440
            <td class="rechts">
441
                <select id="artikelAnzeigeSelect">
442
                    <option value="-1" {if $smarty.session.artikelAnzeigeSelect == -1}selected{/if} >- alle -</option>,
443
                    <option value="1" {if $smarty.session.artikelAnzeigeSelect == 1}selected{/if}>zugewiesen</option>
444
                    <option value="2" {if $smarty.session.artikelAnzeigeSelect == 2}selected{/if}>nicht zugewiesen</option>
445
                </select>
446
            </td>
447
        </tr>
448
        <tr>
449
            <td class="links">
450
                <label for="statusSelect">Status</label>
451
            </td>
452
            <td class="rechts">
453
                <select id="statusSelect" name="status">
454
                    {html_options options=$statusSelect}
455
                </select>
456
            </td>
457
        </tr>
458
        <tr>
459
            <td colspan="2">&nbsp;</td>
460
        </tr>
461
        <tr>
462
            {if isset($leistungsdatum)}
463
                <td>Leistungsdatum:</td>
464
                <td>{html_options options=$zeitraum name="leistungsdatum" id="leistungsdatumSelect" selected=0}</td>
465
            {/if}
466
        </tr>
467
        </tbody>
468
    </table>
469
 
470
    <table id="artikeluebersicht" class="table-striped table-bordered display" style="margin-top:10px;float:left;">
471
        <thead>
472
        <tr>
473
            <th>ID</th>
474
            <th>SKU</th>
475
            <th>fremde<br>Art.-Nr.</th>
476
            <th>fremde Katalog-Art.-Nr.</th>
477
            <th>Artikel-ID</th>
478
            <th>Name</th>
479
            <th>Artikelstamm-Artikel</th>
480
            <th>Hersteller</th>
481
            <th>EAN</th>
482
            <th>Preis</th>
483
            <th>Währung</th>
484
            <th>Preisart</th>
485
            <th>Menge</th>
486
            <th>Status</th>
487
            <th>Aktionen</th>
488
        </tr>
489
        </thead>
490
    </table>
412 lars 491
    <input type="hidden" id="vportal_id" value="" />
394 lars 492
 
493
    <div id="vportale_artikel_dlg" title="Artikel anlegen / ändern">
494
    </div>
495
    <div id="link_cat_dlg" title="Kategorie auswählen">
496
    </div>
497
 
498
    <div id="vportale_artikel_del_dlg" style="display:none">
499
        Wollen Sie diesen Artikel wirklich löschen?
500
    </div>
2 lars 501
    <!-- $Id: index.tpl 87 2023-05-20 23:09:43Z lars $ END -->
414 lars 502
{/block}