Kaynağa Gözat

修改计算可点选计算方法

zou.yingbin 4 yıl önce
ebeveyn
işleme
05bf40d088
1 değiştirilmiş dosya ile 88 ekleme ve 76 silme
  1. 88 76
      models/wrTrade2.go

+ 88 - 76
models/wrTrade2.go

@@ -2904,82 +2904,94 @@ func (r *WrDeliveryAvalidHoldLB) calc() {
 }
 
 func (r *WrDeliveryAvalidHoldLB) buildSql() string {
-	var sqlId utils.SQLVal = "with tmp as(" +
-		"select k.wrfactortypeid, k.goodsid, sum(k.pricemove) pricemove" +
-		"  from (select to_char(t.wrfactortypeid) wrfactortypeid," +
-		"               b.dgfactoryitemtypeid," +
-		"               b.itemtypename," +
-		"               c.dgfactoryitemvalue," +
-		"               t.optioncompare," +
-		"               t.warehouseid," +
-		"               t.wrstandardid," +
-		"               c.dgfactoryitemid," +
-		"               t.wrfactortypename," +
-		"               t.wrfactortypename2," +
-		"               r.goodsid," +
-		"               nvl(r.premiumvalue, 0) pricemove" +
-		"          from wrfactortype t" +
-		"         inner join wrfactortypeitem a" +
-		"            on t.wrfactortypeid = a.wrfactortypeid" +
-		"         inner join dgfactoryitemtype b" +
-		"            on t.deliverygoodsid = b.deliverygoodsid" +
-		"           and a.dgfactoryitemtypeid = b.dgfactoryitemtypeid" +
-		"          left join dgfactoryitem c" +
-		"            on a.dgfactoryitemid = c.dgfactoryitemid" +
-		"           and b.deliverygoodsid = c.deliverygoodsid" +
-		"          left join deliveryrelationdetail r" +
-		"            on c.dgfactoryitemid = r.dgfactoryitemid" +
-		"           and b.dgfactoryitemtypeid = r.dgfactoryitemtypeid" +
-		"         where 1 = 1) k" +
-		" group by k.wrfactortypeid, k.goodsid" +
-		" )" +
-		"select a.*," +
-		"       case" +
-		"         when a.uqty < a.qty then" +
-		"          a.uqty" +
-		"         else" +
-		"          a.qty" +
-		"       end as avalidqty," +
-		"       wd.wrstandardname," +
-		"       wd.wrstandardcode," +
-		"       wd.unitid," +
-		"       h.warehousecode," +
-		"       h.warehousename," +
-		"       g1.goodscode xgoodscode," +
-		"       g1.goodsname xgoodsname," +
-		"       r.pgoodsid," +
-		"       g2.goodscode pgoodscode," +
-		"       g2.goodsname pgoodsname," +
-		"       u.accountname username," +
-		"       tmp.pricemove" +
-		"  from (select t.accountid," +
-		"               t.goodsid," +
-		"               t.wrstandardid," +
-		"               t.inqty - t.cancelqty - t.deliveryqty - t.curpresaleqty as uqty," +
-		"               hl.qty - hl.freezerqty qty," +
-		"               to_char(hl.wrfactortypeid) wrfactortypeid," +
-		"               to_char(hl.ladingbillid) ladingbillid," +
-		"               hl.subnum," +
-		"               hl.deliverygoodsid," +
-		"               hl.userid," +
-		"               w.wrfactortypename2," +
-		"               w.warehouseid" +
-		"          from cptrade_usergoodsdata t" +
-		"         inner join wrholdlb hl" +
-		"            on t.accountid = hl.accountid" +
-		"         inner join wrfactortype w" +
-		"            on t.wrstandardid = w.wrstandardid and hl.wrfactortypeid=w.wrfactortypeid) a" +
-		"  left join wrstandard wd" +
-		"    on a.wrstandardid = wd.wrstandardid" +
-		"  left join warehouseinfo h" +
-		"    on a.warehouseid = h.autoid" +
-		"  inner join deliveryrelation r on a.goodsid=r.goodsid and a.wrstandardid=r.wrstandardid" +
-		"  left join goods g1 on a.goodsid=g1.goodsid" +
-		"  left join goods g2 on r.pgoodsid=g2.goodsid" +
-		"  left join useraccount u on a.userid=u.userid" +
-		"  left join tmp on a.wrfactortypeid=tmp.wrfactortypeid and a.goodsid=tmp.goodsid" +
-		" where a.uqty > 0" +
-		"   and a.qty > 0"
+	var sqlId utils.SQLVal = `
+with tmp as
+ (select k.wrfactortypeid, k.goodsid, sum(k.pricemove) pricemove
+    from (select to_char(t.wrfactortypeid) wrfactortypeid,
+                 b.dgfactoryitemtypeid,
+                 b.itemtypename,
+                 c.dgfactoryitemvalue,
+                 t.optioncompare,
+                 t.warehouseid,
+                 t.wrstandardid,
+                 c.dgfactoryitemid,
+                 t.wrfactortypename,
+                 t.wrfactortypename2,
+                 r.goodsid,
+                 nvl(r.premiumvalue, 0) pricemove
+            from wrfactortype t
+           inner join wrfactortypeitem a
+              on t.wrfactortypeid = a.wrfactortypeid
+           inner join dgfactoryitemtype b
+              on t.deliverygoodsid = b.deliverygoodsid
+             and a.dgfactoryitemtypeid = b.dgfactoryitemtypeid
+            left join dgfactoryitem c
+              on a.dgfactoryitemid = c.dgfactoryitemid
+             and b.deliverygoodsid = c.deliverygoodsid
+            left join deliveryrelationdetail r
+              on c.dgfactoryitemid = r.dgfactoryitemid
+             and b.dgfactoryitemtypeid = r.dgfactoryitemtypeid
+           where 1 = 1) k
+   group by k.wrfactortypeid, k.goodsid)
+select a.*,
+       case
+         when a.uqty * g1.agreeunit * r.mindeliveryqty * (r.rratio1/nvl(r.rratio2,1)) < a.qty then
+          a.uqty * g1.agreeunit * r.mindeliveryqty * (r.rratio1/nvl(r.rratio2,1))
+         else
+          a.qty
+       end as avalidqty,
+       wd.wrstandardname,
+       wd.wrstandardcode,
+       wd.unitid,
+       h.warehousecode,
+       h.warehousename,
+       g1.goodscode xgoodscode,
+       g1.goodsname xgoodsname,
+       r.pgoodsid,
+       g2.goodscode pgoodscode,
+       g2.goodsname pgoodsname,
+       u.accountname username,
+       tmp.pricemove
+  from (select t.accountid,
+               t.goodsid,
+               t.wrstandardid,
+               t.inqty - t.cancelqty - t.deliveryqty - (p.buycurpositionqty - p.buyfrozenqty) as uqty,
+               hl.qty - hl.freezerqty qty,
+               to_char(hl.wrfactortypeid) wrfactortypeid,
+               to_char(hl.ladingbillid) ladingbillid,
+               hl.subnum,
+               hl.deliverygoodsid,
+               hl.userid,
+               w.wrfactortypename2,
+               w.warehouseid
+          from cptrade_usergoodsdata t
+         inner join wrholdlb hl
+            on t.accountid = hl.accountid
+         inner join wrfactortype w
+            on t.wrstandardid = w.wrstandardid
+           and hl.wrfactortypeid = w.wrfactortypeid
+         left join tradeposition p on t.accountid=p.accountid and t.goodsid=p.goodsid
+           ) a
+  left join wrstandard wd
+    on a.wrstandardid = wd.wrstandardid
+  left join warehouseinfo h
+    on a.warehouseid = h.autoid
+ inner join deliveryrelation r
+    on a.goodsid = r.goodsid
+   and a.wrstandardid = r.wrstandardid
+  left join goods g1
+    on a.goodsid = g1.goodsid
+  left join goods g2
+    on r.pgoodsid = g2.goodsid
+  left join useraccount u
+    on a.userid = u.userid
+  left join tmp
+    on a.wrfactortypeid = tmp.wrfactortypeid
+   and a.goodsid = tmp.goodsid
+ where a.uqty > 0
+   and a.qty > 0
+`
+	// 过滤掉自己的仓单 and a.accountid !=
 	sqlId.Join(fmt.Sprintf(" and a.accountid != %v", r.ACCOUNTID))
 	sqlId.And("a.goodsid", r.GOODSID)
 	return sqlId.String()