rpt5012_result_query.lwm 40.3 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
<?xml version="1.0" encoding="UTF-8"?>
<!--
    $Author: WangYu  
    $Date: 2014-4-25 上午09:30:21  
    $Revision: 1.0  
    $Purpose: 
-->
<bm:model xmlns:bm="http://www.leaf-framework.org/schema/bm" needAccessControl="false">
    <bm:operations>
        <bm:operation name="query">
            <bm:query-sql><![CDATA[
12
                select
13

14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
                    (SELECT m.extra_nam
                     FROM hls_bp_master m
                     WHERE m.bp_id = ct.bp_id_agent_level1)                                                                       agent_extra_name,
                    --代理店简称
                    (SELECT m.bp_name
                     FROM hls_bp_master m
                     WHERE m.bp_id =
                           ct.bp_id_tenant)        AS                                                                             bp_tenant_name,
                    --承租人名称
                    ct.contract_number,
                    --合同编号
                    to_char(ct.lease_start_date,
                            'yyyy-mm-dd')                                                                                         lease_start_date,
                    --租赁期开始日
                    (SELECT ccli.modelcd
                     FROM con_contract_lease_item ccli
                     WHERE ccli.contract_id =
                           ct.contract_id)                                                                                        modelcd,
                    --机型
                    (SELECT nvl(i.machine_number,i.machine_number_70)
                     FROM con_contract_lease_item i
                     WHERE i.contract_id = ct.contract_id
                           AND i.equipment_type =
                               'MAIN')                                                                                            machine_number,
                    --机号
                    (NVL(ct.int_rate_display, 0) * 100 ||
                     '%')                                                                                                         int_rate_display,
                    --利率
                    ct.lease_times,
                    --租赁期间
                    (NVL(ct.down_payment_ratio, 0) * 100 ||
                     '%')                                                                                                         down_payment_ratio,
                    --首付比例
                    ct.lease_item_amount           as                                                                             lease_item_amount,
                    --设备款
                    NVL(ct.residual_value,
                        0)                                                                                                        residual_amount,
                    --留购金
                    NVL(ct.total_rental, 0) + NVL(ct.down_payment, 0) +
                    NVL(ct.residual_value,
                        0)                                                                                                        contract_amount,
                    --合同金额
                    NVL(ct.down_payment,
                        0)                                                                                                        down_payment,
                    --首付款
                    (case when ((CASE
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
                WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
                0
                ELSE
                ((SELECT SUM(ccw.due_amount)
                FROM con_contract_cashflow ccw
                WHERE ccw.contract_id = ct.contract_id
                AND ccw.cf_item IN (1, 200, 250)
                AND ccw.cf_status = 'RELEASE') -
                nvl((SELECT SUM(nvl(cw.write_off_due_amount, 0))
                FROM csh_transaction cn, csh_write_off cw
                WHERE cw.csh_transaction_id = cn.transaction_id
                AND cw.cf_item IN (1, 200, 250)
                AND cw.contract_id = ct.contract_id
                AND NVL(cw.reversed_flag, 'N') = 'N'
                AND trunc(cn.transaction_date) <=
                trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                0))
77 78
                END)<=0) then 0 else 
								(CASE
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
                WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
                0
                ELSE
                ((SELECT SUM(ccw.due_amount)
                FROM con_contract_cashflow ccw
                WHERE ccw.contract_id = ct.contract_id
                AND ccw.cf_item IN (1, 200, 250)
                AND ccw.cf_status = 'RELEASE') -
                nvl((SELECT SUM(nvl(cw.write_off_due_amount, 0))
                FROM csh_transaction cn, csh_write_off cw
                WHERE cw.csh_transaction_id = cn.transaction_id
                AND cw.cf_item IN (1, 200, 250)
                AND cw.contract_id = ct.contract_id
                AND NVL(cw.reversed_flag, 'N') = 'N'
                AND trunc(cn.transaction_date) <=
                trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                0))
                END)
97 98 99 100 101 102 103 104 105 106
								end) month_due_amount,
 --当月末应收款余额(合计)
 (CASE
   WHEN (CASE
          WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
           0
          ELSE
           ((SELECT SUM(ccw.due_amount)
               FROM con_contract_cashflow ccw
              WHERE ccw.contract_id = ct.contract_id
107 108
                AND ccw.cf_item IN (1, 200, 250)
                AND ccw.cf_status = 'RELEASE') -
109 110 111 112 113 114 115 116
           nvl((SELECT SUM(nvl(cw.write_off_due_amount, 0))
                  FROM csh_transaction cn, csh_write_off cw
                 WHERE cw.csh_transaction_id = cn.transaction_id
                   AND cw.cf_item IN (1, 200, 250)
                   AND cw.contract_id = ct.contract_id
                   AND NVL(cw.reversed_flag, 'N') = 'N'
                   AND trunc(cn.transaction_date) <=
                       trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
117
                0) - nvl((SELECT SUM((nvl(tt.transaction_amount, 0) -
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
                                     nvl(tt.write_off_amount, 0) -
                                     nvl(tt.returned_amount, 0)))
                            FROM csh_transaction tt
                           WHERE tt.transaction_type = 'DEPOSIT'
                             AND tt.deposit_trans_type = 'rent_deposit'
                             AND tt.ref_contract_id = ct.contract_id
                             AND tt.transaction_date <=
                                 trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                          0))
        END) <= 0 THEN
    0
   ELSE
    (CASE
      WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
       0
      ELSE
       ((SELECT SUM(ccw.due_amount)
           FROM con_contract_cashflow ccw
          WHERE ccw.contract_id = ct.contract_id
            AND ccw.cf_item IN (1, 200, 250)
            AND ccw.cf_status = 'RELEASE') -
       nvl((SELECT SUM(nvl(cw.write_off_due_amount, 0))
              FROM csh_transaction cn, csh_write_off cw
             WHERE cw.csh_transaction_id = cn.transaction_id
               AND cw.cf_item IN (1, 200, 250)
               AND cw.contract_id = ct.contract_id
               AND NVL(cw.reversed_flag, 'N') = 'N'
               AND trunc(cn.transaction_date) <=
                   trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
            0) - nvl((SELECT SUM((nvl(tt.transaction_amount, 0) -
                                 nvl(tt.write_off_amount, 0) -
                                 nvl(tt.returned_amount, 0)))
                        FROM csh_transaction tt
                       WHERE tt.transaction_type = 'DEPOSIT'
                         AND tt.deposit_trans_type = 'rent_deposit'
                         AND tt.ref_contract_id = ct.contract_id
                         AND tt.transaction_date <=
                             trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                      0))
    END)
 END) month_due_amount_after,
 --当月末应收款余额(合计)保证金后
 (case when ((CASE
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
                WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
                0
                ELSE
                ((SELECT SUM(ccw.principal)
                FROM con_contract_cashflow ccw
                WHERE ccw.contract_id = ct.contract_id
                AND ccw.cf_item IN (1, 200, 250)
                AND ccw.cf_status = 'RELEASE') -
                nvl((SELECT SUM(nvl(cw.write_off_principal, 0))
                FROM csh_transaction cn, csh_write_off cw
                WHERE cw.csh_transaction_id = cn.transaction_id
                AND cw.cf_item IN (1, 200, 250)
                AND cw.contract_id = ct.contract_id
                AND NVL(cw.reversed_flag, 'N') = 'N'
                AND trunc(cn.transaction_date) <=
                trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                0))
178 179
                END) <=0) then 0 else 
								(CASE
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
                WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
                0
                ELSE
                ((SELECT SUM(ccw.principal)
                FROM con_contract_cashflow ccw
                WHERE ccw.contract_id = ct.contract_id
                AND ccw.cf_item IN (1, 200, 250)
                AND ccw.cf_status = 'RELEASE') -
                nvl((SELECT SUM(nvl(cw.write_off_principal, 0))
                FROM csh_transaction cn, csh_write_off cw
                WHERE cw.csh_transaction_id = cn.transaction_id
                AND cw.cf_item IN (1, 200, 250)
                AND cw.contract_id = ct.contract_id
                AND NVL(cw.reversed_flag, 'N') = 'N'
                AND trunc(cn.transaction_date) <=
                trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                0))
                END)
198 199 200 201 202 203 204 205 206 207
								end) month_due_principal,
 --当月末本金余额(合计)
 (CASE
   WHEN (CASE
          WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
           0
          ELSE
           ((SELECT SUM(ccw.principal)
               FROM con_contract_cashflow ccw
              WHERE ccw.contract_id = ct.contract_id
208 209
                AND ccw.cf_item IN (1, 200, 250)
                AND ccw.cf_status = 'RELEASE') -
210 211 212 213 214 215 216 217
           nvl((SELECT SUM(nvl(cw.write_off_principal, 0))
                  FROM csh_transaction cn, csh_write_off cw
                 WHERE cw.csh_transaction_id = cn.transaction_id
                   AND cw.cf_item IN (1, 200, 250)
                   AND cw.contract_id = ct.contract_id
                   AND NVL(cw.reversed_flag, 'N') = 'N'
                   AND trunc(cn.transaction_date) <=
                       trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
218
                0) - nvl((SELECT SUM((nvl(tt.transaction_amount, 0) -
219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261
                                     nvl(tt.write_off_amount, 0) -
                                     nvl(tt.returned_amount, 0)))
                            FROM csh_transaction tt
                           WHERE tt.transaction_type = 'DEPOSIT'
                             AND tt.deposit_trans_type = 'rent_deposit'
                             AND tt.ref_contract_id = ct.contract_id
                             AND tt.transaction_date <=
                                 trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                          0))
        END) <= 0 THEN
    0
   ELSE
    (CASE
      WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
       0
      ELSE
       ((SELECT SUM(ccw.principal)
           FROM con_contract_cashflow ccw
          WHERE ccw.contract_id = ct.contract_id
            AND ccw.cf_item IN (1, 200, 250)
            AND ccw.cf_status = 'RELEASE') -
       nvl((SELECT SUM(nvl(cw.write_off_principal, 0))
              FROM csh_transaction cn, csh_write_off cw
             WHERE cw.csh_transaction_id = cn.transaction_id
               AND cw.cf_item IN (1, 200, 250)
               AND cw.contract_id = ct.contract_id
               AND NVL(cw.reversed_flag, 'N') = 'N'
               AND trunc(cn.transaction_date) <=
                   trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
            0) - nvl((SELECT SUM((nvl(tt.transaction_amount, 0) -
                                 nvl(tt.write_off_amount, 0) -
                                 nvl(tt.returned_amount, 0)))
                        FROM csh_transaction tt
                       WHERE tt.transaction_type = 'DEPOSIT'
                         AND tt.deposit_trans_type = 'rent_deposit'
                         AND tt.ref_contract_id = ct.contract_id
                         AND tt.transaction_date <=
                             trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                      0))
    END)
 END) month_due_principal_after,
 --当月末本金余额(合计)保证金后
 (case when ((CASE
262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278
                WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
                0
                ELSE
                ((SELECT SUM(ccw.interest)
                FROM con_contract_cashflow ccw
                WHERE ccw.contract_id = ct.contract_id
                AND ccw.cf_item IN (1, 200, 250)
                AND ccw.cf_status = 'RELEASE') -
                nvl((SELECT SUM(nvl(cw.write_off_interest, 0))
                FROM csh_transaction cn, csh_write_off cw
                WHERE cw.csh_transaction_id = cn.transaction_id
                AND cw.cf_item IN (1, 200, 250)
                AND cw.contract_id = ct.contract_id
                AND NVL(cw.reversed_flag, 'N') = 'N'
                AND trunc(cn.transaction_date) <=
                trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                0))
279 280
                END) <=0) then 0 else 
								(CASE
281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297
                WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
                0
                ELSE
                ((SELECT SUM(ccw.interest)
                FROM con_contract_cashflow ccw
                WHERE ccw.contract_id = ct.contract_id
                AND ccw.cf_item IN (1, 200, 250)
                AND ccw.cf_status = 'RELEASE') -
                nvl((SELECT SUM(nvl(cw.write_off_interest, 0))
                FROM csh_transaction cn, csh_write_off cw
                WHERE cw.csh_transaction_id = cn.transaction_id
                AND cw.cf_item IN (1, 200, 250)
                AND cw.contract_id = ct.contract_id
                AND NVL(cw.reversed_flag, 'N') = 'N'
                AND trunc(cn.transaction_date) <=
                trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                0))
298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316
                END)
								end) month_interest,
 --当月末利息余额(合计)
 (CASE
   WHEN ((SELECT SUM((nvl(tt.transaction_amount, 0) -
                     nvl(tt.write_off_amount, 0) -
                     nvl(tt.returned_amount, 0)))
            FROM csh_transaction tt
           WHERE tt.transaction_type = 'DEPOSIT'
             AND tt.deposit_trans_type = 'rent_deposit'
             AND tt.ref_contract_id = ct.contract_id
             AND tt.transaction_date <=
                 trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))) - ((CASE
          WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
           0
          ELSE
           ((SELECT SUM(ccw.principal)
               FROM con_contract_cashflow ccw
              WHERE ccw.contract_id = ct.contract_id
317 318
                AND ccw.cf_item IN (1, 200, 250)
                AND ccw.cf_status = 'RELEASE') -
319 320 321 322 323 324 325 326
           nvl((SELECT SUM(nvl(cw.write_off_principal, 0))
                  FROM csh_transaction cn, csh_write_off cw
                 WHERE cw.csh_transaction_id = cn.transaction_id
                   AND cw.cf_item IN (1, 200, 250)
                   AND cw.contract_id = ct.contract_id
                   AND NVL(cw.reversed_flag, 'N') = 'N'
                   AND trunc(cn.transaction_date) <=
                       trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
327
                0))
328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387
        END))) > 0 THEN
    (CASE
      WHEN ((CASE
             WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
              0
             ELSE
              ((SELECT SUM(ccw.interest)
                  FROM con_contract_cashflow ccw
                 WHERE ccw.contract_id = ct.contract_id
                   AND ccw.cf_item IN (1, 200, 250)
                   AND ccw.cf_status = 'RELEASE') -
              nvl((SELECT SUM(nvl(cw.write_off_interest, 0))
                     FROM csh_transaction cn, csh_write_off cw
                    WHERE cw.csh_transaction_id = cn.transaction_id
                      AND cw.cf_item IN (1, 200, 250)
                      AND cw.contract_id = ct.contract_id
                      AND NVL(cw.reversed_flag, 'N') = 'N'
                      AND trunc(cn.transaction_date) <=
                          trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                   0))
           END) - (SELECT SUM((nvl(tt.transaction_amount, 0) -
                               nvl(tt.write_off_amount, 0) -
                               nvl(tt.returned_amount, 0)))
                      FROM csh_transaction tt
                     WHERE tt.transaction_type = 'DEPOSIT'
                       AND tt.deposit_trans_type = 'rent_deposit'
                       AND tt.ref_contract_id = ct.contract_id
                       AND tt.transaction_date <=
                           trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))) - (CASE
             WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
              0
             ELSE
              ((SELECT SUM(ccw.principal)
                  FROM con_contract_cashflow ccw
                 WHERE ccw.contract_id = ct.contract_id
                   AND ccw.cf_item IN (1, 200, 250)
                   AND ccw.cf_status = 'RELEASE') -
              nvl((SELECT SUM(nvl(cw.write_off_principal, 0))
                     FROM csh_transaction cn, csh_write_off cw
                    WHERE cw.csh_transaction_id = cn.transaction_id
                      AND cw.cf_item IN (1, 200, 250)
                      AND cw.contract_id = ct.contract_id
                      AND NVL(cw.reversed_flag, 'N') = 'N'
                      AND trunc(cn.transaction_date) <=
                          trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                   0))
           END)) <= 0 THEN
       0
      ELSE
       ((CASE
         WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
          0
         ELSE
          ((SELECT SUM(ccw.interest)
              FROM con_contract_cashflow ccw
             WHERE ccw.contract_id = ct.contract_id
               AND ccw.cf_item IN (1, 200, 250)
               AND ccw.cf_status = 'RELEASE') -
          nvl((SELECT SUM(nvl(cw.write_off_interest, 0))
                 FROM csh_transaction cn, csh_write_off cw
388
                WHERE cw.csh_transaction_id = cn.transaction_id
389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413
                  AND cw.cf_item IN (1, 200, 250)
                  AND cw.contract_id = ct.contract_id
                  AND NVL(cw.reversed_flag, 'N') = 'N'
                  AND trunc(cn.transaction_date) <=
                      trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
               0))
       END) -
       (SELECT SUM((nvl(tt.transaction_amount, 0) - nvl(tt.write_off_amount, 0) -
                    nvl(tt.returned_amount, 0)))
           FROM csh_transaction tt
          WHERE tt.transaction_type = 'DEPOSIT'
            AND tt.deposit_trans_type = 'rent_deposit'
            AND tt.ref_contract_id = ct.contract_id
            AND tt.transaction_date <= trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))) -
       (CASE
         WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
          0
         ELSE
          ((SELECT SUM(ccw.principal)
              FROM con_contract_cashflow ccw
             WHERE ccw.contract_id = ct.contract_id
               AND ccw.cf_item IN (1, 200, 250)
               AND ccw.cf_status = 'RELEASE') -
          nvl((SELECT SUM(nvl(cw.write_off_principal, 0))
                 FROM csh_transaction cn, csh_write_off cw
414
                WHERE cw.csh_transaction_id = cn.transaction_id
415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456
                  AND cw.cf_item IN (1, 200, 250)
                  AND cw.contract_id = ct.contract_id
                  AND NVL(cw.reversed_flag, 'N') = 'N'
                  AND trunc(cn.transaction_date) <=
                      trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
               0))
       END))
    END)
   ELSE
    (CASE
      WHEN (CASE
             WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
              0
             ELSE
              ((SELECT SUM(ccw.interest)
                  FROM con_contract_cashflow ccw
                 WHERE ccw.contract_id = ct.contract_id
                   AND ccw.cf_item IN (1, 200, 250)
                   AND ccw.cf_status = 'RELEASE') -
              nvl((SELECT SUM(nvl(cw.write_off_interest, 0))
                     FROM csh_transaction cn, csh_write_off cw
                    WHERE cw.csh_transaction_id = cn.transaction_id
                      AND cw.cf_item IN (1, 200, 250)
                      AND cw.contract_id = ct.contract_id
                      AND NVL(cw.reversed_flag, 'N') = 'N'
                      AND trunc(cn.transaction_date) <=
                          trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                   0))
           END) <= 0 THEN
       0
      ELSE
       (CASE
         WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
          0
         ELSE
          ((SELECT SUM(ccw.interest)
              FROM con_contract_cashflow ccw
             WHERE ccw.contract_id = ct.contract_id
               AND ccw.cf_item IN (1, 200, 250)
               AND ccw.cf_status = 'RELEASE') -
          nvl((SELECT SUM(nvl(cw.write_off_interest, 0))
                 FROM csh_transaction cn, csh_write_off cw
457
                WHERE cw.csh_transaction_id = cn.transaction_id
458 459 460 461 462 463 464 465 466 467 468
                  AND cw.cf_item IN (1, 200, 250)
                  AND cw.contract_id = ct.contract_id
                  AND NVL(cw.reversed_flag, 'N') = 'N'
                  AND trunc(cn.transaction_date) <=
                      trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
               0))
       END)
    END)
 END) month_interest_after,
 --当月末利息余额(合计)保证金后
  (CASE
469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486
                WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
                0
                ELSE
                ((SELECT SUM(ccw.due_amount)
                FROM con_contract_cashflow ccw
                WHERE ccw.contract_id = ct.contract_id
                AND ccw.cf_item IN (8)
                and ccw.cf_status = 'RELEASE') -
                nvl((SELECT SUM(nvl(cw.write_off_due_amount, 0))
                FROM csh_transaction cn, csh_write_off cw
                WHERE cw.csh_transaction_id = cn.transaction_id
                AND cw.cf_item IN (8)
                AND cw.contract_id = ct.contract_id
                AND NVL(cw.reversed_flag, 'N') = 'N'
                AND trunc(cn.transaction_date) <=
                trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                0))
                END) month_residual,
487 488 489 490 491 492 493 494 495 496 497 498
 --当月末留购金余额
 (CASE
   WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
    0
   ELSE
    con_contract_pkg.get_business_times(p_contract_id             => ct.contract_id,
                                        p_calc_date               => to_date(${@cur_end},
                                                                             'yyyy-mm-dd'),
                                        p_contract_inception_date => ct.contract_inception_date)
 END) business_due_times_after,
 --逾期期数(保证金后)
 (CASE
499 500 501
                WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
                0
                ELSE
502
                (Select count(*)
503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520
                    From con_contract_cashflow ccw
                   Where trunc(ccw.due_date) <= trunc(to_date(${@cur_end},'yyyy-mm-dd'))
                     And ccw.contract_id = ct.contract_id
                     And ccw.cf_item In (1, 200,250)
                     and ccw.cf_status = 'RELEASE'
                     And ccw.times > 0
					 --and ccw.due_amount > nvl(ccw.received_amount,0)
					 and ccw.due_amount>(SELECT nvl(SUM(nvl(cwo.write_off_due_amount, 0)),0)
                 FROM csh_write_off cwo, csh_transaction cn
                WHERE nvl(cwo.reversed_flag, 'N') = 'N'
                  AND cwo.contract_id = ccw.contract_id
                  AND cwo.times = ccw.times
                  AND cwo.csh_transaction_id = cn.transaction_id
                  AND cwo.cf_item = ccw.cf_item
                  AND trunc(cn.transaction_date) <=
                      trunc(to_date(${@cur_end}, 'yyyy-mm-dd')) 
                      )
					 )
521
                END) business_due_times,
522 523
 --逾期期数(保证金前)
 (case when ((CASE
524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571
                WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
                0
                ELSE
                (nvl((SELECT SUM(ccw.due_amount) -
                SUM(nvl((SELECT SUM(nvl(cwo.write_off_due_amount, 0))
                FROM csh_write_off cwo, csh_transaction cn
                WHERE nvl(cwo.reversed_flag, 'N') = 'N'
                AND cwo.contract_id = ccw.contract_id
                AND cwo.times = ccw.times
                AND cwo.csh_transaction_id =
                cn.transaction_id
                AND cwo.cf_item = ccw.cf_item
                AND trunc(cn.transaction_date) <=
                trunc(to_date(${@cur_end},
                'yyyy-mm-dd'))),
                0))
                FROM con_contract_cashflow ccw
                WHERE ccw.contract_id = ct.contract_id
                AND ccw.cf_item IN (1, 200, 8, 250)
                AND ccw.cf_status = 'RELEASE'
                AND trunc(ccw.due_date) <=
                trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                0))
                END)<=0) then 0 else (CASE
                WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
                0
                ELSE
                (nvl((SELECT SUM(ccw.due_amount) -
                SUM(nvl((SELECT SUM(nvl(cwo.write_off_due_amount, 0))
                FROM csh_write_off cwo, csh_transaction cn
                WHERE nvl(cwo.reversed_flag, 'N') = 'N'
                AND cwo.contract_id = ccw.contract_id
                AND cwo.times = ccw.times
                AND cwo.csh_transaction_id =
                cn.transaction_id
                AND cwo.cf_item = ccw.cf_item
                AND trunc(cn.transaction_date) <=
                trunc(to_date(${@cur_end},
                'yyyy-mm-dd'))),
                0))
                FROM con_contract_cashflow ccw
                WHERE ccw.contract_id = ct.contract_id
                AND ccw.cf_item IN (1, 200, 8, 250)
                AND ccw.cf_status = 'RELEASE'
                AND trunc(ccw.due_date) <=
                trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                0))
                END)
572 573 574 575
                end) business_due_amount,
 --当月末逾期金额(合计)
 
 (case when (CASE
576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641
                WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
                0
                ELSE
                (nvl((SELECT SUM(ccw.due_amount) -
                SUM(nvl((SELECT SUM(nvl(cwo.write_off_due_amount, 0))
                FROM csh_write_off cwo, csh_transaction cn
                WHERE nvl(cwo.reversed_flag, 'N') = 'N'
                AND cwo.contract_id = ccw.contract_id
                AND cwo.times = ccw.times
                AND cwo.csh_transaction_id = cn.transaction_id
                AND cwo.cf_item = ccw.cf_item
                AND trunc(cn.transaction_date) <=
                trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                0))
                FROM con_contract_cashflow ccw
                WHERE ccw.contract_id = ct.contract_id
                AND ccw.cf_item IN (1, 200, 8, 250)
                AND ccw.cf_status = 'RELEASE'
                AND trunc(ccw.due_date) <=
                trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                0) - nvl((SELECT SUM((nvl(tt.transaction_amount, 0) -
                nvl(tt.write_off_amount, 0) -
                nvl(tt.returned_amount, 0)))
                FROM csh_transaction tt
                WHERE tt.transaction_type = 'DEPOSIT'
                AND tt.deposit_trans_type = 'rent_deposit'
                AND tt.ref_contract_id = ct.contract_id
                AND tt.transaction_date <=
                trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                0))
                END)<=0 then
                0
                else
                (CASE
                WHEN ct.contract_status IN ('TERMINATE', 'REPUR', 'ET') THEN
                0
                ELSE
                (nvl((SELECT SUM(ccw.due_amount) -
                SUM(nvl((SELECT SUM(nvl(cwo.write_off_due_amount, 0))
                FROM csh_write_off cwo, csh_transaction cn
                WHERE nvl(cwo.reversed_flag, 'N') = 'N'
                AND cwo.contract_id = ccw.contract_id
                AND cwo.times = ccw.times
                AND cwo.csh_transaction_id = cn.transaction_id
                AND cwo.cf_item = ccw.cf_item
                AND trunc(cn.transaction_date) <=
                trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                0))
                FROM con_contract_cashflow ccw
                WHERE ccw.contract_id = ct.contract_id
                AND ccw.cf_item IN (1, 200, 8, 250)
                AND ccw.cf_status = 'RELEASE'
                AND trunc(ccw.due_date) <=
                trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                0) - nvl((SELECT SUM((nvl(tt.transaction_amount, 0) -
                nvl(tt.write_off_amount, 0) -
                nvl(tt.returned_amount, 0)))
                FROM csh_transaction tt
                WHERE tt.transaction_type = 'DEPOSIT'
                AND tt.deposit_trans_type = 'rent_deposit'
                AND tt.ref_contract_id = ct.contract_id
                AND tt.transaction_date <=
                trunc(to_date(${@cur_end}, 'yyyy-mm-dd'))),
                0))
                END)
                end) business_due_amount_after,
642 643 644
 --当月末逾期金额(合计)保证金后
 
 ((SELECT SUM(nvl(tt.transaction_amount, 0))
645 646 647
                FROM csh_transaction tt
                WHERE tt.transaction_type = 'DEPOSIT'
                AND tt.deposit_trans_type = 'rent_deposit'
648 649
                AND tt.ref_contract_id =  ct.contract_id
                AND tt.transaction_date <= trunc(to_date(${@cur_end}, 'yyyy-mm-dd')))
650 651 652 653
							-
(SELECT sum(nvl(cwo.WRITE_OFF_DUE_AMOUNT,0))               
             FROM csh_write_off cwo
								where   cwo.write_off_type in ('CSH_RETURN','DEPOSIT_TRANSFER','DEPOSIT_CREDIT')
654 655
                AND     cwo.csh_transaction_id in (select cts.transaction_id from csh_transaction cts where cts.ref_contract_id = ct.contract_id)
                AND     cwo.write_off_date <= trunc(to_date(${@cur_end}, 'yyyy-mm-dd')))) deposit_amount,
656 657 658 659 660 661 662 663
 --保证金金额
 
 (SELECT v.code_value_name
    FROM sys_code_values_v v
   WHERE v.code = 'CON500_CONTRACT_STATUS'
     AND v.code_value = ct.contract_status) AS contract_status_n,
 --合同金额
 (SELECT to_char(due_date, 'yyyy-mm-dd')
664 665 666 667
                FROM con_contract_cashflow
                WHERE contract_id = ct.contract_id
                AND cf_status = 'RELEASE'
                AND cf_item = 8) residual_date,
668
 -- 合同终了
lizhe's avatar
lizhe committed
669
                 /*(CASE
670 671 672 673 674 675 676 677 678 679 680 681 682 683
                WHEN ct.contract_status IN ('INCEPT', 'ETING', 'TERMINATE', 'ET') THEN
                (SELECT to_char(MAX(cc.last_received_date),'yyyy-mm-dd')
                FROM con_contract_cashflow cc
                WHERE cc.contract_id = ct.contract_id
                AND cf_status = 'RELEASE'
                AND cf_item = 8)
                WHEN ct.contract_status IN ('REPUR') THEN
                (SELECT to_char(MAX(cc.last_received_date),'yyyy-mm-dd')
                FROM con_contract_cashflow cc
                WHERE cc.contract_id = ct.contract_id
                AND cf_status = 'RELEASE'
                AND cf_item = 250)
                ELSE
                ''
lizhe's avatar
lizhe committed
684 685
                END) terminate_date,*/
                to_char(ct.et_date, 'yyyy-mm-dd') terminate_date,
686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706
 ct.is_buyout,
 (SELECT v.code_value_name
    FROM sys_code_values_v v
   WHERE v.code = 'YES_OR_NO'
     AND v.code_enabled_flag = 'Y'
     AND v.code_value_enabled_flag = 'Y'
     AND v.CODE_VALUE = ct.is_buyout) is_buyout_n,
  ct.large_balance,
 (SELECT v.code_value_name
    FROM sys_code_values_v v
   WHERE v.code = 'SECONDARY_LEASE'
     AND v.code_value =
         ct.large_balance) large_balance_n,
 ct.branch_code,
 (SELECT v.code_value_name
    FROM sys_code_values_v v
   WHERE v.code = 'BRANCH_CODE_SZMP'
     AND v.code_enabled_flag = 'Y'
     AND v.code_value_enabled_flag = 'Y'
     AND v.code_value = ct.branch_code) branch_code_n,
 (select decode(bp.bp_class, 'NP', '自然人', '法人')
707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727
    from con_contract_bp bp
   where bp.contract_id = ct.contract_id
     and bp.bp_category = 'TENANT') bp_class_n,
 (select b.description
    from hls_business_type b
   where b.business_type = ct.business_type) business_type_n,
 NVL((Select h1.code_value_name value_name
       From sys_code_values_v h1
      Where h1.code = 'SECONDARY_LEASE'
        And h1.code_enabled_flag = 'Y'
        And h1.code_value_enabled_flag = 'Y'
        AND H1.code_value = CT.SECONDARY_LEASE),
     '否') SECONDARY_LEASE_N,
 (select d.description from hls_division d where d.division = ct.division) division_n,
 nvl((select '是'
       from con_contract_change_req ccr
      where ccr.contract_id = ct.contract_id
        and ccr.req_status = 'APPROVED'
        and ccr.document_type = 'LEASE_CHAG'
        and rownum = 1),
     '否') tenant_change_flag_n,
728 729 730 731 732 733 734 735
     nvl((select '是'
             from dual
            where not exists (select 1
                     from con_contract_cashflow ccc
                    where ccc.cf_item = 1
                      and ccc.times <= 12
                      and ccc.contract_id = ct.contract_id
                      and ccc.write_off_flag != 'FULL'
736
                      and ccc.due_amount != 0
737 738 739 740 741 742
                      and ccc.cf_direction = 'INFLOW')
              and exists (select 1
                     from con_contract_cashflow ccc
                    where ccc.cf_item = 1
                      and ccc.times = 12
                      and ccc.contract_id = ct.contract_id
743
                      and (ccc.write_off_flag = 'FULL' or ccc.due_amount=0)
744 745
                      and ccc.cf_direction = 'INFLOW')),
           '否') rental_12_pay_flag,
746
 nvl((select '是'
747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783
             from con_contract_cashflow ccc
            where ccc.cf_item = 9
              and ccc.cf_direction = 'INFLOW'
              and ccc.contract_id = ct.contract_id
              and (ccc.due_amount > 0 or exists
                   (select 1
                      from CON_CONTRACT_CASE_RECORD    cr,
                           CON_CONTRACT_PENALTY_REDUCE pr,
                           CON_CONTRACT_PENALTY_INFO   pi
                     where cr.record_id = pr.record_id
                       and pr.penalty_reduce_id = pi.penalty_reduce_id
                       and pr.contract_id = ccc.contract_id
                       and pi.penalty_reduce_amount > 0
                       and cr.status = 'APPROVED'))
              and rownum = 1),
           '否') cf_9_exists_flag,
       nvl((select '是'
             from con_contract_cashflow ccc
            where ccc.cf_item = 9
              and ccc.cf_direction = 'INFLOW'
              and ccc.contract_id = ct.contract_id
              and (ccc.due_amount > 0 or exists
                   (select 1
                      from CON_CONTRACT_CASE_RECORD    cr,
                           CON_CONTRACT_PENALTY_REDUCE pr,
                           CON_CONTRACT_PENALTY_INFO   pi,
                           con_contract_cashflow       cf
                     where cr.record_id = pr.record_id
                       and pr.penalty_reduce_id = pi.penalty_reduce_id
                       and pr.contract_id = ccc.contract_id
                       and pi.penalty_reduce_amount > 0
                       and cr.status = 'APPROVED'
                       and pi.cashflow_id = cf.cashflow_id
                       and cf.times > 1))
              and ccc.times > 1
              and rownum = 1),
           '否') cf_9_notfirsttime_exists_flag
lizhe's avatar
lizhe committed
784
                    ,decode(acr_invoice_pkg.check_rl_flag(ct.contract_id), 'N', '否', 'Y', '是') rl_flag_n
785 786 787 788
  FROM con_contract ct
 WHERE ct.contract_status NOT IN ('CANCEL')
   AND ct.data_class = 'NORMAL'
 ORDER BY ct.bp_id_agent_level1
789
                ]]></bm:query-sql>
790 791 792
        </bm:operation>
        <bm:operation name="update">
            <bm:update-sql><![CDATA[
793 794 795 796 797 798 799 800
                begin
                    rpt5012_rental_balance_pkg.rental_balance_insert(
                            p_month   =>${@month},
                            p_user_id      =>${/session/@user_id},
                            p_batch_id       =>${@batch_id}
                    );
                end;
                ]]></bm:update-sql>
801 802 803
        </bm:operation>
        <bm:operation name="execute">
            <bm:update-sql><![CDATA[
804 805 806 807 808 809 810 811 812 813
                begin
                    rpt5012_rental_balance_pkg.get_month_date(
                            p_month   =>${@month},
                            p_cur_begin      =>${@cur_begin},
                            p_cur_end      =>${@cur_end},
                            p_before_begin      =>${@before_begin},
                            p_before_end       =>${@before_end}
                    );
                end;
                ]]></bm:update-sql>
814 815 816 817 818 819 820 821 822 823 824 825
            <bm:parameters>
                <bm:parameter name="cur_begin" dataType="date" input="true" output="true"
                              outputPath="/parameter/@cur_begin"/>
                <bm:parameter name="cur_end" dataType="date" input="true" output="true"
                              outputPath="/parameter/@cur_end"/>
                <bm:parameter name="before_begin" dataType="date" input="true" output="true"
                              outputPath="/parameter/@before_begin"/>
                <bm:parameter name="before_end" dataType="date" input="true" output="true"
                              outputPath="/parameter/@before_end"/>
            </bm:parameters>
        </bm:operation>
    </bm:operations>
826
	    <bm:fields>
827 828 829 830 831 832
        <bm:field name="agent_extra_name"/>
        <bm:field name="bp_tenant_name"/>
        <bm:field name="contract_number"/>
        <bm:field name="lease_start_date"/>
        <bm:field name="modelcd"/>
        <bm:field name="machine_number"/>
833 834
        <bm:field name="int_rate_display" datatype="java.lang.String"/>
        <bm:field name="lease_times" datatype="java.lang.Long"/>
835
        <bm:field name="down_payment_ratio"/>
836 837 838 839 840
        <bm:field name="lease_item_amount" datatype="java.lang.Double"/>
        <bm:field name="residual_amount" datatype="java.lang.Double"/>
        <bm:field name="contract_amount" datatype="java.lang.Double"/>
        <bm:field name="down_payment" datatype="java.lang.Double"/>
        <bm:field name="month_due_amount" datatype="java.lang.Double"/>
841
        <bm:field name="month_due_amount_after" datatype="java.lang.Double"/>
842
        <bm:field name="month_due_principal" datatype="java.lang.Double"/>
843
        <bm:field name="month_due_principal_after" datatype="java.lang.Double"/>
844
        <bm:field name="month_interest" datatype="java.lang.Double"/>
845
        <bm:field name="month_interest_after" datatype="java.lang.Double"/>
846 847
        <bm:field name="month_residual" datatype="java.lang.Double"/>
        <bm:field name="business_due_times" datatype="java.lang.Long"/>
848
		<bm:field name="business_due_times_after" datatype="java.lang.Long"/>
849
        <bm:field name="business_due_amount" datatype="java.lang.Double"/>
850
        <bm:field name="business_due_amount_after" datatype="java.lang.Double"/>
851
        <bm:field name="deposit_amount" datatype="java.lang.Double"/>
852 853 854
        <bm:field name="contract_status_n"/>
        <bm:field name="residual_date"/>
        <bm:field name="terminate_date"/>
855
        <bm:field name="is_buyout_n"/>
856 857
		<bm:field name="large_balance_n"/>
		<bm:field name="branch_code_n"/>
858 859 860 861 862 863 864 865
        <bm:field name="bp_class_n"/>
        <bm:field name="business_type_n"/>
        <bm:field name="division_n"/>
        <bm:field name="tenant_change_flag_n"/>
        <bm:field name="rental_12_pay_flag"/>
        <bm:field name="cf_9_exists_flag"/>
        <bm:field name="cf_9_notfirsttime_exists_flag"/>
        <bm:field name="secondary_lease_n"/>
lizhe's avatar
lizhe committed
866
        <bm:field name="rl_flag_n"/>
867 868 869 870 871 872 873
    </bm:fields>
    <!--    <bm:query-fields>-->
    <!--        <bm:query-field field="bp_id_tenant_n" queryExpression="t1.bp_id_tenant_n = ${@bp_id_tenant_n}"/>-->
    <!--        <bm:query-field field="account_name" queryExpression="t1.account_name = ${@account_name}"/>-->
    <!--        <bm:query-field field="account_id_n" queryExpression="t1.account_id_n = ${@account_id_n}"/>-->
    <!--    </bm:query-fields>-->
</bm:model>