【问题标题】:odoo 10 scan a barcode and start an actionodoo 10 扫描条形码并开始操作
【发布时间】:2018-02-14 16:23:17
【问题描述】:

using odoo 10 在我的模块中,我通过使用条形码创建维修订单来管理我的车间,所以我想做的是通过使用条形码扫描仪读取条形码值来单击按钮 start_btn,这样我就可以在之后启动计时器扫描我的维修订单,在我的方法on_barcode_scanned 我打电话给toggle_start 按钮状态确实改变了,但计时器没有启动

有人告诉我必须使用javascript才能神奇地点击按钮,但我不知道该怎么做,等待您的帮助。

提前感谢,最好的尊重。

class project_task(models.Model):
    _name = 'project.task'
    _inherit = ['project.task', 'barcodes.barcode_events_mixin']

    # _barcode_scanned is in the formview
    _barcode_scanned = fields.Char("Barcode Scanned", help="Value of the last barcode scanned.", store=False)

    def on_barcode_scanned(self, barcode):
        self.toggle_start()

在我看来:

            <div name="button_box" position="inside">
                <field name='test_barcode' options="{'barcode_events': 'True'}" widget="field_float_scannable"/>
                <button name="toggle_start" id="start_btn" type="object"
                        class="oe_stat_button" icon="fa-clock-o">
                    <field name="task_timer" widget="boolean_button"
                        options='{"terminology": {
                                "string_true": "Started",
                                "hover_true": "Pause",
                                "string_false": "Timer",
                                "hover_false": "Start"
                            }}'/>
                </button>
            </div>

【问题讨论】:

  • 您好,我编辑了您的问题,添加了 odoo-10 标记并改进了一些格式,使您的问题问得好,更容易找到/回答,但我不知道您为什么回滚?我错过了什么?
  • Imad 先生,我现在真的需要你的帮助!!!@imad

标签: javascript python odoo


【解决方案1】:

在深入研究arodoo_stock_barcode 模块和project_task_timer 您尝试使用的模块后发现:

  • 你必须在你的模型中添加_barcode_scannedfield

    class project_task(models.Model):
        _name = 'project.task'
        _inherit = ['project.task', 'barcodes.barcode_events_mixin']
    
        # _barcode_scanned is in the formview
        _barcode_scanned = fields.Char("Barcode Scanned", help="Value of the last barcode scanned.", store=False)
        test_barcode = fields.Char("barcode")
    
  • 不要使用on_barcode_scanned方法:只使用一个javascript文件,那么怎么做:

    odoo.define('project_task_timer.MyScript', function (require) {
    "use strict";
        var core = require('web.core');
        var Model = require('web.Model');
        var flag = false;
        var FormViewBarcodeHandler = require('barcodes.FormViewBarcodeHandler');
    var _t = core._t;
    var MyScript = FormViewBarcodeHandler.extend({
    
    init: function (parent, context) {
        if (parent.ViewManager.action) {
            this.form_view_initial_mode = parent.ViewManager.action.context.form_view_initial_mode;
        } else if (parent.ViewManager.view_form) {
            this.form_view_initial_mode = parent.ViewManager.view_form.options.initial_mode;
        }
    },
    start: function () {
         });
       },
    pre_onchange_hook: function (barcode) {
    
        var barcode_filed = this.form_view.datarecord.test_barcode;
        var deferred = $.Deferred();
        if (barcode_filed === barcode) { 
           // to change the stage from new to being serviced              
               $(".o_form_view ul.oe_form_status_clickable li:nth-child(2)").click();
                $(".oe_button_box button:nth-child(3)").click();
    
            return deferred.reject();
        }
    },
    
    open_wizard: function (action) {
        var self = this;
        this.form_view.trigger('detached');
        this.do_action(action, {
            on_close: function () {
                self.form_view.trigger('attached');
                self.form_view.reload();
            }
        });
    }
    });
         core.form_widget_registry.add('myscript', MyScript);
         return MyScript;
    });
    

ps:如果您想将on_barcode_scanned 方法添加到您继承的模型中,您可以这样做,但您不能使用 python 单击按钮。

祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    相关资源
    最近更新 更多