Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- EXECUTE block (mqm_id inteiro=:mqm_id
- )
- returns
- (
- sigla varchar_7,
- aliquota currency,
- valor currency
- )
- AS
- DECLARE variable cancelado boleano;
- DECLARE variable totalproduto currency;
- DECLARE variable aliquota_capturada currency;
- --tributada
- DECLARE cur_t CURSOR FOR (SELECT COALESCE(fis_mvp.icmsaliq, 0), fis_mvp.cancelado, SUM(fis_mvp.totalproduto) FROM fis_mvt
- inner join fis_mvp ON (fis_mvp.mvt_id=fis_mvt.id)
- inner join fis_cfo ON (fis_cfo.id=fis_mvp.cfo_id)
- WHERE
- (
- (fis_mvt.mqm_id=:mqm_id) AND
- (substring(fis_cfo.cfop FROM 2 FOR 4)<>'.933') AND
- (
- (fis_mvp.icmscst='00') OR ((fis_mvp.icmscst='90') AND (fis_mvp.icmsvlr<>0))
- )
- )
- GROUP BY 1, 2
- );
- --substituição tributária
- DECLARE cur_f CURSOR FOR (SELECT fis_mvp.cancelado, SUM(fis_mvp.totalproduto) FROM fis_mvt
- inner join fis_mvp ON (fis_mvp.mvt_id=fis_mvt.id)
- WHERE
- (
- (fis_mvt.mqm_id=:mqm_id) AND
- (fis_mvp.icmscst IN ('60', '500'))
- )
- GROUP BY 1
- );
- --outro
- DECLARE cur_n CURSOR FOR (SELECT fis_mvp.cancelado, SUM(fis_mvp.totalproduto) FROM fis_mvt
- inner join fis_mvp ON (fis_mvp.mvt_id=fis_mvt.id)
- WHERE
- (
- (fis_mvt.mqm_id=:mqm_id) AND
- (
- (fis_mvp.icmscst IN ('41', '50', '51', '900')) OR ((fis_mvp.icmscst='90') AND (fis_mvp.icmsvlr=0))
- )
- )
- GROUP BY 1
- );
- --isento
- DECLARE cur_i CURSOR FOR (SELECT fis_mvp.cancelado, SUM(fis_mvp.totalproduto) FROM fis_mvt
- inner join fis_mvp ON (fis_mvp.mvt_id=fis_mvt.id)
- WHERE
- (
- (fis_mvt.mqm_id=:mqm_id) AND
- (fis_mvp.icmscst IN ('40', '300'))
- )
- GROUP BY 1
- );
- BEGIN
- --tributada [INICIO]
- sigla = 'T';
- valor = 0;
- OPEN cur_t;
- FETCH cur_t INTO aliquota_capturada, cancelado, totalproduto;
- WHILE (row_count<>0) DO
- BEGIN
- aliquota = aliquota_capturada;
- WHILE ((aliquota_capturada=aliquota) AND (row_count<>0)) DO
- BEGIN
- IF (cancelado='N') THEN valor = (valor+totalproduto);
- ELSE valor = (valor-totalproduto);
- FETCH cur_t INTO aliquota_capturada, cancelado, totalproduto;
- END
- suspend;
- valor = 0;
- END
- CLOSE cur_t;
- --tributada [FIM]
- --substituição tributária [INICIO]
- sigla = 'F';
- aliquota = 0;
- valor = 0;
- OPEN cur_f;
- FETCH cur_f INTO cancelado, totalproduto;
- IF (row_count<>0) THEN
- BEGIN
- WHILE (row_count<>0) DO
- BEGIN
- IF (cancelado='N') THEN valor = (valor+totalproduto);
- ELSE valor = (valor-totalproduto);
- FETCH cur_f
- INTO cancelado, totalproduto;
- END
- suspend;
- END
- CLOSE cur_f;
- --substituição tributária [FIM]
- --outro [INICIO]
- sigla = 'N';
- aliquota = 0;
- valor = 0;
- OPEN cur_n;
- FETCH cur_n INTO cancelado, totalproduto;
- IF (row_count<>0) THEN
- BEGIN
- WHILE (row_count<>0) DO
- BEGIN
- IF (cancelado='N') THEN valor = (valor+totalproduto);
- ELSE valor = (valor-totalproduto);
- FETCH cur_n INTO cancelado, totalproduto;
- END
- suspend;
- END
- CLOSE cur_n;
- --outro [FIM]
- --isento [INICIO]
- sigla = 'I';
- aliquota = 0;
- valor = 0;
- OPEN cur_i;
- FETCH cur_i INTO cancelado, totalproduto;
- IF (row_count<>0) THEN
- BEGIN
- WHILE (row_count<>0) DO
- BEGIN
- IF (cancelado='N') THEN valor = (valor+totalproduto);
- ELSE valor = (valor-totalproduto);
- FETCH cur_i INTO cancelado, totalproduto;
- END
- suspend;
- END
- CLOSE cur_i;
- --isento [FIM]
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement