| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871 |
- CREATE OR REPLACE VIEW v_suanzhangjingying AS
- -- 采购销售合同关联表
- WITH sopo_check as
- (SELECT DISTINCT sc."fno",
- sd."pono"
- FROM "salesContract" sc
- LEFT JOIN "salesDtl" sd
- ON sc."id" = sd."rrid"
- WHERE IFNULL(sc."del_flag", 0) <> 1
- AND IFNULL(sd."del_flag", 0) <> 1
- AND sc."placed" = 2
- AND IFNULL(sd.pono, '') <> ''
- )
- ,
- so_pocontr AS
- (SELECT DISTINCT sc."fno" AS sono,
- pc."pono" AS pono,
- sc.DEPT_ID,
- sc.RPTG,
- a."cpny" AS foursname,
- a.cpal,
- sc."bizType",
- sc."curcy",
- sc."serviceType",
- sc."contractName",
- sc."totalQty" AS soContrQty,
- CASE
- WHEN ifnull(pc."totalQty", 0) = 0
- THEN 1
- ELSE ifnull(pc."totalQty", 0)
- END AS poContrQty,
- sc."ctName",
- sc."ctNo",
- CASE
- WHEN sc.fours IN ('QILU',
- 'ELD')
- THEN 0
- ELSE IFNULL(sc."stampTaxAmt", 0)
- END AS stampTaxAmt,
- CASE
- WHEN sc.curcy = pc.curcy
- and sc.curcy = 'USD'
- THEN 'USD'
- ELSE 'CNY'
- END AS curcy_USE,
- sc."bizProductType",
- sc.fours,
- sd2.DEPT_desc as ywFoursName,
- sc."fclosed",
- sc.fdate,
- SC.isinitDate,
- sd.DEPT_NAME,
- SC."create_by_name",
- sc."totalCnyAmt",
- sc."totalUsdAmt"
- FROM sopo_check psCjeck
- LEFT JOIN "salesContract" sc
- ON psCjeck.fno = sc.fno
- LEFT JOIN "purchaseContract" pc
- ON psCjeck.pono = pc.fno
- LEFT JOIN "addrctrl" a
- ON a.fno = sc."fours"
- AND a.del_flag = '0'
- LEFT JOIN SYS_DEPARTMENT sd
- ON sc."dept_id" = sd.ID
- LEFT JOIN SYS_DEPARTMENT sd2
- ON SUBSTR(sd.f_id, 0, 7) = sd2.DEPT_CODE
- WHERE 1 = 1
- AND IFNULL(sc."del_flag", 0) <> 1
- AND IFNULL(pc."del_flag", 0) <> 1
- )
- ,
- rate_temp AS
- ( SELECT IFNULL(r.rate, 1) AS rate,
- TO_CHAR(m.rateMonth, 'YYYY-MM') AS fdate,
- ROW_NUMBER() OVER (
- PARTITION BY TO_CHAR(m.rateMonth, 'YYYY-MM')
- ORDER BY m.rateMonth DESC ) AS rn
- FROM curcyctrl_new m
- LEFT JOIN curcydtl_new r
- ON m.id = r.rid
- AND r.targetcode = 'CNY'
- AND NVL(R.del_flag, 0) != 1
- WHERE NVL(m.del_flag, 0) != 1
- AND m.placed = '2'
- AND m.fname = 'USD'
- )
- ,
- -- 销售货值和采购货值取值逻辑:
- -- 境内销售货值和采购货值可以通过“通用抛账”界面中的“成本结转”直接进行数据展示
- -- 境外只取“进口到票”和“销售结算开票”的数据,不进行重量分摊
- --境外“销售结算开票”的数据
- jingwai_so AS
- ( SELECT spd."sono",
- spd."pono",
- ss."curcy",
- max(ss."rateUs") "rateUs",
- sum(spd."bcQty") AS soQty,
- sum(
- case
- when ss."curcy" = 'USD'
- THEN spd.soamt
- ELSE spd.soamt / rtmp.rate
- END ) AS usdntSoAmt,
- sum(
- case
- when ss."curcy" = 'USD'
- THEN spd.soamt
- ELSE spd.soamt / rtmp.rate
- END) AS usdsoamt,
- sum(
- case
- when ss."curcy" = 'USD'
- THEN spd.soamt * rtmp.rate
- ELSE spd.soamt
- END) AS cnyntSoAmt,
- sum(
- case
- when ss."curcy" = 'USD'
- THEN spd.soamt * rtmp.rate
- ELSE spd.soamt
- END) AS cnysoamt
- FROM "saleSettle" ss
- LEFT JOIN (SELECT "rid",
- "sono",
- "pono",
- sum("bcQty") AS bcQty,
- sum("soamt") AS soamt,
- sum("ntSoAmt") AS ntSoAmt
- FROM "settleProdDtl"
- WHERE IFNULL("del_flag", 0) <> 1
- GROUP BY "rid",
- "sono",
- "pono") spd
- ON ss."id" = spd."rid"
- LEFT JOIN (SELECT "rid",
- sum("soamt") AS soamt,
- sum("ntSoAmt") AS ntSoAmt
- FROM "salesInvDtl"
- WHERE IFNULL("del_flag", 0) <> 1
- GROUP BY "rid") sid
- on sid."rid" = ss."id"
- LEFT JOIN rate_temp rtmp
- ON rtmp.fdate = TO_CHAR(ss."feebackDate", 'YYYY-MM')
- WHERE 1 = 1
- AND IFNULL(ss."del_flag", 0) <> 1
- AND ss."fmodalid" = '36'
- AND ss."foursname" IN ('齐鲁钢铁有限公司',
- '埃尔顿发展有限公司')
- AND ss."impInvoiceStatusDesc" = '入账'
- AND ss."placed" = '2'
- GROUP BY spd."sono",
- spd."pono",
- ss."curcy"
- )
- ,
- --境外“进口到票”的数据
- jingwai_po AS
- (SELECT pms."pono",
- sp.sono,
- pms."curcy",
- sum(ROUND(pspd."cnypoamt" * (soContrQty / poContrQty), 2) ) AS cnypoamt,
- sum(ROUND(pspd."cnypoamt" * (soContrQty / poContrQty), 2)) AS cnyntpoamt,
- sum(ROUND(pspd."usdpoamt" * (soContrQty / poContrQty), 2)) AS usdpoamt,
- sum(ROUND(pspd."usdpoamt" * (soContrQty / poContrQty), 2)) AS usdntpoamt
- FROM "purMultiSettle" pms
- LEFT JOIN "purStlProdDtl" pspd
- ON pms."id" = pspd."rid"
- LEFT JOIN so_pocontr sp
- ON pms.pono = sp.pono
- WHERE 1 = 1
- AND IFNULL(pms."del_flag", 0) <> 1
- AND IFNULL(pspd."del_flag", 0) <> 1
- AND pms."fmodalid" IN ('37')
- AND pms."impBcStatus" IN ('部分付款',
- '财务审核',
- '财务复核',
- '待抛账',
- '待审核',
- '全部付款')
- AND pms."placed" = '2' -- ${if(len(date_select) == 0, "", " AND pms.feebackDate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")}
- --AND pms."feebackDate" < TO_DATE('${date_select}'||'-01', 'YYYY-MM-DD')
- GROUP BY pms."pono",
- pms."curcy",
- sp.sono
- )
- ,
- -- 合并境内、境外数据
- -- 境内制作临时表关联通用抛账,通用抛账数据较多,需要合并
- gg_all AS
- (SELECT gc.sourceid,
- sum(IFNULL(g."samt", 0)) AS poamt,
- sum(IFNULL(g."samt", 0)) AS ntPoamt
- FROM "GwomiCtrl" gc
- LEFT JOIN "Gwomidtl" g
- ON gc.id = g."rid"
- WHERE 1 = 1
- AND IFNULL(g."del_flag", 0) <> 1
- AND IFNULL(gc."del_flag", 0) <> 1
- AND gc."table1" IN ('成本结转',
- '成本结转冲销')
- AND gc."impBcStatus" = '抛账成功'
- AND gc.fmodalid = '599'
- GROUP BY gc.sourceid
- UNION
- SELECT gc.sourceid2 AS sourceid,
- sum(IFNULL(g."samt", 0)) AS poamt,
- sum(IFNULL(g."samt", 0)) AS ntPoamt
- FROM "GwomiCtrl" gc
- LEFT JOIN "Gwomidtl" g
- ON gc.id = g."rid"
- WHERE 1 = 1
- AND IFNULL(g."del_flag", 0) <> 1
- AND IFNULL(gc."del_flag", 0) <> 1
- AND gc."table1" IN ('成本结转',
- '成本结转冲销')
- AND gc."impBcStatus" = '抛账成功'
- AND gc.fmodalid = '600'
- GROUP BY gc.sourceid2
- )
- ,
- sale_amt AS
- (SELECT spd."sono",
- ss."curcy",
- sum(spd."bcQty") AS soQty,
- sum(
- CASE
- WHEN ss."curcy" = 'USD'
- THEN spd.ntSoAmt * rtmp.rate
- ELSE spd.ntSoAmt
- END) AS cnyntSoAmt,
- sum(
- CASE
- WHEN ss."curcy" = 'USD'
- THEN spd.bcPoamt * rtmp.rate
- ELSE spd.bcPoamt
- END) AS cnysoamt,
- sum(IFNULL(gg."poamt", 0) * (100 + spd."inTaxRate") / 100) AS cnypoamt,
- sum(IFNULL(gg."ntPoamt", 0)) AS cnyntPoamt,
- sum(IFNULL(spd.costFeeAmt + spd.provFeeAmt, 0)) AS cnyFeeAmt,
- 0 AS usdntSoAmt,
- 0 AS usdsoamt,
- 0 AS usdpoamt,
- 0 AS usdntPoamt,
- 0 AS usdFeeAmt
- FROM "saleSettle" ss
- LEFT JOIN (SELECT sono,
- rid,
- max(inTaxRate) AS inTaxRate,
- sum(bcQty) bcQty,
- sum(ntSoAmt) ntSoAmt,
- sum(cnysoamt) cnysoamt,
- sum(bcPoamt) AS bcPoamt,
- sum(costFeeAmt) costFeeAmt,
- sum(provFeeAmt) provFeeAmt
- FROM "settleProdDtl"
- WHERE IFNULL("del_flag", 0) <> 1
- GROUP BY sono,
- rid,
- inTaxRate) spd
- ON ss."id" = spd."rid"
- LEFT JOIN (SELECT sourceid,
- sum(poamt) AS poamt,
- sum(ntPoamt) AS ntPoamt
- FROM gg_all
- GROUP BY sourceid) gg
- ON gg.sourceid = ss.id
- LEFT JOIN rate_temp rtmp
- ON rtmp.fdate = TO_CHAR(ss."feebackDate", 'YYYY-MM')
- WHERE 1 = 1
- AND ifnull(ss."del_flag", 0) <> 1
- AND SS."fours" NOT IN ('QILU',
- 'ELD')
- AND ss."placed" = 2
- AND ss."fmodalid" = '36'
- AND ss."impInvoiceStatus" = 'E' -- ${if(len(date_select) == 0, "", " AND ss.feebackDate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")}
- --AND spd.sono = 'S52090260002-S'
- GROUP BY spd."sono",
- ss."curcy"
- union
- SELECT a."sono",
- a."curcy",
- a.soQty,
- a.cnyntSoAmt AS cnyntSoAmt,
- a.cnySoAmt AS cnysoamt,
- b.cnyntpoamt AS cnypoamt,
- b.cnyntpoamt AS cnyntPoamt,
- 0 AS cnyFeeAmt,
- a.usdntSoAmt AS usdntSoAmt,
- a.usdSoAmt AS usdsoamt,
- b.usdntpoamt AS usdpoamt,
- b.usdntpoamt AS usdntPoamt,
- 0 AS usdFeeAmt
- FROM jingwai_so a
- LEFT JOIN jingwai_po b
- ON a.pono = b.pono
- and a.sono = b.sono
- )
- ,
- -- 财务费用
- caiwufeiyong AS
- (SELECT b."pono",
- b."sono",
- sum(
- CASE
- WHEN b."feeCd" IN ('10007005',
- '10007006',
- '10007031')
- AND ifnull(a."FMBCA1Status", '') = '抛账成功'
- THEN
- CASE
- WHEN a."curcy" = 'USD'
- THEN b."appAmt" * rtmp.rate
- ELSE b."appAmt"
- END
- ELSE 0
- END) AS cnyjingwaizijin,
- sum(
- CASE
- WHEN b."feeCd" IN ('10007005',
- '10007006',
- '10007031')
- AND ifnull(a."FMBCA1Status", '') = '抛账成功'
- THEN
- CASE
- WHEN a."curcy" = 'USD'
- THEN b."appAmt"
- ELSE b."appAmt" / rtmp.rate
- END
- ELSE 0
- END) AS usdjingwaizijin,
- sum(
- CASE
- WHEN b."feeCd" IN ('10007001',
- '10007004')
- AND ifnull(a."FMBCA1Status", '') = '抛账成功'
- THEN
- CASE
- WHEN a."curcy" = 'USD'
- THEN b."appAmt" * rtmp.rate
- ELSE b."appAmt"
- END
- ELSE 0
- END) AS cnyshouxin,
- sum(
- CASE
- WHEN b."feeCd" IN ('10007001',
- '10007004')
- AND ifnull(a."FMBCA1Status", '') = '抛账成功'
- THEN
- CASE
- WHEN a."curcy" = 'USD'
- THEN b."appAmt"
- ELSE b."appAmt" / rtmp.rate
- END
- ELSE 0
- END) AS usdshouxin,
- sum(
- CASE
- WHEN b."feeCd" IN ('10019001',
- '10019004',
- '10019005',
- '10019006')
- THEN
- CASE
- WHEN a."curcy" = 'USD'
- THEN b."appAmt" * rtmp.rate
- ELSE b."appAmt"
- END
- WHEN b."feeCd" IN ('10019002',
- '10019003')
- THEN
- CASE
- WHEN a."curcy" = 'USD'
- THEN b."appAmt" * rtmp.rate * -1
- ELSE b."appAmt" * -1
- END
- ELSE 0
- END) AS cnyhuiduisunyi,
- sum(
- CASE
- WHEN b."feeCd" IN ('10019001',
- '10019004',
- '10019005',
- '10019006')
- THEN
- CASE
- WHEN a."curcy" = 'USD'
- THEN b."appAmt"
- ELSE b."appAmt" / rtmp.rate
- END
- WHEN b."feeCd" IN ('10019002',
- '10019003')
- THEN
- CASE
- WHEN a."curcy" = 'USD'
- THEN b."appAmt" * -1
- ELSE b."appAmt" / rtmp.rate * -1
- END
- ELSE 0
- END) AS usdhuiduisunyi
- FROM "PayMgrctrl" a
- LEFT JOIN "paystockdtl" b
- ON a."id" = b."rid"
- LEFT JOIN rate_temp rtmp
- ON rtmp.fdate = TO_CHAR(a."feebackDate", 'YYYY-MM')
- WHERE 1 = 1
- AND IFNULL(a."del_flag", 0) <> 1
- AND IFNULL(b."del_flag", 0) <> 1
- AND a."fmodalid" in ('617',
- '16')
- AND !(b."pono" IS NULL
- AND b."sono" IS NULL )
- GROUP BY b."pono",
- b."sono"
- )
- ,
- caiwufeiyong_all AS
- (SELECT a.sono,
- a.pono,
- ifnull(b.cnyjingwaizijin, 0) + ROUND(ifnull(c.cnyjingwaizijin, 0) * a.soContrQty / a.poContrQty, 2) as cnyjingwaizijin,
- ifnull(b.cnyshouxin, 0) + ROUND(ifnull(c.cnyshouxin, 0) * a.soContrQty / a.poContrQty, 2) as cnyshouxin,
- ifnull(b.cnyhuiduisunyi, 0) + ROUND(ifnull(c.cnyhuiduisunyi, 0) * a.soContrQty / a.poContrQty, 2) as cnyhuiduisunyi,
- ifnull(b.usdjingwaizijin, 0) + ROUND(ifnull(c.usdjingwaizijin, 0) * a.soContrQty / a.poContrQty, 2) as usdjingwaizijin,
- ifnull(b.usdshouxin, 0) + ROUND(ifnull(c.usdshouxin, 0) * a.soContrQty / a.poContrQty, 2) as usdshouxin,
- ifnull(b.usdhuiduisunyi, 0) + ROUND(ifnull(c.usdhuiduisunyi, 0) * a.soContrQty / a.poContrQty, 2) as usdhuiduisunyi
- FROM so_pocontr a
- LEFT JOIN (SELECT sono,
- sum(usdjingwaizijin) as usdjingwaizijin,
- sum(usdshouxin) as usdshouxin,
- sum(usdhuiduisunyi) as usdhuiduisunyi,
- sum(cnyjingwaizijin) as cnyjingwaizijin,
- sum(cnyshouxin) as cnyshouxin,
- sum(cnyhuiduisunyi) as cnyhuiduisunyi
- FROM caiwufeiyong
- GROUP BY sono) B
- ON a.sono = b.sono
- LEFT JOIN caiwufeiyong c
- ON a.pono = c.pono
- AND IFNULL(c.sono, '') = ''
- )
- ,
- -- 保证金收款金额
- sc_ctmarAmt as
- (SELECT a."sono",
- sum("claimAmt") AS claimAmt
- FROM breceiptdtl a
- JOIN breceiptctrl b
- ON a.rid = b.id
- WHERE IFNULL(b.del_flag, 0) = 0
- AND IFNULL(a.del_flag, 0) = 0
- AND b.fmodalid = 19 -- ${if(len(date_select) == 0, "", " AND b.rcptDate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")}
- --AND b.rcptDate < TO_DATE('${date_select}'||'-01', 'YYYY-MM-DD')
- AND a.kxlx IN ('保证金')
- GROUP BY a.sono
- )
- ,
- -- 资金使用成本
- zjshy_cb_jn AS
- (SELECT sono,
- SUM(days) AS days,
- SUM(xh_CnyAamt) AS xh_CnyAamt,
- SUM(pj_CnyAamt) AS pj_CnyAamt
- FROM (SELECT vfucrd.sono,
- SUM(vfucrd.days) AS days,
- SUM(vfucrd.CnyAamt) AS xh_CnyAamt,
- 0 AS pj_CnyAamt
- FROM ( SELECT sono,
- jxdate,
- SUM(jxfcat * interAmt) AS CnyAamt,
- MAX(
- CASE
- WHEN interAmt <> 0
- THEN jxfcat * fundOccuDays
- ELSE 0
- END ) AS days
- FROM bizInterDtlDay_Cw_close
- WHERE 1 = 1
- AND "jxType" = '常规货款' -- ${if(len(date_select) == 0, "", " AND jxdate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")}
- --AND sono= 'S04794260001-S'
- --AND jxdate < TO_DATE('${date_select}'||'-01', 'YYYY-MM-DD')
- GROUP BY sono,
- jxdate ) vfucrd
- GROUP BY vfucrd.sono
- UNION
- SELECT bizCw.sono,
- 0 AS days,
- 0 AS xh_CnyAamt,
- SUM(bizCw.jxfcat * bizCw.interAmt) AS pj_CnyAamt
- FROM bizInterDtlDay_Cw_close bizCw
- LEFT JOIN "salesContract" sc
- ON bizCw."sono" = sc."fno"
- AND IFNULL(sc."del_flag", 0) <> 1
- WHERE 1 = 1
- AND "jxType" = '承兑汇票'
- -- 临时增加之后贴现的做好了可以直接去掉
- AND !(sc."fours" = 'RZGM'
- AND sc."serviceType" = '代理-主业进口') -- ${if(len(date_select) == 0, "", " AND jxdate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")}
- --AND sono like 'S04794260001-S'
- --AND jxdate < TO_DATE('${date_select}'||'-01', 'YYYY-MM-DD')
- GROUP BY bizCw.sono)
- GROUP BY sono
- )
- ,
- rz_date AS
- ( SELECT IFNULL(a."poOrder", a.pono) AS pono,
- max(TO_NUMBER(b.finDays)) as finDays
- FROM financingReq_Total a
- LEFT JOIN breceiptdtl_rz b
- ON a.id = b.rid
- WHERE ifnull(a."del_flag", 0) <> 1
- AND ifnull(b."del_flag", 0) <> 1
- AND ifnull(b.finDays, 0 ) > 0
- group by IFNULL(a."poOrder", a.pono)
- )
- ,
- --资金使用成本占资金额
- zjzhanzi as
- (SELECT sono,
- sum(interPriAmt) as interPriAmt
- FROM (SELECT sono,
- jxdate,
- SUM(jxfcat * interAmt) AS CnyAamt,
- SUM(jxfcat * interAmt),
- sum(jxfcat * "interPriAmt" * fundOccuDays) / 10000 AS interPriAmt,
- MAX(
- CASE
- WHEN interAmt <> 0
- THEN jxfcat * fundOccuDays
- ELSE 0
- END ) AS days
- FROM bizInterDtlDay_Cw_close
- WHERE 1 = 1
- AND "jxType" = '常规货款' -- ${if(len(date_select) == 0, "", " AND jxdate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")}
- --AND jxdate < TO_DATE('${date_select}'||'-01', 'YYYY-MM-DD')
- GROUP BY sono,
- jxdate)
- GROUP BY sono
- ORDER BY sono
- )
- ,
- zjshy_cb AS
- (SELECT a.pono,
- CASE
- WHEN ifnull(b.rz_num, 0) <> 0
- AND a.foursname IN ('齐鲁钢铁有限公司',
- '埃尔顿发展有限公司')
- THEN e.finDays
- ELSE d.days
- END AS days,
- CASE
- WHEN ifnull(b.rz_num, 0) <> 0
- AND a.foursname IN ('齐鲁钢铁有限公司',
- '埃尔顿发展有限公司')
- THEN c.usdjingwaizijin
- ELSE d.xh_CnyAamt
- END AS CnyAamt
- FROM purchaseContract a
- LEFT JOIN (SELECT fr.pono,
- count(fr.pono) AS rz_num
- FROM financingReq fr
- WHERE IFNULL(fr.del_flag, 0) <> 1
- GROUP BY fr.pono) b
- ON a.pono = b.pono
- LEFT JOIN caiwufeiyong_all c
- ON a.pono = c.pono
- LEFT JOIN zjshy_cb_jn d
- ON a.sono = d.sono
- LEFT JOIN rz_date e
- ON a.pono = e.pono
- WHERE IFNULL(del_flag, 0) <> 1
- AND placed = 2
- )
- ,
- free_so as
- (SELECT sono,
- COUNT(*) AS fee_count, -- 费用笔数
- SUM(poamt) AS total_poamt, -- 原币总额
- SUM(ntCnyAmt) AS total_ntCnyAmt, -- 不含税人民币总额
- SUM(ntUsdAmt) AS total_ntUsdAmt -- 不含税美元总额
- from (SELECT
- -- 优先用销售合同号,没有则通过采购合同号关联查找
- COALESCE(dtl."sono", rel.sono) AS sono,
- dtl."feeCd",
- dtl."feeNm",
- dtl."poamt",
- dtl."inTaxRate",
- ROUND((dtl."cnypoamt" / (1 + dtl."inTaxRate" / 100)), 2) AS ntCnyAmt,
- ROUND((dtl."usdpoamt" / (1 + dtl."inTaxRate" / 100)), 2) AS ntUsdAmt
- FROM "purMultiSettle" main
- INNER JOIN "purStlProdDtl" dtl
- ON main."id" = dtl."rid"
- LEFT JOIN so_pocontr rel
- ON dtl."pono" = rel.pono
- WHERE IFNULL(main."del_flag", 0) <> 1
- AND IFNULL(dtl."del_flag", 0) <> 1
- AND IFNULL(main."placed", 0) = 2
- AND main."fmodalid" = '300'
- AND main."cateName" NOT IN ('代收代付类') -- ${if(len(date_select) == 0, "", " AND main.feebackDate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")}
- --AND main."feebackDate" < TO_DATE('${date_select}'||'-01', 'YYYY-MM-DD')
- AND (dtl."pono" IS NOT NULL
- OR dtl."sono" IS NOT NULL) )
- GROUP BY sono
- )
- ,
- date_all_before AS
- ( SELECT distinct a.sono AS 销售合同号,
- --a.pono AS 采购合同号,
- a."foursname" AS 我方名称,
- a."serviceType" AS 业务类型,
- a."curcy" AS 币别,
- a."bizProductType",
- a."ctName" as 客户名称,
- b.soQty AS 销售数量,
- a.fours,
- a.cpal,a.fclosed,
- case
- when a.curcy_USE = 'USD'
- THEN b.usdntSoAmt
- ELSE b.cnyntSoAmt
- END AS 销售金额不含税,
- a.curcy_USE,
- case
- when a.curcy_USE = 'USD'
- THEN b.usdsoamt
- ELSE b.cnySoAmt
- END AS 销售金额含税,
- case
- when a.curcy_USE = 'USD'
- THEN b.usdntPoamt
- ELSE b.cnyntPoAmt
- END AS 采购金额不含税,
- case
- when a.curcy_USE = 'USD'
- THEN b.usdpoamt
- ELSE b.cnypoAmt
- END AS 采购金额含税,
- case
- when a."foursname" IN ('齐鲁钢铁有限公司',
- '埃尔顿发展有限公司')
- THEN
- case
- when a.curcy_USE = 'USD'
- THEN IFNULL(c.usdshouxin, 0) + IFNULL(C.usdjingwaizijin, 0)
- ELSE IFNULL(c.cnyshouxin, 0) + IFNULL(c.cnyjingwaizijin, 0)
- END
- ELSE
- case
- when a.curcy_USE = 'USD'
- THEN IFNULL(c.usdshouxin, 0)
- ELSE IFNULL(c.cnyshouxin, 0)
- END
- END AS 银行授信,
- case
- when a.curcy_USE = 'USD'
- THEN IFNULL(c.usdhuiduisunyi, 0)
- ELSE IFNULL(c.cnyhuiduisunyi, 0)
- END AS 汇兑损益,
- round(IFNULL(d.claimAmt, 0), 2) as 保证金,
- IFNULL(a."stampTaxAmt", 0) AS 印花税,
- case
- when a."foursname" IN ('齐鲁钢铁有限公司',
- '埃尔顿发展有限公司')
- then 0
- ELSE
- case
- when a."contractName" in('钢材加工废料')
- then 0
- else ifnull(e.days, 0)
- end
- END days,
- case
- when a."foursname" IN ('齐鲁钢铁有限公司',
- '埃尔顿发展有限公司')
- then 0
- else
- case
- when a."contractName" in('钢材加工废料')
- then 0
- else ifnull(e.xh_CnyAamt, 0)
- end
- END xh_CnyAamt,
- case
- when a."foursname" IN ('齐鲁钢铁有限公司',
- '埃尔顿发展有限公司')
- then 0
- else
- case
- when a."contractName" in('钢材加工废料')
- then 0
- else ifnull(e.pj_CnyAamt, 0)
- end
- END pj_CnyAamt,
- case
- when a.fours IN ('QILU',
- 'ELD')
- then
- case
- when a.curcy_USE = 'USD'
- then f.total_ntUsdAmt
- else f.total_ntCnyAmt
- end
- else
- case
- when a.curcy_USE = 'USD'
- then b.usdFeeAmt
- else b.cnyFeeamt
- END
- END as 费用,
- a.ywFoursName 业务我方名称,
- A."create_by_name",
- a.DEPT_NAME,
- case
- when a."foursname" IN ('齐鲁钢铁有限公司',
- '埃尔顿发展有限公司')
- then 0
- else IFNULL(g.interPriAmt, 0)
- end AS interPriAmt,
- a."totalCnyAmt"
- FROM "so_pocontr" a
- LEFT JOIN sale_amt b
- ON a.sono = b.sono
- LEFT JOIN caiwufeiyong_all c
- ON a.sono = c.sono
- AND a.pono = IFNULL(c.pono, a.pono)
- LEFT JOIN sc_ctmarAmt d
- ON a.sono = d.sono
- LEFT JOIN zjshy_cb_jn e
- ON a.sono = e.sono
- left join free_so f
- on a.sono = f.sono
- left join zjzhanzi g
- on a.sono = g.sono
- WHERE 1 = 1
- AND b.soQty IS NOT NULL
- AND a.fdate >= '2026-01-01'
- AND IFNULL(A."isinitDate", '') <> '是'
- --AND IFNULL(a."fclosed",0) = 1-- 此处补充合同关闭逻辑
- order by a.sono
-
- ), data_final AS ( SELECT DISTINCT *,
- CASE
- WHEN fours IN ('QILU',
- 'ELD')
- THEN (((((("销售金额不含税" - "采购金额不含税") - "IFNULL"("印花税", 0)) - "IFNULL"("银行授信", 0)) - "IFNULL"("汇兑损益", 0)) - "IFNULL"("费用", 0)) - "IFNULL"(xh_CnyAamt, 0)- "IFNULL"(pj_CnyAamt, 0))
- ELSE ((((("销售金额不含税" - "采购金额不含税") - "IFNULL"("印花税", 0)) - "IFNULL"("银行授信", 0)) - "IFNULL"("汇兑损益", 0)) - "IFNULL"(xh_CnyAamt, 0)- "IFNULL"(pj_CnyAamt, 0))
- END AS "利润",
- CASE
- WHEN "销售金额不含税" = 0
- THEN 0
- ELSE
- CASE
- WHEN fours IN ('QILU',
- 'ELD')
- THEN ((((((("销售金额不含税" - "采购金额不含税") - "IFNULL"("印花税", 0)) - "IFNULL"("银行授信", 0)) - "IFNULL"("汇兑损益", 0)) - "IFNULL"("费用", 0)) - "IFNULL"(xh_CnyAamt, 0)- "IFNULL"(pj_CnyAamt, 0)) / "销售金额不含税")
- ELSE (((((("销售金额不含税" - "采购金额不含税") - "IFNULL"("印花税", 0)) - "IFNULL"("银行授信", 0)) - "IFNULL"("汇兑损益", 0)) - "IFNULL"(xh_CnyAamt, 0)- "IFNULL"(pj_CnyAamt, 0)) / "销售金额不含税")
- END
- END AS "销售利润",
- CASE
- WHEN ("采购金额含税" = 0
- OR days = 0 )
- THEN 0
- ELSE (((("销售金额含税" - "采购金额含税") / "采购金额含税") / days) * 360)
- END AS "年化资金收益率",
- CASE
- WHEN (("采购金额含税" - "保证金") = 0
- OR days = 0 )
- THEN 0
- ELSE
- CASE
- WHEN fours IN ('QILU',
- 'ELD')
- THEN ((((((((("销售金额不含税" - "采购金额不含税") - "IFNULL"("印花税", 0)) - "IFNULL"("银行授信", 0)) - "IFNULL"("汇兑损益", 0)) - "IFNULL"("费用", 0)) - "IFNULL"(xh_CnyAamt, 0)- "IFNULL"(pj_CnyAamt, 0)) / ("采购金额含税" - "保证金")) / days) * 360)
- ELSE (((((((("销售金额不含税" - "采购金额不含税") - "IFNULL"("印花税", 0)) - "IFNULL"("银行授信", 0)) - "IFNULL"("汇兑损益", 0)) - "IFNULL"(xh_CnyAamt, 0)- "IFNULL"(pj_CnyAamt, 0)) / ("采购金额含税" - "保证金")) / days) * 360)
- END
- END AS "年化业务收益率",
- case
- when days <> 0
- then interPriAmt / days
- else 0
- end as 平均占资金额,
- case
- when days <> 0
- then interPriAmt * 10000 / days / totalCnyAmt
- else 0
- END as "平均占资/销售金额"
- FROM date_all_before )
-
- SELECT v."销售合同号",
- v."cpal",
- v."我方名称",
- v."业务类型",
- v."币别",
- v."bizProductType",
- v."客户名称",
- v."销售数量",
- v."销售金额不含税",
- v."销售金额含税",
- v."采购金额不含税",
- v."采购金额含税",
- v."银行授信",
- v."汇兑损益",
- v."保证金",
- v."印花税",
- v."days",
- v."pj_CnyAamt",
- v.xh_CnyAamt,
- v."费用",
- v."业务我方名称",
- v."create_by_name",
- v."fours",
- v."fclosed",
- v.curcy_USE,
- v."利润",
- v."销售利润",
- v."年化资金收益率",
- v."年化业务收益率",
- v.interPriAmt as "现汇占用资金金额(万元·天)",
- v.平均占资金额,
- v."平均占资/销售金额",
- CASE
- WHEN COALESCE(v.days, 0) < 15
- THEN
- CASE
- WHEN COALESCE(v."销售利润", 0) <= 0
- THEN '无效'
- WHEN (COALESCE(v."销售利润", 0) > 0
- AND COALESCE(v."销售利润", 0) <= 0.003 )
- THEN '低效'
- WHEN (COALESCE(v."销售利润", 0) > 0.003
- AND COALESCE(v."销售利润", 0) <= 0.006 )
- THEN '基效'
- WHEN (COALESCE(v."销售利润", 0) > 0.006
- AND COALESCE(v."销售利润", 0) <= 0.01 )
- THEN '中效'
- WHEN (COALESCE(v."销售利润", 0) > 0.01
- AND COALESCE(v."销售利润", 0) <= 0.02 )
- THEN '高效'
- WHEN COALESCE(v."销售利润", 0) > 0.02
- THEN '卓效'
- ELSE '无效'
- END
- WHEN COALESCE(v.days, 0) >= 15
- THEN
- CASE
- WHEN COALESCE(v."年化业务收益率", 0) > 0.09
- THEN '卓效'
- WHEN (COALESCE(v."年化业务收益率", 0) > 0.065
- AND COALESCE(v."年化业务收益率", 0) <= 0.09 )
- THEN '高效'
- WHEN COALESCE(v."年化业务收益率", 0) <= 0.065
- THEN
- CASE
- WHEN COALESCE(v."年化资金收益率", 0) <= 0.05
- THEN '无效'
- WHEN (COALESCE(v."年化资金收益率", 0) > 0.05
- AND COALESCE(v."年化资金收益率", 0) <= 0.06 )
- THEN '低效'
- WHEN (COALESCE(v."年化资金收益率", 0) > 0.06
- AND COALESCE(v."年化资金收益率", 0) <= 0.065 )
- THEN '基效'
- WHEN COALESCE(v."年化资金收益率", 0) > 0.065
- THEN '中效'
- ELSE '无效'
- END
- ELSE '无效'
- END
- ELSE '无效'
- END AS "efficiency_level"
- FROM data_final AS v
- ORDER BY v.days DESC;
|