imp系统运维用到的sql文件版本仓库
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871
  1. CREATE OR REPLACE VIEW v_suanzhangjingying AS
  2. -- 采购销售合同关联表
  3. WITH sopo_check as
  4. (SELECT DISTINCT sc."fno",
  5. sd."pono"
  6. FROM "salesContract" sc
  7. LEFT JOIN "salesDtl" sd
  8. ON sc."id" = sd."rrid"
  9. WHERE IFNULL(sc."del_flag", 0) <> 1
  10. AND IFNULL(sd."del_flag", 0) <> 1
  11. AND sc."placed" = 2
  12. AND IFNULL(sd.pono, '') <> ''
  13. )
  14. ,
  15. so_pocontr AS
  16. (SELECT DISTINCT sc."fno" AS sono,
  17. pc."pono" AS pono,
  18. sc.DEPT_ID,
  19. sc.RPTG,
  20. a."cpny" AS foursname,
  21. a.cpal,
  22. sc."bizType",
  23. sc."curcy",
  24. sc."serviceType",
  25. sc."contractName",
  26. sc."totalQty" AS soContrQty,
  27. CASE
  28. WHEN ifnull(pc."totalQty", 0) = 0
  29. THEN 1
  30. ELSE ifnull(pc."totalQty", 0)
  31. END AS poContrQty,
  32. sc."ctName",
  33. sc."ctNo",
  34. CASE
  35. WHEN sc.fours IN ('QILU',
  36. 'ELD')
  37. THEN 0
  38. ELSE IFNULL(sc."stampTaxAmt", 0)
  39. END AS stampTaxAmt,
  40. CASE
  41. WHEN sc.curcy = pc.curcy
  42. and sc.curcy = 'USD'
  43. THEN 'USD'
  44. ELSE 'CNY'
  45. END AS curcy_USE,
  46. sc."bizProductType",
  47. sc.fours,
  48. sd2.DEPT_desc as ywFoursName,
  49. sc."fclosed",
  50. sc.fdate,
  51. SC.isinitDate,
  52. sd.DEPT_NAME,
  53. SC."create_by_name",
  54. sc."totalCnyAmt",
  55. sc."totalUsdAmt"
  56. FROM sopo_check psCjeck
  57. LEFT JOIN "salesContract" sc
  58. ON psCjeck.fno = sc.fno
  59. LEFT JOIN "purchaseContract" pc
  60. ON psCjeck.pono = pc.fno
  61. LEFT JOIN "addrctrl" a
  62. ON a.fno = sc."fours"
  63. AND a.del_flag = '0'
  64. LEFT JOIN SYS_DEPARTMENT sd
  65. ON sc."dept_id" = sd.ID
  66. LEFT JOIN SYS_DEPARTMENT sd2
  67. ON SUBSTR(sd.f_id, 0, 7) = sd2.DEPT_CODE
  68. WHERE 1 = 1
  69. AND IFNULL(sc."del_flag", 0) <> 1
  70. AND IFNULL(pc."del_flag", 0) <> 1
  71. )
  72. ,
  73. rate_temp AS
  74. ( SELECT IFNULL(r.rate, 1) AS rate,
  75. TO_CHAR(m.rateMonth, 'YYYY-MM') AS fdate,
  76. ROW_NUMBER() OVER (
  77. PARTITION BY TO_CHAR(m.rateMonth, 'YYYY-MM')
  78. ORDER BY m.rateMonth DESC ) AS rn
  79. FROM curcyctrl_new m
  80. LEFT JOIN curcydtl_new r
  81. ON m.id = r.rid
  82. AND r.targetcode = 'CNY'
  83. AND NVL(R.del_flag, 0) != 1
  84. WHERE NVL(m.del_flag, 0) != 1
  85. AND m.placed = '2'
  86. AND m.fname = 'USD'
  87. )
  88. ,
  89. -- 销售货值和采购货值取值逻辑:
  90. -- 境内销售货值和采购货值可以通过“通用抛账”界面中的“成本结转”直接进行数据展示
  91. -- 境外只取“进口到票”和“销售结算开票”的数据,不进行重量分摊
  92. --境外“销售结算开票”的数据
  93. jingwai_so AS
  94. ( SELECT spd."sono",
  95. spd."pono",
  96. ss."curcy",
  97. max(ss."rateUs") "rateUs",
  98. sum(spd."bcQty") AS soQty,
  99. sum(
  100. case
  101. when ss."curcy" = 'USD'
  102. THEN spd.soamt
  103. ELSE spd.soamt / rtmp.rate
  104. END ) AS usdntSoAmt,
  105. sum(
  106. case
  107. when ss."curcy" = 'USD'
  108. THEN spd.soamt
  109. ELSE spd.soamt / rtmp.rate
  110. END) AS usdsoamt,
  111. sum(
  112. case
  113. when ss."curcy" = 'USD'
  114. THEN spd.soamt * rtmp.rate
  115. ELSE spd.soamt
  116. END) AS cnyntSoAmt,
  117. sum(
  118. case
  119. when ss."curcy" = 'USD'
  120. THEN spd.soamt * rtmp.rate
  121. ELSE spd.soamt
  122. END) AS cnysoamt
  123. FROM "saleSettle" ss
  124. LEFT JOIN (SELECT "rid",
  125. "sono",
  126. "pono",
  127. sum("bcQty") AS bcQty,
  128. sum("soamt") AS soamt,
  129. sum("ntSoAmt") AS ntSoAmt
  130. FROM "settleProdDtl"
  131. WHERE IFNULL("del_flag", 0) <> 1
  132. GROUP BY "rid",
  133. "sono",
  134. "pono") spd
  135. ON ss."id" = spd."rid"
  136. LEFT JOIN (SELECT "rid",
  137. sum("soamt") AS soamt,
  138. sum("ntSoAmt") AS ntSoAmt
  139. FROM "salesInvDtl"
  140. WHERE IFNULL("del_flag", 0) <> 1
  141. GROUP BY "rid") sid
  142. on sid."rid" = ss."id"
  143. LEFT JOIN rate_temp rtmp
  144. ON rtmp.fdate = TO_CHAR(ss."feebackDate", 'YYYY-MM')
  145. WHERE 1 = 1
  146. AND IFNULL(ss."del_flag", 0) <> 1
  147. AND ss."fmodalid" = '36'
  148. AND ss."foursname" IN ('齐鲁钢铁有限公司',
  149. '埃尔顿发展有限公司')
  150. AND ss."impInvoiceStatusDesc" = '入账'
  151. AND ss."placed" = '2'
  152. GROUP BY spd."sono",
  153. spd."pono",
  154. ss."curcy"
  155. )
  156. ,
  157. --境外“进口到票”的数据
  158. jingwai_po AS
  159. (SELECT pms."pono",
  160. sp.sono,
  161. pms."curcy",
  162. sum(ROUND(pspd."cnypoamt" * (soContrQty / poContrQty), 2) ) AS cnypoamt,
  163. sum(ROUND(pspd."cnypoamt" * (soContrQty / poContrQty), 2)) AS cnyntpoamt,
  164. sum(ROUND(pspd."usdpoamt" * (soContrQty / poContrQty), 2)) AS usdpoamt,
  165. sum(ROUND(pspd."usdpoamt" * (soContrQty / poContrQty), 2)) AS usdntpoamt
  166. FROM "purMultiSettle" pms
  167. LEFT JOIN "purStlProdDtl" pspd
  168. ON pms."id" = pspd."rid"
  169. LEFT JOIN so_pocontr sp
  170. ON pms.pono = sp.pono
  171. WHERE 1 = 1
  172. AND IFNULL(pms."del_flag", 0) <> 1
  173. AND IFNULL(pspd."del_flag", 0) <> 1
  174. AND pms."fmodalid" IN ('37')
  175. AND pms."impBcStatus" IN ('部分付款',
  176. '财务审核',
  177. '财务复核',
  178. '待抛账',
  179. '待审核',
  180. '全部付款')
  181. AND pms."placed" = '2' -- ${if(len(date_select) == 0, "", " AND pms.feebackDate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")}
  182. --AND pms."feebackDate" < TO_DATE('${date_select}'||'-01', 'YYYY-MM-DD')
  183. GROUP BY pms."pono",
  184. pms."curcy",
  185. sp.sono
  186. )
  187. ,
  188. -- 合并境内、境外数据
  189. -- 境内制作临时表关联通用抛账,通用抛账数据较多,需要合并
  190. gg_all AS
  191. (SELECT gc.sourceid,
  192. sum(IFNULL(g."samt", 0)) AS poamt,
  193. sum(IFNULL(g."samt", 0)) AS ntPoamt
  194. FROM "GwomiCtrl" gc
  195. LEFT JOIN "Gwomidtl" g
  196. ON gc.id = g."rid"
  197. WHERE 1 = 1
  198. AND IFNULL(g."del_flag", 0) <> 1
  199. AND IFNULL(gc."del_flag", 0) <> 1
  200. AND gc."table1" IN ('成本结转',
  201. '成本结转冲销')
  202. AND gc."impBcStatus" = '抛账成功'
  203. AND gc.fmodalid = '599'
  204. GROUP BY gc.sourceid
  205. UNION
  206. SELECT gc.sourceid2 AS sourceid,
  207. sum(IFNULL(g."samt", 0)) AS poamt,
  208. sum(IFNULL(g."samt", 0)) AS ntPoamt
  209. FROM "GwomiCtrl" gc
  210. LEFT JOIN "Gwomidtl" g
  211. ON gc.id = g."rid"
  212. WHERE 1 = 1
  213. AND IFNULL(g."del_flag", 0) <> 1
  214. AND IFNULL(gc."del_flag", 0) <> 1
  215. AND gc."table1" IN ('成本结转',
  216. '成本结转冲销')
  217. AND gc."impBcStatus" = '抛账成功'
  218. AND gc.fmodalid = '600'
  219. GROUP BY gc.sourceid2
  220. )
  221. ,
  222. sale_amt AS
  223. (SELECT spd."sono",
  224. ss."curcy",
  225. sum(spd."bcQty") AS soQty,
  226. sum(
  227. CASE
  228. WHEN ss."curcy" = 'USD'
  229. THEN spd.ntSoAmt * rtmp.rate
  230. ELSE spd.ntSoAmt
  231. END) AS cnyntSoAmt,
  232. sum(
  233. CASE
  234. WHEN ss."curcy" = 'USD'
  235. THEN spd.bcPoamt * rtmp.rate
  236. ELSE spd.bcPoamt
  237. END) AS cnysoamt,
  238. sum(IFNULL(gg."poamt", 0) * (100 + spd."inTaxRate") / 100) AS cnypoamt,
  239. sum(IFNULL(gg."ntPoamt", 0)) AS cnyntPoamt,
  240. sum(IFNULL(spd.costFeeAmt + spd.provFeeAmt, 0)) AS cnyFeeAmt,
  241. 0 AS usdntSoAmt,
  242. 0 AS usdsoamt,
  243. 0 AS usdpoamt,
  244. 0 AS usdntPoamt,
  245. 0 AS usdFeeAmt
  246. FROM "saleSettle" ss
  247. LEFT JOIN (SELECT sono,
  248. rid,
  249. max(inTaxRate) AS inTaxRate,
  250. sum(bcQty) bcQty,
  251. sum(ntSoAmt) ntSoAmt,
  252. sum(cnysoamt) cnysoamt,
  253. sum(bcPoamt) AS bcPoamt,
  254. sum(costFeeAmt) costFeeAmt,
  255. sum(provFeeAmt) provFeeAmt
  256. FROM "settleProdDtl"
  257. WHERE IFNULL("del_flag", 0) <> 1
  258. GROUP BY sono,
  259. rid,
  260. inTaxRate) spd
  261. ON ss."id" = spd."rid"
  262. LEFT JOIN (SELECT sourceid,
  263. sum(poamt) AS poamt,
  264. sum(ntPoamt) AS ntPoamt
  265. FROM gg_all
  266. GROUP BY sourceid) gg
  267. ON gg.sourceid = ss.id
  268. LEFT JOIN rate_temp rtmp
  269. ON rtmp.fdate = TO_CHAR(ss."feebackDate", 'YYYY-MM')
  270. WHERE 1 = 1
  271. AND ifnull(ss."del_flag", 0) <> 1
  272. AND SS."fours" NOT IN ('QILU',
  273. 'ELD')
  274. AND ss."placed" = 2
  275. AND ss."fmodalid" = '36'
  276. AND ss."impInvoiceStatus" = 'E' -- ${if(len(date_select) == 0, "", " AND ss.feebackDate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")}
  277. --AND spd.sono = 'S52090260002-S'
  278. GROUP BY spd."sono",
  279. ss."curcy"
  280. union
  281. SELECT a."sono",
  282. a."curcy",
  283. a.soQty,
  284. a.cnyntSoAmt AS cnyntSoAmt,
  285. a.cnySoAmt AS cnysoamt,
  286. b.cnyntpoamt AS cnypoamt,
  287. b.cnyntpoamt AS cnyntPoamt,
  288. 0 AS cnyFeeAmt,
  289. a.usdntSoAmt AS usdntSoAmt,
  290. a.usdSoAmt AS usdsoamt,
  291. b.usdntpoamt AS usdpoamt,
  292. b.usdntpoamt AS usdntPoamt,
  293. 0 AS usdFeeAmt
  294. FROM jingwai_so a
  295. LEFT JOIN jingwai_po b
  296. ON a.pono = b.pono
  297. and a.sono = b.sono
  298. )
  299. ,
  300. -- 财务费用
  301. caiwufeiyong AS
  302. (SELECT b."pono",
  303. b."sono",
  304. sum(
  305. CASE
  306. WHEN b."feeCd" IN ('10007005',
  307. '10007006',
  308. '10007031')
  309. AND ifnull(a."FMBCA1Status", '') = '抛账成功'
  310. THEN
  311. CASE
  312. WHEN a."curcy" = 'USD'
  313. THEN b."appAmt" * rtmp.rate
  314. ELSE b."appAmt"
  315. END
  316. ELSE 0
  317. END) AS cnyjingwaizijin,
  318. sum(
  319. CASE
  320. WHEN b."feeCd" IN ('10007005',
  321. '10007006',
  322. '10007031')
  323. AND ifnull(a."FMBCA1Status", '') = '抛账成功'
  324. THEN
  325. CASE
  326. WHEN a."curcy" = 'USD'
  327. THEN b."appAmt"
  328. ELSE b."appAmt" / rtmp.rate
  329. END
  330. ELSE 0
  331. END) AS usdjingwaizijin,
  332. sum(
  333. CASE
  334. WHEN b."feeCd" IN ('10007001',
  335. '10007004')
  336. AND ifnull(a."FMBCA1Status", '') = '抛账成功'
  337. THEN
  338. CASE
  339. WHEN a."curcy" = 'USD'
  340. THEN b."appAmt" * rtmp.rate
  341. ELSE b."appAmt"
  342. END
  343. ELSE 0
  344. END) AS cnyshouxin,
  345. sum(
  346. CASE
  347. WHEN b."feeCd" IN ('10007001',
  348. '10007004')
  349. AND ifnull(a."FMBCA1Status", '') = '抛账成功'
  350. THEN
  351. CASE
  352. WHEN a."curcy" = 'USD'
  353. THEN b."appAmt"
  354. ELSE b."appAmt" / rtmp.rate
  355. END
  356. ELSE 0
  357. END) AS usdshouxin,
  358. sum(
  359. CASE
  360. WHEN b."feeCd" IN ('10019001',
  361. '10019004',
  362. '10019005',
  363. '10019006')
  364. THEN
  365. CASE
  366. WHEN a."curcy" = 'USD'
  367. THEN b."appAmt" * rtmp.rate
  368. ELSE b."appAmt"
  369. END
  370. WHEN b."feeCd" IN ('10019002',
  371. '10019003')
  372. THEN
  373. CASE
  374. WHEN a."curcy" = 'USD'
  375. THEN b."appAmt" * rtmp.rate * -1
  376. ELSE b."appAmt" * -1
  377. END
  378. ELSE 0
  379. END) AS cnyhuiduisunyi,
  380. sum(
  381. CASE
  382. WHEN b."feeCd" IN ('10019001',
  383. '10019004',
  384. '10019005',
  385. '10019006')
  386. THEN
  387. CASE
  388. WHEN a."curcy" = 'USD'
  389. THEN b."appAmt"
  390. ELSE b."appAmt" / rtmp.rate
  391. END
  392. WHEN b."feeCd" IN ('10019002',
  393. '10019003')
  394. THEN
  395. CASE
  396. WHEN a."curcy" = 'USD'
  397. THEN b."appAmt" * -1
  398. ELSE b."appAmt" / rtmp.rate * -1
  399. END
  400. ELSE 0
  401. END) AS usdhuiduisunyi
  402. FROM "PayMgrctrl" a
  403. LEFT JOIN "paystockdtl" b
  404. ON a."id" = b."rid"
  405. LEFT JOIN rate_temp rtmp
  406. ON rtmp.fdate = TO_CHAR(a."feebackDate", 'YYYY-MM')
  407. WHERE 1 = 1
  408. AND IFNULL(a."del_flag", 0) <> 1
  409. AND IFNULL(b."del_flag", 0) <> 1
  410. AND a."fmodalid" in ('617',
  411. '16')
  412. AND !(b."pono" IS NULL
  413. AND b."sono" IS NULL )
  414. GROUP BY b."pono",
  415. b."sono"
  416. )
  417. ,
  418. caiwufeiyong_all AS
  419. (SELECT a.sono,
  420. a.pono,
  421. ifnull(b.cnyjingwaizijin, 0) + ROUND(ifnull(c.cnyjingwaizijin, 0) * a.soContrQty / a.poContrQty, 2) as cnyjingwaizijin,
  422. ifnull(b.cnyshouxin, 0) + ROUND(ifnull(c.cnyshouxin, 0) * a.soContrQty / a.poContrQty, 2) as cnyshouxin,
  423. ifnull(b.cnyhuiduisunyi, 0) + ROUND(ifnull(c.cnyhuiduisunyi, 0) * a.soContrQty / a.poContrQty, 2) as cnyhuiduisunyi,
  424. ifnull(b.usdjingwaizijin, 0) + ROUND(ifnull(c.usdjingwaizijin, 0) * a.soContrQty / a.poContrQty, 2) as usdjingwaizijin,
  425. ifnull(b.usdshouxin, 0) + ROUND(ifnull(c.usdshouxin, 0) * a.soContrQty / a.poContrQty, 2) as usdshouxin,
  426. ifnull(b.usdhuiduisunyi, 0) + ROUND(ifnull(c.usdhuiduisunyi, 0) * a.soContrQty / a.poContrQty, 2) as usdhuiduisunyi
  427. FROM so_pocontr a
  428. LEFT JOIN (SELECT sono,
  429. sum(usdjingwaizijin) as usdjingwaizijin,
  430. sum(usdshouxin) as usdshouxin,
  431. sum(usdhuiduisunyi) as usdhuiduisunyi,
  432. sum(cnyjingwaizijin) as cnyjingwaizijin,
  433. sum(cnyshouxin) as cnyshouxin,
  434. sum(cnyhuiduisunyi) as cnyhuiduisunyi
  435. FROM caiwufeiyong
  436. GROUP BY sono) B
  437. ON a.sono = b.sono
  438. LEFT JOIN caiwufeiyong c
  439. ON a.pono = c.pono
  440. AND IFNULL(c.sono, '') = ''
  441. )
  442. ,
  443. -- 保证金收款金额
  444. sc_ctmarAmt as
  445. (SELECT a."sono",
  446. sum("claimAmt") AS claimAmt
  447. FROM breceiptdtl a
  448. JOIN breceiptctrl b
  449. ON a.rid = b.id
  450. WHERE IFNULL(b.del_flag, 0) = 0
  451. AND IFNULL(a.del_flag, 0) = 0
  452. AND b.fmodalid = 19 -- ${if(len(date_select) == 0, "", " AND b.rcptDate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")}
  453. --AND b.rcptDate < TO_DATE('${date_select}'||'-01', 'YYYY-MM-DD')
  454. AND a.kxlx IN ('保证金')
  455. GROUP BY a.sono
  456. )
  457. ,
  458. -- 资金使用成本
  459. zjshy_cb_jn AS
  460. (SELECT sono,
  461. SUM(days) AS days,
  462. SUM(xh_CnyAamt) AS xh_CnyAamt,
  463. SUM(pj_CnyAamt) AS pj_CnyAamt
  464. FROM (SELECT vfucrd.sono,
  465. SUM(vfucrd.days) AS days,
  466. SUM(vfucrd.CnyAamt) AS xh_CnyAamt,
  467. 0 AS pj_CnyAamt
  468. FROM ( SELECT sono,
  469. jxdate,
  470. SUM(jxfcat * interAmt) AS CnyAamt,
  471. MAX(
  472. CASE
  473. WHEN interAmt <> 0
  474. THEN jxfcat * fundOccuDays
  475. ELSE 0
  476. END ) AS days
  477. FROM bizInterDtlDay_Cw_close
  478. WHERE 1 = 1
  479. AND "jxType" = '常规货款' -- ${if(len(date_select) == 0, "", " AND jxdate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")}
  480. --AND sono= 'S04794260001-S'
  481. --AND jxdate < TO_DATE('${date_select}'||'-01', 'YYYY-MM-DD')
  482. GROUP BY sono,
  483. jxdate ) vfucrd
  484. GROUP BY vfucrd.sono
  485. UNION
  486. SELECT bizCw.sono,
  487. 0 AS days,
  488. 0 AS xh_CnyAamt,
  489. SUM(bizCw.jxfcat * bizCw.interAmt) AS pj_CnyAamt
  490. FROM bizInterDtlDay_Cw_close bizCw
  491. LEFT JOIN "salesContract" sc
  492. ON bizCw."sono" = sc."fno"
  493. AND IFNULL(sc."del_flag", 0) <> 1
  494. WHERE 1 = 1
  495. AND "jxType" = '承兑汇票'
  496. -- 临时增加之后贴现的做好了可以直接去掉
  497. AND !(sc."fours" = 'RZGM'
  498. AND sc."serviceType" = '代理-主业进口') -- ${if(len(date_select) == 0, "", " AND jxdate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")}
  499. --AND sono like 'S04794260001-S'
  500. --AND jxdate < TO_DATE('${date_select}'||'-01', 'YYYY-MM-DD')
  501. GROUP BY bizCw.sono)
  502. GROUP BY sono
  503. )
  504. ,
  505. rz_date AS
  506. ( SELECT IFNULL(a."poOrder", a.pono) AS pono,
  507. max(TO_NUMBER(b.finDays)) as finDays
  508. FROM financingReq_Total a
  509. LEFT JOIN breceiptdtl_rz b
  510. ON a.id = b.rid
  511. WHERE ifnull(a."del_flag", 0) <> 1
  512. AND ifnull(b."del_flag", 0) <> 1
  513. AND ifnull(b.finDays, 0 ) > 0
  514. group by IFNULL(a."poOrder", a.pono)
  515. )
  516. ,
  517. --资金使用成本占资金额
  518. zjzhanzi as
  519. (SELECT sono,
  520. sum(interPriAmt) as interPriAmt
  521. FROM (SELECT sono,
  522. jxdate,
  523. SUM(jxfcat * interAmt) AS CnyAamt,
  524. SUM(jxfcat * interAmt),
  525. sum(jxfcat * "interPriAmt" * fundOccuDays) / 10000 AS interPriAmt,
  526. MAX(
  527. CASE
  528. WHEN interAmt <> 0
  529. THEN jxfcat * fundOccuDays
  530. ELSE 0
  531. END ) AS days
  532. FROM bizInterDtlDay_Cw_close
  533. WHERE 1 = 1
  534. AND "jxType" = '常规货款' -- ${if(len(date_select) == 0, "", " AND jxdate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")}
  535. --AND jxdate < TO_DATE('${date_select}'||'-01', 'YYYY-MM-DD')
  536. GROUP BY sono,
  537. jxdate)
  538. GROUP BY sono
  539. ORDER BY sono
  540. )
  541. ,
  542. zjshy_cb AS
  543. (SELECT a.pono,
  544. CASE
  545. WHEN ifnull(b.rz_num, 0) <> 0
  546. AND a.foursname IN ('齐鲁钢铁有限公司',
  547. '埃尔顿发展有限公司')
  548. THEN e.finDays
  549. ELSE d.days
  550. END AS days,
  551. CASE
  552. WHEN ifnull(b.rz_num, 0) <> 0
  553. AND a.foursname IN ('齐鲁钢铁有限公司',
  554. '埃尔顿发展有限公司')
  555. THEN c.usdjingwaizijin
  556. ELSE d.xh_CnyAamt
  557. END AS CnyAamt
  558. FROM purchaseContract a
  559. LEFT JOIN (SELECT fr.pono,
  560. count(fr.pono) AS rz_num
  561. FROM financingReq fr
  562. WHERE IFNULL(fr.del_flag, 0) <> 1
  563. GROUP BY fr.pono) b
  564. ON a.pono = b.pono
  565. LEFT JOIN caiwufeiyong_all c
  566. ON a.pono = c.pono
  567. LEFT JOIN zjshy_cb_jn d
  568. ON a.sono = d.sono
  569. LEFT JOIN rz_date e
  570. ON a.pono = e.pono
  571. WHERE IFNULL(del_flag, 0) <> 1
  572. AND placed = 2
  573. )
  574. ,
  575. free_so as
  576. (SELECT sono,
  577. COUNT(*) AS fee_count, -- 费用笔数
  578. SUM(poamt) AS total_poamt, -- 原币总额
  579. SUM(ntCnyAmt) AS total_ntCnyAmt, -- 不含税人民币总额
  580. SUM(ntUsdAmt) AS total_ntUsdAmt -- 不含税美元总额
  581. from (SELECT
  582. -- 优先用销售合同号,没有则通过采购合同号关联查找
  583. COALESCE(dtl."sono", rel.sono) AS sono,
  584. dtl."feeCd",
  585. dtl."feeNm",
  586. dtl."poamt",
  587. dtl."inTaxRate",
  588. ROUND((dtl."cnypoamt" / (1 + dtl."inTaxRate" / 100)), 2) AS ntCnyAmt,
  589. ROUND((dtl."usdpoamt" / (1 + dtl."inTaxRate" / 100)), 2) AS ntUsdAmt
  590. FROM "purMultiSettle" main
  591. INNER JOIN "purStlProdDtl" dtl
  592. ON main."id" = dtl."rid"
  593. LEFT JOIN so_pocontr rel
  594. ON dtl."pono" = rel.pono
  595. WHERE IFNULL(main."del_flag", 0) <> 1
  596. AND IFNULL(dtl."del_flag", 0) <> 1
  597. AND IFNULL(main."placed", 0) = 2
  598. AND main."fmodalid" = '300'
  599. AND main."cateName" NOT IN ('代收代付类') -- ${if(len(date_select) == 0, "", " AND main.feebackDate <= ADD_MONTHS(TO_DATE('" + date_select + "', 'YYYY-MM'), 1)")}
  600. --AND main."feebackDate" < TO_DATE('${date_select}'||'-01', 'YYYY-MM-DD')
  601. AND (dtl."pono" IS NOT NULL
  602. OR dtl."sono" IS NOT NULL) )
  603. GROUP BY sono
  604. )
  605. ,
  606. date_all_before AS
  607. ( SELECT distinct a.sono AS 销售合同号,
  608. --a.pono AS 采购合同号,
  609. a."foursname" AS 我方名称,
  610. a."serviceType" AS 业务类型,
  611. a."curcy" AS 币别,
  612. a."bizProductType",
  613. a."ctName" as 客户名称,
  614. b.soQty AS 销售数量,
  615. a.fours,
  616. a.cpal,a.fclosed,
  617. case
  618. when a.curcy_USE = 'USD'
  619. THEN b.usdntSoAmt
  620. ELSE b.cnyntSoAmt
  621. END AS 销售金额不含税,
  622. a.curcy_USE,
  623. case
  624. when a.curcy_USE = 'USD'
  625. THEN b.usdsoamt
  626. ELSE b.cnySoAmt
  627. END AS 销售金额含税,
  628. case
  629. when a.curcy_USE = 'USD'
  630. THEN b.usdntPoamt
  631. ELSE b.cnyntPoAmt
  632. END AS 采购金额不含税,
  633. case
  634. when a.curcy_USE = 'USD'
  635. THEN b.usdpoamt
  636. ELSE b.cnypoAmt
  637. END AS 采购金额含税,
  638. case
  639. when a."foursname" IN ('齐鲁钢铁有限公司',
  640. '埃尔顿发展有限公司')
  641. THEN
  642. case
  643. when a.curcy_USE = 'USD'
  644. THEN IFNULL(c.usdshouxin, 0) + IFNULL(C.usdjingwaizijin, 0)
  645. ELSE IFNULL(c.cnyshouxin, 0) + IFNULL(c.cnyjingwaizijin, 0)
  646. END
  647. ELSE
  648. case
  649. when a.curcy_USE = 'USD'
  650. THEN IFNULL(c.usdshouxin, 0)
  651. ELSE IFNULL(c.cnyshouxin, 0)
  652. END
  653. END AS 银行授信,
  654. case
  655. when a.curcy_USE = 'USD'
  656. THEN IFNULL(c.usdhuiduisunyi, 0)
  657. ELSE IFNULL(c.cnyhuiduisunyi, 0)
  658. END AS 汇兑损益,
  659. round(IFNULL(d.claimAmt, 0), 2) as 保证金,
  660. IFNULL(a."stampTaxAmt", 0) AS 印花税,
  661. case
  662. when a."foursname" IN ('齐鲁钢铁有限公司',
  663. '埃尔顿发展有限公司')
  664. then 0
  665. ELSE
  666. case
  667. when a."contractName" in('钢材加工废料')
  668. then 0
  669. else ifnull(e.days, 0)
  670. end
  671. END days,
  672. case
  673. when a."foursname" IN ('齐鲁钢铁有限公司',
  674. '埃尔顿发展有限公司')
  675. then 0
  676. else
  677. case
  678. when a."contractName" in('钢材加工废料')
  679. then 0
  680. else ifnull(e.xh_CnyAamt, 0)
  681. end
  682. END xh_CnyAamt,
  683. case
  684. when a."foursname" IN ('齐鲁钢铁有限公司',
  685. '埃尔顿发展有限公司')
  686. then 0
  687. else
  688. case
  689. when a."contractName" in('钢材加工废料')
  690. then 0
  691. else ifnull(e.pj_CnyAamt, 0)
  692. end
  693. END pj_CnyAamt,
  694. case
  695. when a.fours IN ('QILU',
  696. 'ELD')
  697. then
  698. case
  699. when a.curcy_USE = 'USD'
  700. then f.total_ntUsdAmt
  701. else f.total_ntCnyAmt
  702. end
  703. else
  704. case
  705. when a.curcy_USE = 'USD'
  706. then b.usdFeeAmt
  707. else b.cnyFeeamt
  708. END
  709. END as 费用,
  710. a.ywFoursName 业务我方名称,
  711. A."create_by_name",
  712. a.DEPT_NAME,
  713. case
  714. when a."foursname" IN ('齐鲁钢铁有限公司',
  715. '埃尔顿发展有限公司')
  716. then 0
  717. else IFNULL(g.interPriAmt, 0)
  718. end AS interPriAmt,
  719. a."totalCnyAmt"
  720. FROM "so_pocontr" a
  721. LEFT JOIN sale_amt b
  722. ON a.sono = b.sono
  723. LEFT JOIN caiwufeiyong_all c
  724. ON a.sono = c.sono
  725. AND a.pono = IFNULL(c.pono, a.pono)
  726. LEFT JOIN sc_ctmarAmt d
  727. ON a.sono = d.sono
  728. LEFT JOIN zjshy_cb_jn e
  729. ON a.sono = e.sono
  730. left join free_so f
  731. on a.sono = f.sono
  732. left join zjzhanzi g
  733. on a.sono = g.sono
  734. WHERE 1 = 1
  735. AND b.soQty IS NOT NULL
  736. AND a.fdate >= '2026-01-01'
  737. AND IFNULL(A."isinitDate", '') <> '是'
  738. --AND IFNULL(a."fclosed",0) = 1-- 此处补充合同关闭逻辑
  739. order by a.sono
  740. ), data_final AS ( SELECT DISTINCT *,
  741. CASE
  742. WHEN fours IN ('QILU',
  743. 'ELD')
  744. THEN (((((("销售金额不含税" - "采购金额不含税") - "IFNULL"("印花税", 0)) - "IFNULL"("银行授信", 0)) - "IFNULL"("汇兑损益", 0)) - "IFNULL"("费用", 0)) - "IFNULL"(xh_CnyAamt, 0)- "IFNULL"(pj_CnyAamt, 0))
  745. ELSE ((((("销售金额不含税" - "采购金额不含税") - "IFNULL"("印花税", 0)) - "IFNULL"("银行授信", 0)) - "IFNULL"("汇兑损益", 0)) - "IFNULL"(xh_CnyAamt, 0)- "IFNULL"(pj_CnyAamt, 0))
  746. END AS "利润",
  747. CASE
  748. WHEN "销售金额不含税" = 0
  749. THEN 0
  750. ELSE
  751. CASE
  752. WHEN fours IN ('QILU',
  753. 'ELD')
  754. THEN ((((((("销售金额不含税" - "采购金额不含税") - "IFNULL"("印花税", 0)) - "IFNULL"("银行授信", 0)) - "IFNULL"("汇兑损益", 0)) - "IFNULL"("费用", 0)) - "IFNULL"(xh_CnyAamt, 0)- "IFNULL"(pj_CnyAamt, 0)) / "销售金额不含税")
  755. ELSE (((((("销售金额不含税" - "采购金额不含税") - "IFNULL"("印花税", 0)) - "IFNULL"("银行授信", 0)) - "IFNULL"("汇兑损益", 0)) - "IFNULL"(xh_CnyAamt, 0)- "IFNULL"(pj_CnyAamt, 0)) / "销售金额不含税")
  756. END
  757. END AS "销售利润",
  758. CASE
  759. WHEN ("采购金额含税" = 0
  760. OR days = 0 )
  761. THEN 0
  762. ELSE (((("销售金额含税" - "采购金额含税") / "采购金额含税") / days) * 360)
  763. END AS "年化资金收益率",
  764. CASE
  765. WHEN (("采购金额含税" - "保证金") = 0
  766. OR days = 0 )
  767. THEN 0
  768. ELSE
  769. CASE
  770. WHEN fours IN ('QILU',
  771. 'ELD')
  772. THEN ((((((((("销售金额不含税" - "采购金额不含税") - "IFNULL"("印花税", 0)) - "IFNULL"("银行授信", 0)) - "IFNULL"("汇兑损益", 0)) - "IFNULL"("费用", 0)) - "IFNULL"(xh_CnyAamt, 0)- "IFNULL"(pj_CnyAamt, 0)) / ("采购金额含税" - "保证金")) / days) * 360)
  773. ELSE (((((((("销售金额不含税" - "采购金额不含税") - "IFNULL"("印花税", 0)) - "IFNULL"("银行授信", 0)) - "IFNULL"("汇兑损益", 0)) - "IFNULL"(xh_CnyAamt, 0)- "IFNULL"(pj_CnyAamt, 0)) / ("采购金额含税" - "保证金")) / days) * 360)
  774. END
  775. END AS "年化业务收益率",
  776. case
  777. when days <> 0
  778. then interPriAmt / days
  779. else 0
  780. end as 平均占资金额,
  781. case
  782. when days <> 0
  783. then interPriAmt * 10000 / days / totalCnyAmt
  784. else 0
  785. END as "平均占资/销售金额"
  786. FROM date_all_before )
  787. SELECT v."销售合同号",
  788. v."cpal",
  789. v."我方名称",
  790. v."业务类型",
  791. v."币别",
  792. v."bizProductType",
  793. v."客户名称",
  794. v."销售数量",
  795. v."销售金额不含税",
  796. v."销售金额含税",
  797. v."采购金额不含税",
  798. v."采购金额含税",
  799. v."银行授信",
  800. v."汇兑损益",
  801. v."保证金",
  802. v."印花税",
  803. v."days",
  804. v."pj_CnyAamt",
  805. v.xh_CnyAamt,
  806. v."费用",
  807. v."业务我方名称",
  808. v."create_by_name",
  809. v."fours",
  810. v."fclosed",
  811. v.curcy_USE,
  812. v."利润",
  813. v."销售利润",
  814. v."年化资金收益率",
  815. v."年化业务收益率",
  816. v.interPriAmt as "现汇占用资金金额(万元·天)",
  817. v.平均占资金额,
  818. v."平均占资/销售金额",
  819. CASE
  820. WHEN COALESCE(v.days, 0) < 15
  821. THEN
  822. CASE
  823. WHEN COALESCE(v."销售利润", 0) <= 0
  824. THEN '无效'
  825. WHEN (COALESCE(v."销售利润", 0) > 0
  826. AND COALESCE(v."销售利润", 0) <= 0.003 )
  827. THEN '低效'
  828. WHEN (COALESCE(v."销售利润", 0) > 0.003
  829. AND COALESCE(v."销售利润", 0) <= 0.006 )
  830. THEN '基效'
  831. WHEN (COALESCE(v."销售利润", 0) > 0.006
  832. AND COALESCE(v."销售利润", 0) <= 0.01 )
  833. THEN '中效'
  834. WHEN (COALESCE(v."销售利润", 0) > 0.01
  835. AND COALESCE(v."销售利润", 0) <= 0.02 )
  836. THEN '高效'
  837. WHEN COALESCE(v."销售利润", 0) > 0.02
  838. THEN '卓效'
  839. ELSE '无效'
  840. END
  841. WHEN COALESCE(v.days, 0) >= 15
  842. THEN
  843. CASE
  844. WHEN COALESCE(v."年化业务收益率", 0) > 0.09
  845. THEN '卓效'
  846. WHEN (COALESCE(v."年化业务收益率", 0) > 0.065
  847. AND COALESCE(v."年化业务收益率", 0) <= 0.09 )
  848. THEN '高效'
  849. WHEN COALESCE(v."年化业务收益率", 0) <= 0.065
  850. THEN
  851. CASE
  852. WHEN COALESCE(v."年化资金收益率", 0) <= 0.05
  853. THEN '无效'
  854. WHEN (COALESCE(v."年化资金收益率", 0) > 0.05
  855. AND COALESCE(v."年化资金收益率", 0) <= 0.06 )
  856. THEN '低效'
  857. WHEN (COALESCE(v."年化资金收益率", 0) > 0.06
  858. AND COALESCE(v."年化资金收益率", 0) <= 0.065 )
  859. THEN '基效'
  860. WHEN COALESCE(v."年化资金收益率", 0) > 0.065
  861. THEN '中效'
  862. ELSE '无效'
  863. END
  864. ELSE '无效'
  865. END
  866. ELSE '无效'
  867. END AS "efficiency_level"
  868. FROM data_final AS v
  869. ORDER BY v.days DESC;