Skip to content

Commit 2683194

Browse files
committed
[IMP] extend logic to multiple WMS support
1 parent 02c0495 commit 2683194

File tree

7 files changed

+204
-129
lines changed

7 files changed

+204
-129
lines changed

connector_whs/models/base_external_dbsource.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,9 @@ def whs_insert_read_and_synchronize_list(self):
408408
insert_order_line_params,
409409
) = hyddemo_whs_lists.filtered(
410410
lambda x: x.num_lista == num_lista
411-
).whs_prepare_host_liste_values()
411+
).whs_prepare_host_liste_values(
412+
dbsource
413+
)
412414
if insert_order_params:
413415
if not insert_order_line_params:
414416
# there is a unique table for order and order line
@@ -461,7 +463,7 @@ def whs_insert_read_and_synchronize_list(self):
461463
# same time
462464
if hyddemo_whs_lists:
463465
set_liste_to_elaborate_query = (
464-
hyddemo_whs_lists._get_set_liste_to_elaborate_query()
466+
hyddemo_whs_lists._get_set_liste_to_elaborate_query(dbsource)
465467
)
466468
if set_liste_to_elaborate_query:
467469
dbsource.with_context(no_return=True).execute_mssql(

connector_whs/models/hyddemo_whs_liste.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -188,11 +188,11 @@ def _get_insert_host_liste_query(params):
188188
# overridable method
189189
return "".replace("\n", " ")
190190

191-
def whs_prepare_host_liste_values(self):
191+
def whs_prepare_host_liste_values(self, dbsource):
192192
# overridable method
193193
execute_params_order, execute_params_order_line = {}, {}
194194
return execute_params_order, execute_params_order_line
195195

196-
def _get_set_liste_to_elaborate_query(self):
196+
def _get_set_liste_to_elaborate_query(self, dbsource):
197197
# overridable method
198198
return ""

connector_whs/wizard/wizard_sync_stock_whs_mssql.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class WizardSyncStockWhsMssql(models.TransientModel):
1212
product_id = fields.Many2one("product.product", string="Product to sync")
1313

1414
@staticmethod
15-
def _prepare_giacenze_query(i):
15+
def _prepare_giacenze_query(i, dbsource):
1616
# overridable method
1717
# respect order of fields retrieved!
1818
query = ""

connector_wms_whs/models/base_external_dbsource.py

+43-10
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from sqlalchemy import text as sql_text
44

5-
from odoo import _, models
5+
from odoo import _, fields, models
66
from odoo.exceptions import UserError
77

88
_logger = logging.getLogger(__name__)
@@ -11,24 +11,49 @@
1111
class BaseExternalDbsource(models.Model):
1212
_inherit = "base.external.dbsource"
1313

14+
name = fields.Char(
15+
size=10,
16+
)
17+
18+
_sql_constraints = [
19+
(
20+
"dbsource_unique_name",
21+
"UNIQUE (name)",
22+
_("The Name must be unique!"),
23+
)
24+
]
25+
26+
def copy(self, default=None):
27+
default = dict(
28+
default or {},
29+
name=_("%s (copy)") % self.name,
30+
)
31+
return super().copy(default=default)
32+
1433
def _pre_insert_product_query(self):
1534
self.ensure_one()
1635
pre_insert_product_query = (
17-
"DELETE FROM HOST_ARTICOLI WHERE Elaborato = 2 OR Elaborato = 0"
36+
"DELETE FROM HOST_ARTICOLI WHERE idHost=:idHost AND "
37+
"(Elaborato = 2 OR Elaborato = 0)"
1838
)
1939
self.with_context(no_return=True).execute_mssql(
20-
sqlquery=sql_text(pre_insert_product_query), sqlparams=None, metadata=None
40+
sqlquery=sql_text(pre_insert_product_query),
41+
sqlparams=dict(idHost=self.name),
42+
metadata=None,
2143
)
2244
return True
2345

2446
def _post_insert_product_query(self, last_id):
2547
# Set record from Elaborato=0 to Elaborato=1 to be processable from WHS
2648
self.ensure_one()
2749
update_product_query = (
28-
"UPDATE HOST_ARTICOLI SET Elaborato = 1 WHERE Elaborato = 0"
50+
"UPDATE HOST_ARTICOLI SET Elaborato = 1 "
51+
"WHERE idHost=:idHost AND Elaborato = 0"
2952
)
3053
self.with_context(no_return=True).execute_mssql(
31-
sqlquery=sql_text(update_product_query), sqlparams=None, metadata=None
54+
sqlquery=sql_text(update_product_query),
55+
sqlparams=dict(idHost=self.name),
56+
metadata=None,
3257
)
3358
return True
3459

@@ -51,7 +76,8 @@ def _get_insert_product_query(self):
5176
Profondita,
5277
DescrizioneBreve,
5378
ScortaMin,
54-
Id
79+
Id,
80+
idHost
5581
)
5682
VALUES (
5783
:Elaborato,
@@ -70,7 +96,8 @@ def _get_insert_product_query(self):
7096
:Profondita,
7197
:DescrizioneBreve,
7298
:ScortaMin,
73-
:Id
99+
:Id,
100+
:idHost
74101
)
75102
"""
76103
return insert_product_query
@@ -122,6 +149,7 @@ def _prepare_host_articoli_values(
122149
"DescrizioneBreve": " ",
123150
"ScortaMin": product_min_qty, # digits=(18, 3)
124151
"Id": last_id + 1,
152+
"idHost": self.name,
125153
}
126154
return execute_params
127155

@@ -148,11 +176,16 @@ def whs_check_lists(self):
148176
whs_liste_query = (
149177
"SELECT NumLista, NumRiga, Qta, QtaMovimentata, Elaborato "
150178
"FROM HOST_LISTE "
151-
"WHERE NumLista = '%s' AND NumRiga = '%s'"
152-
% (whs_list.num_lista, whs_list.riga)
179+
"WHERE idHost=:idHost NumLista=:NumLista AND NumRiga=:NumRiga"
153180
)
154181
esiti_liste = dbsource.execute_mssql(
155-
sqlquery=sql_text(whs_liste_query), sqlparams=None, metadata=None
182+
sqlquery=sql_text(whs_liste_query),
183+
sqlparams=dict(
184+
idHost=dbsource.name,
185+
NumLista=whs_list.num_lista,
186+
NumRiga=whs_list.riga,
187+
),
188+
metadata=None,
156189
)
157190
# esiti_liste[0] contains result
158191
if not esiti_liste[0]:

0 commit comments

Comments
 (0)