osbzr/gooderp_addons

View on GitHub
warehouse_wave/static/src/js/warehouse_wave_widget.js

Summary

Maintainability
A
1 hr
Test Coverage
odoo.define('warehouse.wave', function(require) {
    "use strict";
    var FormView = require('web.FormView');
    var form_relational = require('web.form_relational');
    var data = require('web.data');
    var Model = require('web.Model');
    var core = require('web.core');
    var Widget = require('web.Widget');
    var session = require('web.session');

    var QWeb = core.qweb;
    var _t = core._t;

    FormView.include({
        start: function() {
            var self = this,
                res = this._super.apply(this, arguments);

            self.$el.on('keydown', '.do_pack_scan_code', function(event) {
                if (event.keyCode === 13) {
                    var $this = $(this);
                    return self.save().done(function(result) {
                        self.trigger("save", result);
                        self.reload().then(function() {
                            self.to_view_mode();
                            var menu = menu;
                            if (menu) {
                                menu.do_reload_needaction();
                            }
                        }).then(function() {
                            var input_code = $this.val();
                            self.$el.find('input').val('');
                            new Model("do.pack").call("scan_barcode", [self.model, input_code, self.datarecord.id]).then(
                                function(result) {
                                    var audio;
                                    audio = new Audio();
                                    var ext = audio.canPlayType("audio/ogg; codecs=vorbis") ? ".ogg" : ".mp3";
                                    if (result != 'done'){
                                        audio.src = session.url("/mail/static/src/audio/ting" + ext);
                                        audio.play();
                                    }
                                    if (result == 'done'){
                                        audio.src = session.url("/warehouse_wave/static/src/js/done.mp3");
                                        audio.play();

                                        // 让barcode自动获得焦点
                                        self.do_action({
                                        type: 'ir.actions.act_window',
                                        res_model: "do.pack",
                                        view_mode: 'form',
                                        view_type: 'form',
                                        views: [[false, 'form']],
                                        target: 'inline',
                                        });
                                    }else{
                                        self.reload();
                                    }
                                }
                            );
                        }).then(function() {
                            $this.focus();
                        })
                    });
                }
            })
        },
    });

    function WarehouseWave(parent, action) {
        var self = this;
        new Model('wh.move').call('get_moves_html', [action.context.move_ids]).then(
            function(result) {
                var all_print = $("<div style='page-break-after:always;'></div>");
                for (var i = 0; i < result.length; i=i+2) {
                    all_print.append($(result[i]));

                    var res_keys = Object.keys(result[i+1]).sort()
                    var res = {}
                    for (var res_key in res_keys){
                        res[res_keys[res_key]] = result[i+1][res_keys[res_key]]
                    }
                    JSON.stringify(res)
                    // 去掉打印装箱单数据
                    // all_print.append($("<div style='page-break-after:always;'></div>"));
                    // all_print.append($(QWeb.render('temp_detail_info', {'detail_infos': res})));

                    all_print.append($("<div style='page-break-after:always;'></div>"));
                }
                all_print.jqprint({
                    debug: false, //如果是true则可以显示iframe查看效果(iframe默认高和宽都很小,可以再源码中调大),默认是false
                    importCSS: true, //true表示引进原来的页面的css,默认是true。(如果是true,先会找$("link[media=print]"),若没有会去找$("link")中的css文件)
                    printContainer: true, //表示如果原来选择的对象必须被纳入打印(注意:设置为false可能会打破你的CSS规则)。
                    operaSupport: false //表示如果插件也必须支持歌opera浏览器,在这种情况下,它提供了建立一个临时的打印选项卡。默认是true
                });
            })
    };
    core.action_registry.add('warehouse_wave.print_express_menu', WarehouseWave);

    function WarehouseWavePackage(parent, action) {
        var self = this;
        new Model('wh.move').call('get_moves_html_package', [action.context.move_ids]).then(
            function(result) {
                var all_print = $("<div style='page-break-after:always;'></div>");
                for (var i = 0; i < result.length; i++) {
                    var res_keys = Object.keys(result[i]).sort()
                    var res = {}
                    for (var res_key in res_keys){
                        res[res_keys[res_key]] = result[i][res_keys[res_key]]
                    }
                    JSON.stringify(res)
                    all_print.append($(QWeb.render('temp_detail_info', {'detail_infos': res})));
                    all_print.append($("<div style='page-break-after:always;'></div>"));
                }
                all_print.jqprint({
                    debug: false, //如果是true则可以显示iframe查看效果(iframe默认高和宽都很小,可以再源码中调大),默认是false
                    importCSS: true, //true表示引进原来的页面的css,默认是true。(如果是true,先会找$("link[media=print]"),若没有会去找$("link")中的css文件)
                    printContainer: true, //表示如果原来选择的对象必须被纳入打印(注意:设置为false可能会打破你的CSS规则)。
                    operaSupport: false //表示如果插件也必须支持歌opera浏览器,在这种情况下,它提供了建立一个临时的打印选项卡。默认是true
                });
            })
    };
    core.action_registry.add('warehouse_wave.print_express_package', WarehouseWavePackage);
})