提交 a97a3f66 authored 作者: zhang wei's avatar zhang wei

Merge remote-tracking branch 'origin/dev' into dev

......@@ -126,6 +126,7 @@ urlpatterns = [
url(r'^sales/promotioncode/share_json/$', sal_views.promotionCode_share_json),
url(r'^sales/promotioncode/compose/$', sal_views.promotionCode_compose),
url(r'^sales/promotioncode/compose_json/$', sal_views.promotionCode_compose_json),
url(r'^sales/promotioncode/compose_json_jg/$', sal_views.promotionCode_compose_json_jg),
url(r'^sales/promotioncode/redeem/$', sal_views.promotionCode_redeem),
url(r'^sales/promotioncode/redeem_json/$', sal_views.promotionCode_redeem_json),
url(r'^sales/promotioncode/super_prize_redeem_json/$', sal_views.promotionCode_super_prize_redeem_json),
......
......@@ -2374,13 +2374,7 @@ def fg_update(request,is_app=False):
if vch_id == 1 and 'stack_binding' in r:
st = r['stack_binding']
if len(st) > 0:
stack_binding = jcs_virtual_stack_binding(batch, r['stack_binding'])
stacks = stack_binding['stacks']
if stacks and vch_id == 1:
aSql = stack_binding['insert_sql']
if aSql:
sSql = "insert into codes(label_code,tb,product_id,stack_id) values " + ",".join(aSql)+" on CONFLICT(label_code) do update set stack_id = EXCLUDED.stack_id"
cur.execute(sSql)
stack_binding = jcs_virtual_stack_binding(batch, r['stack_binding'],cmp_id)
#2022-05-10 保存原始标签号码
......@@ -13867,8 +13861,31 @@ def label_replace(request,what,id=None):
return JsonResponse(data)
def jcs_virtual_stack_binding(batch,stack_binding):
data = {'stacks': [],'insert_sql': []}
def jcs_virtual_stack_binding(batch,stack_binding,company_id):
data = {'e': '' }
# 2022-07-20 数据写入日志
cs = Company.objects.filter(id=int(company_id))
c = cs[0]
cur= connection.cursor()
cur.execute("create temp table temps(" + \
"id serial," + \
"label_code character varying(32) ," + \
"tb character varying(20)," + \
"product_id integer," + \
"stack_id integer," + \
"wrapper_id integer," + \
"code character varying(32)," + \
"label_id bigint," + \
"label_pk_id bigint," + \
"label_pkg smallint," + \
"err character varying(100)," + \
"label_code0 character varying(32)," + \
"from_agent_id integer)"
)
insert_sql = []
codes=[]
for i in stack_binding:
is_physical = True
code = i['stack']
......@@ -13882,22 +13899,105 @@ def jcs_virtual_stack_binding(batch,stack_binding):
stack.product_id = batch.product_id
stack.store_id = batch.store_fr_id
stack.is_physical = is_physical
if 'location' in i:
stack.location = i['location']
if 'qty_lmt' in i:
stack.qty_lmt = i['qty_lmt']
if 'is_fixed' in i:
stack.is_fixed = i['is_fixed']
stack.qty_lmt = 0
stack.save()
if stack.code_is_permanent == False:
# 2022-07-02 如诗仙太白含垛标套标,已事先将对应箱标写入stackdetails,入库时只扫垛标,不会上传垛标下面绑定的箱标
i['labels'] = []
for d in stack.stackdetails_stack.all():
i['labels'].append(d.label_code)
if batch.product_id:
product_id = str(batch.product_id)
else:
product_id = 'null'
for l in i['codes']:
data['insert_sql'].append("('" + l + "','" + l[:4] + "'," + product_id + "," + str(stack.id) + ")")
data['stacks'].append(code)
insert_sql.append("('" + l + "','" + l[:4] + "'," + product_id + "," + str(stack.id) + ")")
codes.append(l)
# s = "INSERT INTO inventory_stackdetails(company_id,product_id,label_pk_id,label_id,label_pkg,label_code,tm,stack_id) " + \
# "select company_id,product_id,label_pk_id,label_id,label_pkg,label_code,now(),stack_id " + \
# "from inventory_stkdetails where batch_id=" + str(batch.id) + " and stack_id>0 " + \
# "on CONFLICT(stack_id,label_pk_id) do nothing"
sSql = "insert into temps(label_code,tb,product_id,stack_id) " \
"values " + ",".join(insert_sql)
cur.execute(sSql)
stacks = []
stack_binding = ''
# 2022-05-10 保存原始标签号码
cur.execute("update temps set label_code0=label_code")
s = "update temps o set code=coalesce" + \
"((select code0 from label.lbl_replace_details where code=o.label_code order by batch_id desc limit 1),o.label_code)"
cur.execute(s)
# 2020-07-27 处理跨段动态绑定
s = "update temps set tb=b.tbname from " + \
"(SELECT tb,label_code from temps) a " + \
"left outer join " + \
"(SELECT segment, tbname FROM label.lbl_tbcross) b " + \
"on a.tb=b.segment " + \
"where temps.label_code=a.label_code and b.tbname is not null"
cur.execute(s)
# 2022-05-09 有些AB样标使用了跨段表里的号段
s = "select " + \
"(select code_a FROM label.lbl_abcode where code_b=label_code or code_a=label_code)," + \
"tb='t'||left((select code_a FROM label.lbl_abcode where code_b=label_code or code_a=label_code),4) " + \
"from temps " + \
"where (select id from label.lbl_abcode where code_a=label_code or code_b=label_code limit 1)>0"
cur.execute(s)
r = cur.fetchone()
s = "update temps set code=" + \
"(select code_a FROM label.lbl_abcode where code_b=label_code or code_a=label_code)," + \
"tb='t'||left((select code_a FROM label.lbl_abcode where code_b=label_code or code_a=label_code),4) " + \
"where (select id from label.lbl_abcode where code_a=label_code or code_b=label_code limit 1)>0"
cur.execute(s)
cur.execute("update temps set tb='t'||left(code,4) where length(tb)=4")
cur.execute("select tb from temps group by tb")
rs = cur.fetchall()
for r in rs:
# cur.execute("select to_regclass('label." + r[0] + "')")
cur.execute("select count(*) from information_schema.tables where table_schema='label' " + \
"and table_type='BASE TABLE' and table_name='" + r[0] + "'"
)
r0 = cur.fetchone()
if r0[0]:
s = "update temps set " + \
"label_id=b.id," + \
"label_pkg=b.package_id," + \
"label_pk_id=coalesce(b.parent_id,b.id) " + \
"from " + \
"(SELECT label_code,code from temps where tb='" + r[0] + "') a " + \
"left outer join " + \
"(select id,code,parent_id,package_id,is_pk from label." + r[0] + ") b " + \
"on a.code=b.code " + \
"where tb='" + r[0] + "' and temps.code=a.code"
cur.execute(s)
# 没有标签id的,看是不是企业第三方标签
s = "update temps set " + \
"label_id=b.id," + \
"label_pkg=b.package_id," + \
"label_pk_id=coalesce(b.parent_id,b.id) " + \
"from " + \
"(SELECT label_code,code from codes where label_id is null) a " + \
"left outer join " + \
"(select id,code,parent_id,package_id,is_pk from label.thirdparty where cid=" + str(c.ancestor_id) + ") b " + \
"on a.code=b.code " + \
"where temps.code=a.code and label_id is null"
cur.execute(s)
s = "INSERT INTO inventory_stackdetails(company_id,product_id,label_pk_id,label_id,label_pkg,label_code,tm,stack_id) " + \
"select "+str(company_id)+",product_id,label_pk_id,label_id,label_pkg,label_code,now(),stack_id " + \
"from temps where label_pk_id is not null and stack_id>0 " + \
"on CONFLICT(stack_id,label_pk_id) do nothing"
cur.execute(s)
return data
......@@ -3348,7 +3348,7 @@ def promotionCode_getUserData(request):
f"(select name from sales_award where id=(select award_id from sales_activityawards where id=a.award_id)), " \
f"tm, activity_id " \
f"from sales_consumerwinner a " \
f"where activity_id in (18, 55, 98) and consumer_id={user.id} and tm_redeemed is null"
f"where activity_id in (18, 55, 98, 104) and consumer_id={user.id} and tm_redeemed is null"
cur.execute(sql2)
t = cur.fetchall()
......@@ -3367,7 +3367,7 @@ def promotionCode_getUserData(request):
f"(select name from sales_award where id=(select award_id from sales_activityawards where id=a.award_id)), " \
f"tm, tm_redeemed, activity_id " \
f"from sales_consumerwinner a " \
f"where activity_id in (18, 55, 98) and consumer_id={user.id} and tm_redeemed is not null"
f"where activity_id in (18, 55, 98, 104) and consumer_id={user.id} and tm_redeemed is not null"
cur.execute(sql3)
d = cur.fetchall()
......@@ -4064,7 +4064,7 @@ def promotionCode_compose_json(request):
@csrf_exempt
def promotionCode_compose_json_v2(request):
def promotionCode_compose_json_jg(request):
"""
{plan}
0: 馥郁奖,
......@@ -4090,9 +4090,9 @@ def promotionCode_compose_json_v2(request):
if company_id == 1:
plan = int(plan)
if activity == 104 and plan == 0:
if plan == 0:
card_consume_list = []
activityAward = 425
activityAward = 426
qty=1
ids = []
for key, value in cardsUse.items():
......@@ -4101,7 +4101,6 @@ def promotionCode_compose_json_v2(request):
rs = cur.fetchall()
for r in rs:
ids.append([r[0],r[1]])
if len(ids) == 3:
for r in ids:
# 修改code的状态
......@@ -4123,7 +4122,67 @@ def promotionCode_compose_json_v2(request):
c.save()
return JsonResponse({'card_consumed': card_consume_list, 'plan': plan})
else:
JsonResponse({'msg': 'not enough'})
return JsonResponse({'msg': 'not enough'})
elif plan == 1:
card_consume_list = []
sql0 = f"select item, count(*) from sales_promotioncode where uid_id={user.id} and status in (1,2) and activity_id='{activity}' group by item"
cur.execute(sql0)
r = cur.fetchall()
list = []
listArray = [0, 0, 0, 0, 0, 0]
cardsUseArray = cardsUse.split(',')
for i, v in enumerate(cardsUseArray):
cardsUseArray[i] = int(v)
for i in r:
list.append({
i[0]: i[1]
})
listArray[i[0] - 1] = i[1]
qty = 1
limit = 6
activityAward = 425
cardsUseSum = 0
for i in cardsUseArray:
cardsUseSum += i
if cardsUseSum != limit:
return JsonResponse({'e': 'limit not match', 'code': '16-1'})
sufficientCards = True
for i, v in enumerate(listArray):
if cardsUseArray[i] > listArray[i]:
sufficientCards = False
break
if sufficientCards == False:
return JsonResponse({'e': 'insufficient cards', 'code': '15-1'})
else:
for j, jv in enumerate(cardsUseArray):
if jv == 0:
continue
sql = f"select id, item from sales_promotioncode where activity_id={activity} and uid_id={user.id} and status in (1,2) and item={j + 1} limit {jv}"
cur.execute(sql)
rs = cur.fetchall()
for r in rs:
# 修改code的状态
pc = PromotionCode.objects.get(id=r[0])
pc.status = 3
pc.save()
# 写消耗的记录
p = PromotionCodeStatusRecord(code=pc, operation=3, uid=user, tm=tm)
p.save()
card_consume_list.append({'id': r[0], 'item': r[1]})
# 写 ConsumerWinner
c = ConsumerWinner(
company_id=company_id,
consumer_id=user.id,
activity_id=104,
award_id=activityAward,
qty=qty
)
c.save()
return JsonResponse({'card_consumed': card_consume_list, 'plan': plan})
return JsonResponse({'msg': 'ok'})
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论