提交 3981bcdf authored 作者: 李思鑫's avatar 李思鑫

Merge branch 'dev' of http://124.225.116.118:35236/tj_django/datacenter into dev

......@@ -246,6 +246,7 @@ urlpatterns = [
url(r'^inventory/upload/label_replace/$', inventory_views.upload_label_replace),
url(r'^inventory/app/stock/(?P<company_id>\d+)/$', inventory_views.app_stock),
url(r'^inventory/app/stock_v2/$', inventory_views.app_stock_v2),
url(r'^inventory/app/(?P<company_id>\d+)/children/$', inventory_views.app_childcompany),
......
......@@ -52,6 +52,7 @@ import calendar
#from datacenter.common import *
from datacenter.common import query_json
# 2022-11-24
import io
......@@ -6824,6 +6825,121 @@ def app_stock(request,company_id):
cur.close()
return JsonResponse(data)
# 库存查询 新版
# 2024-08-13
# Jonathan
def app_stock_v2(request):
data={'e':'','stock':[]}
k = sK
e = time_key_check(request, k)
if e:
data['e'] = e
return JsonResponse(data)
company_id = int(request.GET.get('company_id','0'))
ancestor_id = int(request.GET.get('ancestor_id','0'))
if company_id and ancestor_id:
parent_id = int(request.GET.get('parent_id','0'))
# 额外的查询字段 用于控制公司汇总数量和带产品的明细
search_suffix_str = 'Y.pkg_qty,Y.qty_p,Y.product_id,Y.product_name'
swhere = "Y.company_id = " + {str(company_id)}
if parent_id:
swhere = f"Y.company_id in (SELECT id from logistics.company_company where parent_id = {str(parent_id)})"
#search_suffix_str = ''
# 如果是玖藏的 隐藏第一代库存
if ancestor_id == 208869:
swhere = swhere + " and product_id not in (10558,10559,10560,10561,10562)"
s = f"""
SELECT
sum(Y.cnt),
Y.company_id,
(SELECT name from logistics.company_company where id = Y.company_id),
{search_suffix_str}
FROM (
SELECT
CASE
WHEN label_pkg = 3 THEN cnt * qty_h * qty_p * direction
WHEN label_pkg = 2 THEN cnt * qty_p * direction
WHEN label_pkg = 1 THEN cnt * direction
ELSE 0
END cnt,
product_id,
company_id,
product_name,
concat(qty_x,'*',qty_h,'*',qty_p) as pkg_qty,
qty_p
FROM (
SELECT
A.label_pkg,
A.company_id,
A.product_id,
A.vtype_id,
A.cnt,
B.name as product_name,
CASE WHEN b.qty_x > 0 THEN b.qty_x ELSE 1 END qty_x,
CASE WHEN b.qty_h > 0 THEN b.qty_h ELSE 1 END qty_h,
CASE WHEN b.qty_p > 0 THEN b.qty_p ELSE 1 END qty_p,
C.direction
from (
SELECT
label_pkg,
company_id,
product_id,
vtype_id,
COUNT(0) as cnt
FROM
stkdetails.c{str(ancestor_id)}
WHERE
{swhere}
GROUP BY
label_pkg,
company_id,
product_id,
vtype_id
) A
LEFT JOIN logistics.product_product B ON A.product_id = B.ID
LEFT JOIN logistics.inventory_voucher C ON A.vtype_id = C.ID
) X
) Y
GROUP BY Y.company_id {search_suffix_str}
"""
cur=connection.cursor()
cur.execute(s)
rs = cur.fetchall()
package_units = get_package_name(ancestor_id)
for r in rs:
if search_suffix_str:
p_num = int(r[0])
qty_p = r[4]
num_str = ''
if p_num and qty_p:
d = divmod(p_num, qty_p)
num_str = str(d[0]) + package_units[2] + d[1] + package_units[0]
else:
num_str = str(p_num) + package_units[0]
data['stock'].append({
'p_num': int(r[0]),
'company_id': r[1],
'company_name': r[2],
'pkg_qty': r[3],
'qty_p': qty_p,
'product_id': r[5],
'product_name': r[6],
'num_str': num_str
})
else:
data['stock'].append({
'p_num': int(r[0]),
'company_id': r[1],
'company_name': r[2]
})
cur.close()
else:
data['e'] = '缺少必要参数'
return JsonResponse(data)
@login_required
def children_stock(request):
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论