[15.0][MIG] stock_request_kanban

This commit is contained in:
Bernat Puig Font
2022-01-21 12:45:17 +01:00
parent 3b326f96c1
commit 90b8190fe1
14 changed files with 105 additions and 115 deletions

View File

@@ -1,9 +1,9 @@
# Copyright 2018 Creu Blanca
# Copyright 2018-22 Creu Blanca
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
{
"name": "Stock Request kanban",
"version": "14.0.1.0.0",
"version": "15.0.1.0.0",
"category": "Warehouse Management",
"website": "https://github.com/OCA/stock-logistics-warehouse",
"author": "Creu Blanca, ForgeFlow, Odoo Community Association (OCA)",
@@ -25,7 +25,15 @@
"report/stock_request_kanban_templates.xml",
"security/ir.model.access.csv",
],
"qweb": ["static/src/xml/stock_request_kanban_scan.xml"],
"assets": {
"web.assets_backend": [
"stock_request_kanban/static/src/js/stock_request_kanban_scan_controller.esm.js",
"stock_request_kanban/static/src/js/stock_request_kanban_scan_view.esm.js",
],
"web.assets_qweb": [
"stock_request_kanban/static/src/xml/stock_request_kanban_scan.xml",
],
},
"installable": True,
"application": False,
}

View File

@@ -1,19 +1,17 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data noupdate="1">
<record id="seq_stock_request_kanban" model="ir.sequence">
<field name="name">Stock Request Kanban</field>
<field name="code">stock.request.kanban</field>
<field name="prefix">KB</field>
<field name="padding">5</field>
<field name="company_id" eval="False" />
</record>
<record id="seq_stock_inventory_kanban" model="ir.sequence">
<field name="name">Stock Inventory Kanban</field>
<field name="code">stock.inventory.kanban</field>
<field name="prefix">IKB</field>
<field name="padding">5</field>
<field name="company_id" eval="False" />
</record>
</data>
<odoo noupdate="1">
<record id="seq_stock_request_kanban" model="ir.sequence">
<field name="name">Stock Request Kanban</field>
<field name="code">stock.request.kanban</field>
<field name="prefix">KB</field>
<field name="padding">5</field>
<field name="company_id" eval="False" />
</record>
<record id="seq_stock_inventory_kanban" model="ir.sequence">
<field name="name">Stock Inventory Kanban</field>
<field name="code">stock.inventory.kanban</field>
<field name="prefix">IKB</field>
<field name="padding">5</field>
<field name="company_id" eval="False" />
</record>
</odoo>

View File

@@ -25,7 +25,7 @@ class StockInventoryKanban(models.Model):
default="draft",
readonly=True,
copy=False,
track_visibility="onchange",
tracking=True,
)
warehouse_ids = fields.Many2many(
"stock.warehouse",

View File

@@ -0,0 +1,48 @@
/** @odoo-module **/
import ListController from "web.ListController";
import core from "web.core";
var qweb = core.qweb;
var StockRequestKanbanController = ListController.extend({
// -------------------------------------------------------------------------
// Public
// -------------------------------------------------------------------------
init: function (parent, model, renderer) {
this.context = renderer.state.getContext();
return this._super.apply(this, arguments);
},
/**
* @override
*/
renderButtons: function () {
this._super.apply(this, arguments);
var $buttonScan = $(qweb.render("StockRequestKanban.Buttons"));
$buttonScan.on("click", this._onOpenWizard.bind(this));
this.$buttons.prepend($buttonScan);
},
// -------------------------------------------------------------------------
// Handlers
// -------------------------------------------------------------------------
_onOpenWizard: function () {
var context = {
active_model: this.modelName,
};
this.do_action({
res_model: "wizard.stock.request.kanban",
views: [[false, "form"]],
target: "new",
type: "ir.actions.act_window",
context: context,
});
},
});
export default StockRequestKanbanController;

View File

@@ -1,50 +0,0 @@
odoo.define("stock_request_kanban.StockRequestKanbanController", function (require) {
"use strict";
var core = require("web.core");
var ListController = require("web.ListController");
var qweb = core.qweb;
var StockRequestKanbanController = ListController.extend({
// -------------------------------------------------------------------------
// Public
// -------------------------------------------------------------------------
init: function (parent, model, renderer) {
this.context = renderer.state.getContext();
return this._super.apply(this, arguments);
},
/**
* @override
*/
renderButtons: function () {
this._super.apply(this, arguments);
var $buttonScan = $(qweb.render("StockRequestKanban.Buttons"));
$buttonScan.on("click", this._onOpenWizard.bind(this));
this.$buttons.prepend($buttonScan);
},
// -------------------------------------------------------------------------
// Handlers
// -------------------------------------------------------------------------
_onOpenWizard: function () {
var context = {
active_model: this.modelName,
};
this.do_action({
res_model: "wizard.stock.request.kanban",
views: [[false, "form"]],
target: "new",
type: "ir.actions.act_window",
context: context,
});
},
});
return StockRequestKanbanController;
});

View File

@@ -0,0 +1,15 @@
/** @odoo-module **/
import ListView from "web.ListView";
import StockRequestKanbanController from "@stock_request_kanban/js/stock_request_kanban_scan_controller.esm";
import viewRegistry from "web.view_registry";
var StockRequestKanbanListView = ListView.extend({
config: _.extend({}, ListView.prototype.config, {
Controller: StockRequestKanbanController,
}),
});
viewRegistry.add("stock_request_kanban_list", StockRequestKanbanListView);
export default StockRequestKanbanListView;

View File

@@ -1,17 +0,0 @@
odoo.define("stock_request_kanban.StockRequestKanbanListView", function (require) {
"use strict";
var ListView = require("web.ListView");
var StockRequestKanbanController = require("stock_request_kanban.StockRequestKanbanController");
var viewRegistry = require("web.view_registry");
var StockRequestKanbanListView = ListView.extend({
config: _.extend({}, ListView.prototype.config, {
Controller: StockRequestKanbanController,
}),
});
viewRegistry.add("stock_request_kanban_list", StockRequestKanbanListView);
return StockRequestKanbanListView;
});

View File

@@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8" ?>
<templates id="template" xml:space="preserve">
<button t-name="StockRequestKanban.Buttons" class="btn-primary btn" type="button">
<button
t-name="StockRequestKanban.Buttons"
class="btn-primary btn mr-1"
type="button"
>
Scan Kanban
</button>
</templates>

View File

@@ -4,7 +4,7 @@
<field name="name">stock.inventory.kanban.tree</field>
<field name="model">stock.inventory.kanban</field>
<field name="arch" type="xml">
<tree string="Stock Inventories">
<tree>
<field name="name" />
<field name="count_missing_kanbans" />
<field name="state" />

View File

@@ -7,7 +7,6 @@
<field name="model">stock.request.kanban</field>
<field name="arch" type="xml">
<tree
string="Stock Requests"
decoration-muted="active == 'false'"
decoration-bf="message_needaction==True"
>

View File

@@ -2,22 +2,6 @@
<!-- Copyright 2017 ForgeFlow
License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). -->
<odoo>
<template
id="stock_request_kanban_assets_backend"
name="stock_request_kanban assets"
inherit_id="web.assets_backend"
>
<xpath expr="." position="inside">
<script
type="text/javascript"
src="/stock_request_kanban/static/src/js/stock_request_kanban_scan_controller.js"
/>
<script
type="text/javascript"
src="/stock_request_kanban/static/src/js/stock_request_kanban_scan_view.js"
/>
</xpath>
</template>
<record id="view_stock_request_tree" model="ir.ui.view">
<field name="name">stock.request.tree</field>
<field name="model">stock.request</field>

View File

@@ -13,8 +13,9 @@ class WizardStockInventoryKanban(models.TransientModel):
inventory_kanban_id = fields.Many2one("stock.inventory.kanban", readonly=True)
def barcode_ending(self):
super().barcode_ending()
res = super().barcode_ending()
self.inventory_kanban_id.write({"scanned_kanban_ids": [(4, self.kanban_id.id)]})
return res
def validate_kanban(self, barcode):
res = super().validate_kanban(barcode)

View File

@@ -13,12 +13,13 @@ class WizardStockRequestKanban(models.TransientModel):
stock_request_id = fields.Many2one("stock.request", readonly=True)
def barcode_ending(self):
super().barcode_ending()
res = super().barcode_ending()
self.stock_request_id = self.env["stock.request"].create(
self.stock_request_kanban_values()
)
self.stock_request_ending()
self.update_status()
return res
def stock_request_ending(self):
self.stock_request_id.action_confirm()
@@ -28,11 +29,9 @@ class WizardStockRequestKanban(models.TransientModel):
{
"status_state": 0,
"status": _(
"Added kanban %s for product %s"
% (
self.stock_request_id.kanban_id.name,
self.stock_request_id.product_id.display_name,
)
"Added kanban %(kanban)s for product %(product)s",
kanban=self.stock_request_id.kanban_id.name,
product=self.stock_request_id.product_id.display_name,
),
}
)

View File

@@ -51,5 +51,6 @@ class WizardStockRequestOrderKanban(models.TransientModel):
return
def barcode_ending(self):
super().barcode_ending()
res = super().barcode_ending()
self.order_id = self.stock_request_id.order_id
return res