Advertisement
Guest User

Untitled

a guest
Aug 22nd, 2014
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 4.50 KB | None | 0 0
  1. EXECUTE block (mqm_id inteiro=:mqm_id
  2. )
  3. returns
  4. (
  5.   sigla     varchar_7,
  6.   aliquota  currency,
  7.   valor     currency
  8. )
  9. AS
  10. DECLARE variable cancelado    boleano;
  11. DECLARE variable totalproduto currency;
  12. DECLARE variable aliquota_capturada currency;
  13.  
  14. --tributada
  15. DECLARE cur_t CURSOR FOR (SELECT COALESCE(fis_mvp.icmsaliq, 0), fis_mvp.cancelado, SUM(fis_mvp.totalproduto) FROM fis_mvt
  16.                           inner join fis_mvp ON (fis_mvp.mvt_id=fis_mvt.id)
  17.                           inner join fis_cfo ON (fis_cfo.id=fis_mvp.cfo_id)
  18.                           WHERE
  19.                           (
  20.                             (fis_mvt.mqm_id=:mqm_id) AND
  21.                             (substring(fis_cfo.cfop FROM 2 FOR 4)<>'.933') AND
  22.                             (
  23.                             (fis_mvp.icmscst='00') OR ((fis_mvp.icmscst='90') AND (fis_mvp.icmsvlr<>0))
  24.                             )
  25.                           )
  26.                           GROUP BY 1, 2
  27.                           );
  28. --substituição tributária
  29. DECLARE cur_f CURSOR FOR (SELECT fis_mvp.cancelado, SUM(fis_mvp.totalproduto) FROM fis_mvt
  30.                           inner join fis_mvp ON (fis_mvp.mvt_id=fis_mvt.id)
  31.                           WHERE
  32.                           (
  33.                             (fis_mvt.mqm_id=:mqm_id) AND
  34.                             (fis_mvp.icmscst IN ('60', '500'))
  35.                           )
  36.                           GROUP BY 1
  37.                           );
  38. --outro
  39. DECLARE cur_n CURSOR FOR (SELECT fis_mvp.cancelado, SUM(fis_mvp.totalproduto) FROM fis_mvt
  40.                           inner join fis_mvp ON (fis_mvp.mvt_id=fis_mvt.id)
  41.                           WHERE
  42.                           (
  43.                             (fis_mvt.mqm_id=:mqm_id) AND
  44.                             (
  45.                             (fis_mvp.icmscst IN ('41', '50', '51', '900')) OR ((fis_mvp.icmscst='90') AND (fis_mvp.icmsvlr=0))
  46.                             )
  47.                           )
  48.                           GROUP BY 1
  49.                           );
  50. --isento
  51. DECLARE cur_i CURSOR FOR (SELECT fis_mvp.cancelado, SUM(fis_mvp.totalproduto) FROM fis_mvt
  52.                           inner join fis_mvp ON (fis_mvp.mvt_id=fis_mvt.id)
  53.                           WHERE
  54.                           (
  55.                             (fis_mvt.mqm_id=:mqm_id) AND
  56.                             (fis_mvp.icmscst IN ('40', '300'))
  57.                           )
  58.                           GROUP BY 1
  59.                           );
  60. BEGIN
  61.   --tributada [INICIO]
  62.   sigla = 'T';
  63.   valor = 0;
  64.   OPEN cur_t;
  65.   FETCH cur_t INTO aliquota_capturada, cancelado, totalproduto;
  66.   WHILE (row_count<>0) DO
  67.     BEGIN
  68.       aliquota = aliquota_capturada;
  69.       WHILE ((aliquota_capturada=aliquota) AND (row_count<>0)) DO
  70.         BEGIN
  71.           IF (cancelado='N') THEN valor = (valor+totalproduto);
  72.           ELSE                    valor = (valor-totalproduto);
  73.           FETCH cur_t INTO aliquota_capturada, cancelado, totalproduto;
  74.         END
  75.       suspend;
  76.       valor = 0;
  77.     END
  78.   CLOSE cur_t;
  79.   --tributada [FIM]
  80.  
  81.   --substituição tributária [INICIO]
  82.   sigla    = 'F';
  83.   aliquota = 0;
  84.   valor    = 0;
  85.   OPEN cur_f;
  86.   FETCH cur_f INTO cancelado, totalproduto;
  87.   IF (row_count<>0) THEN
  88.     BEGIN
  89.       WHILE (row_count<>0) DO
  90.         BEGIN
  91.           IF (cancelado='N') THEN valor = (valor+totalproduto);
  92.           ELSE                    valor = (valor-totalproduto);
  93.           FETCH cur_f
  94.           INTO cancelado, totalproduto;
  95.         END
  96.       suspend;
  97.     END
  98.   CLOSE cur_f;
  99.   --substituição tributária [FIM]
  100.  
  101.   --outro [INICIO]
  102.   sigla    = 'N';
  103.   aliquota = 0;
  104.   valor    = 0;
  105.   OPEN cur_n;
  106.   FETCH cur_n INTO cancelado, totalproduto;
  107.   IF (row_count<>0) THEN
  108.     BEGIN
  109.       WHILE (row_count<>0) DO
  110.         BEGIN
  111.           IF (cancelado='N') THEN valor = (valor+totalproduto);
  112.           ELSE                    valor = (valor-totalproduto);
  113.           FETCH cur_n INTO cancelado, totalproduto;
  114.         END
  115.       suspend;
  116.     END
  117.   CLOSE cur_n;
  118.   --outro [FIM]
  119.  
  120.   --isento [INICIO]
  121.   sigla    = 'I';
  122.   aliquota = 0;
  123.   valor    = 0;
  124.   OPEN cur_i;
  125.   FETCH cur_i INTO cancelado, totalproduto;
  126.   IF (row_count<>0) THEN
  127.     BEGIN
  128.       WHILE (row_count<>0) DO
  129.         BEGIN
  130.           IF (cancelado='N') THEN valor = (valor+totalproduto);
  131.           ELSE                    valor = (valor-totalproduto);
  132.           FETCH cur_i INTO cancelado, totalproduto;
  133.         END
  134.       suspend;
  135.     END
  136.   CLOSE cur_i;
  137.   --isento [FIM]
  138. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement