0

我正在尝试创建一个自定义函数来扫描条形码并执行我的自定义函数。

这是怎么回事。

  1. 点击图标
  2. 打开扫描仪(在移动应用程序中)
  3. 扫描条形码 - 扫描后振动手机)
  4. 然后它会在右上角显示一条吐司/警告消息“您应该扫描一个或多个产品。”

预期输出是,扫描条形码并执行我的自定义功能。

这是我的代码。

*.js

      odoo.define('basket_verification.add_basket',function (require){
        'use strict';
        var core = require('web.core');
        var Widget = require('web.Widget');
        var Dialog = require('web.Dialog');
        var QWeb = core.qweb;
        var LinesWidget = require('stock_barcode.LinesWidget');
        const mobile = require('web_mobile.core');

        LinesWidget.include({

          events:_.extend({}, LinesWidget.prototype.events,{
            'click .o_scan_basket': 'open_mobile_scanner_basket',
          }),
          init: function (parent, page, pageIndex, nbPages) {
              this._super.apply(this, arguments);
              console.log('parent.actionParams',parent.actionParams);
              // this.basket_ids = parent.basket_ids;
              this.action_params = parent.actionParams;
            },
          open_mobile_scanner_basket:function(){
            console.log('am here');
            var self = this;
            openMobileScannerBasket(function (barcode) {
                _onBasketBarcodeScanned(barcode);
            });

          },
          _onBasketBarcodeScanned: function (barcode){
            console.log('am here');
            var self = this;
            core.bus.off('barcode_scanned', this, this._onBarcodeScanned);
            this._rpc({
              model: 'stock.picking',
              method: 'set_basket',
              args: [this.action_params.id,this.action_params.id,barcode,]
            }).then(function (res){
              console.log('rec',res);
            $('.basket_barcode_input').val('');
            var message = res['result'];
            if (res['status'] == true){
              mobile.methods.showToast({'message':_t(message)});

              // Dialog.alert(self, message);
            }
            else{
              mobile.methods.showToast({'message':_t(message)});
              // Dialog.alert(self, message);
            }
            });
          },
          openMobileScannerBasket(callback){
            mobile.methods.scanBarcode().then(function (response){
              mobile.methods.showToast({'response':_t(response)});
              var barcode = response.data;
              mobile.methods.showToast({'scanned barcode':_t(barcode)});
              if (barcode){
                callback(barcode);
                mobile.methods.vibrate({'duration':100});
                mobile.methods.showToast({'scanned barcode':_t(barcode)});
              } else {

                mobile.methods.showToast({'message':_t('Please, Scan again !!')});
              }
            });
          },
          
      });

*.xml

            <?xml version="1.0" encoding="UTF-8"?>
        <templates id="template" >
          <t t-extend="stock_barcode_lines_template">
            <t t-jquery="div[class='o_barcode_line list-group-item d-flex flex-row flex-nowrap']"
              t-operation="append">
              <div class="o_barcode_pic position-relative text-center mt-2 mb-1">
                  <i class="fa fa-5x mx-auto fa-exclamation-triangle text-white d-none"/>
                  <img class="o_barcode_icon" src="/stock_barcode/static/img/barcode.svg" alt="Barcode" height="40px"/>
                  <!-- <t t-if='widget.mobileMethods.scanBarcode'> -->

                  <div class="o_stock_mobile_barcode"/> <!-- Used to open the device scanner -->
                  <span> Tap to scan</span>
                <!-- </t> -->
              </div>
          </t>
          </t>
        </templates>

请问有什么解决办法吗?

我正在使用 Odoo.sh。

4

0 回答 0