Академический Документы
Профессиональный Документы
Культура Документы
DECLARE pmgrossotsth,pfgrossotyad,
mmgrossot,mfgrossotsth,tmpgmnettsth,pmgrossot DECIMAL(38,20);
DECLARE pmbornesth,pfborneyad, mmborne,mfbornesth,pmborne DECIMAL(38,20);
DECLARE pphborne, pphbornesth,dumfixborne, dumfixgrossot DECIMAL(38,20);
DECLARE vargrossotP,varborneP,tmpPPHBORNE, pphgot DECIMAL(38,20);
DECLARE done INT DEFAULT FALSE;
DECLARE tempresult TEXT;
DECLARE tempdebug TEXT;
DECLARE QPPH21SET CURSOR FOR
SELECT tpymtaxparam.Param_Code, tpymtaxparam.Value
FROM tpymtaxparam,teomcompany
WHERE tpymtaxparam.TaxCountry = teomcompany.taxcountry
AND teomcompany.Company_ID = companyid
AND tpymtaxparam.TaxYear IN (
SELECT MAX(A.TaxYear)
FROM tpymtaxparam A,teomcompany B
WHERE A.TaxCountry = B.taxcountry
AND A.TaxYear <= taxyear
AND B.Company_ID = companyid
ORDER BY A.TAXYEAR DESC
)
AND UPPER(tpymtaxparam.Param_Code) IN
('TAXMINUSBEP','NUMDEPENDENT','PTKPSTATUSL','PTKPSTATUSM','PTKPSTATUST','MAXBJBT','
ANNUALIZEDMETHOD','PBJBT','TAXPENALTYPERCENT','REFUNDTAXPENALTY','GROSSUPTAXPENALTY
');
DECLARE QPPH21PKP CURSOR FOR
SELECT tpymtaxpct.toplimit AS NPKP, tpymtaxpct.Percentage AS PPKP
FROM tpymtaxpct,teomcompany
WHERE tpymtaxpct.TaxCountry = teomcompany.taxcountry
AND teomcompany.Company_ID = companyid
AND tpymtaxpct.TAXARTICLE = 'PPH21'
AND tpymtaxpct.TAXYEAR = (
SELECT MAX(A.TaxYear)
FROM tpymtaxpct A,teomcompany B
WHERE A.TaxArticle = 'PPH21'
AND A.TaxYear <= taxyear
AND A.TaxCountry = B.taxcountry
AND B.Company_ID = companyid
ORDER BY A.TAXYEAR DESC
)
ORDER BY tpymtaxpct.PERCENTAGE;
SET pmgrossotsth = 0;
SET pfgrossotyad = 0;
SET pmbornesth = 0;
SET pfborneyad = 0;
SET pphgot = 0;
OPEN QPPH21SET;
read_loop: LOOP
FETCH QPPH21SET INTO paramcode, paramvalue;
IF done THEN
LEAVE read_loop;
END IF;
IF paramcode = 'TAXMINUSBEP' THEN
SET taxminusbep = paramvalue;
ELSE
IF paramcode = 'NUMDEPENDENT' THEN
SET jmltang = CONVERT(paramvalue,INT);
ELSE
IF paramcode = 'PTKPSTATUSL' THEN
SET ptkpstatusl = CONVERT(paramvalue,DECIMAL(38,20));
ELSE
IF paramcode = 'PTKPSTATUSM' THEN
SET ptkpstatusm = CONVERT(paramvalue,DECIMAL(38,20));
ELSE
IF paramcode = 'PTKPSTATUST' THEN
SET ptkpstatust =
CONVERT(paramvalue,DECIMAL(38,20));
ELSE
IF paramcode = 'MAXBJBT' THEN
SET maxbjbt = CONVERT(paramvalue,DECIMAL(38,20));
ELSE
IF paramcode = 'ANNUALIZEDMETHOD' THEN
SET method = IFNULL(method,paramvalue);
ELSE
IF paramcode = 'PBJBT' THEN
SET pbjbt =
CONVERT(paramvalue,DECIMAL(38,20));
ELSE
IF paramcode = 'TAXPENALTYPERCENT'
THEN
SET percent_taxpen =
CONVERT(paramvalue,INT);
ELSE
IF paramcode = 'REFUNDTAXPENALTY' THEN
SET refundtax = paramvalue;
ELSE
IF paramcode =
'GROSSUPTAXPENALTY' THEN
SET grossuptaxpen = paramvalue;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
END LOOP;
CLOSE QPPH21SET;
insert into tpydfreqtemp(FREQ) values ('valueees');
insert into tpydfreqtemp(FREQ) values (taxminusbep);
SET pphak = 0;
SET tmpnpkp = 0;
SET prevnpkp = 0;
IF pkp > 0 THEN
SET done = FALSE;
OPEN QPPH21PKP;
read_loop: LOOP
FETCH QPPH21PKP INTO npkp, ppkp;
IF done THEN
LEAVE read_loop;
END IF;
IF PKP > npkp THEN
SET PPHAK = PPHAK + (npkp - prevnpkp) * ppkp / 100 *
percent_taxpen_net / 100;
ELSE
SET PPHAK = PPHAK + (pkp - prevnpkp) * ppkp / 100 *
percent_taxpen_net / 100;
LEAVE read_loop;
END IF;
SET prevnpkp = npkp;
END LOOP;
CLOSE QPPH21PKP;
END IF;
SET vgrnet = 0;
END IF;
IF gmnett < 1000 AND gmnett > -1000 AND curperiod <> endperiod AND
resigncode = '' AND fixnet = 0 THEN
SET pph = pph - gmnett;
SET gmnett = 0;
END IF;
IF pphborne < 1000 AND pphborne > -1000 AND curperiod <> endperiod AND
resigncode = '' AND fixborne = 0 THEN
SET pph = pph - pphborne;
SET pphborne = 0;
END IF;
IF pphgot < 1000 AND pphgot > -1000 AND curperiod <> endperiod AND
resigncode = '' AND fixgrossot = 0 THEN
SET pph = pph - pphgot;
END IF;
SET ismonthly = 1;
ELSE
IF method = 'CURRENT' AND curperiod <> endperiod THEN
IF wo_bonus = 'N' THEN
SET pph =
CONVERT(SUBSTRING_INDEX(SUBSTRING_INDEX(tempresult,'|',1),'|',-1),DECIMAL(38,20));
SET
gmnett=CONVERT(SUBSTRING_INDEX(SUBSTRING_INDEX(tempresult,'|',2),'|',-
1),DECIMAL(38,20));
SET taxpenalty =
CONVERT(SUBSTRING_INDEX(SUBSTRING_INDEX(tempresult,'|',3),'|',-1),DECIMAL(38,20));
SET pphsth =
CONVERT(SUBSTRING_INDEX(SUBSTRING_INDEX(tempresult,'|',7),'|',-1),DECIMAL(38,20));
SET gmnettsth =
CONVERT(SUBSTRING_INDEX(SUBSTRING_INDEX(tempresult,'|',8),'|',-1),DECIMAL(38,20));
SET pphborne =
CONVERT(SUBSTRING_INDEX(SUBSTRING_INDEX(tempresult,'|',9),'|',-1),DECIMAL(38,20));
SET pphbornesth =
CONVERT(SUBSTRING_INDEX(SUBSTRING_INDEX(tempresult,'|',10),'|',-1),DECIMAL(38,20));
SET
temp=CONVERT(SUBSTRING_INDEX(SUBSTRING_INDEX(tempresult,'|',11),'|',-
1),DECIMAL(38,20));
RETURN
CONCAT_WS('|',IFNULL(pphsth,0),IFNULL( gmnettsth,0),IFNULL( mmnett,0),IFNULL( mmgro
s,0),IFNULL( vtotalytd,0),
IFNULL( bjbtytd,0),IFNULL( vtotalsth,0),IFNULL( bjbtsth,0),
IFNULL( pph,0),IFNULL( gmnett,0),IFNULL( taxpenalty,0),
IFNULL( mptkp,0),IFNULL( pkp,0),IFNULL( method,'
'),IFNULL( kptkpsth,0),IFNULL(pphborne,0),
IFNULL( pphbornesth,0),IFNULL(tempdebug,0));
END;
SUM(SF2356896(tpydprocmtdd.Comp_value_tax,CFSecurePath,SFPUBQ,tpydprocmtdh.EMP_ID))
Comp_Value,
tpympayperiod.period_freq
FROM tpydprocmtdh, tpydprocmtdd, tpympayperiod
WHERE tpydprocmtdh.ProcMTDh_ID = tpydprocmtdd.ProcMTDh_ID
AND tpydprocmtdh.period_code = tpympayperiod.period_code
AND tpydprocmtdh.Emp_ID = EMPID
AND tpydprocmtdh.Company_ID = COMPANYID
AND MONTH(tpydprocmtdh.TaxDate) = CURPRD
AND YEAR(tpydprocmtdh.TaxDate) = TAXYEAR
AND tpydprocmtdd.Taxed = 'Y'
GROUP BY tpydprocmtdd.Net, tpydprocmtdd.TaxClass,
tpydprocmtdd.AllowDeductType,tpympayperiod.period_freq;
SF2356896(tpydempallowdeduct.AllowDeduct_Value,CFSecurePath,SFPUBQ,tpydempallowdedu
ct.EMP_ID) allowdeduct_value,
tpydempallowdeduct.Net,tpydempallowdeduct.currency_code
FROM tpydempallowdeduct, tpympayallowdeduct
WHERE tpydempallowdeduct.allowdeduct_code =
tpympayallowdeduct.allowdeduct_code
AND tpydempallowdeduct.company_id = tpympayallowdeduct.company_id
AND tpydempallowdeduct.emp_id = empid
AND tpydempallowdeduct.company_id = companyid
AND tpydempallowdeduct.taxclass = 'F'
AND tpydempallowdeduct.taxed = 'Y' AND
tpympayallowdeduct.AllowdeductType = 'A';
SET fixnet = 0;
SET varnet = 0;
SET fixgros = 0;
SET vargros = 0;
SET dumfixnet = 0;
SET dumfixgros = 0;
SET ptkplain = 0;
SET varnetP = 0;
SET vargrosP = 0;
SET fixborne = 0;
SET varborne = 0;
SET varbornep = 0;
SET fixgot = 0;
SET vargot = 0;
SET vargotp = 0;
SET dumfixborne = 0;
SET dumfixgot = 0;
SELECT
SUM(SF2356896(Salary_Tax,CFSecurePath,SFPUBQ,tpydprocmtdh.EMP_ID)) INTO
salarytaxmonth
FROM tpydprocmtdh
WHERE Emp_ID = EMPID AND company_id = COMPANYID
AND MONTH(tpydprocmtdh.TaxDate) = CURPRD
AND YEAR(tpydprocmtdh.TaxDate) = TAXYEAR;
IF cntmtdh = 0 THEN
SELECT currency_code,
SF2356896(Salary,CFSecurePath,SFPUBQ,TPYDEMPSALARYPARAM.EMP_ID) INTO compcurrency,
empsalary
FROM TPYDEMPSALARYPARAM
WHERE emp_id = EMPID AND company_id = COMPANYID;
END IF;
IF (salnet = '1') THEN
SET fixnet = fixnet + salarytaxmonth;
ELSEIF (salnet = '0') THEN
SET fixgros = fixgros + salarytaxmonth;
ELSEIF (salnet = '2') THEN
SET fixborne = fixborne + salarytaxmonth;
ELSEIF (salnet = '3') THEN
SET fixgot = fixgot + salarytaxmonth;
END IF;
SET done = FALSE;
OPEN qMComp;
read_loop: LOOP
FETCH qMComp INTO compnet, taxclass, comptype, compvalue, period_freq;
IF done THEN
LEAVE read_loop;
END IF;
IF period_freq = 'ANNUALLY' THEN
IF comptype = 'A' THEN
IF compnet = '1' THEN
SET varnetP = varnetP + compvalue;
ELSEIF compnet = '0' THEN
SET vargrosP = vargrosP + compvalue;
ELSEIF compnet = '2' THEN
SET varborneP = varborneP + compvalue;
ELSEIF compnet = '3' THEN
SET vargotP = vargotP + compvalue;
END IF;
ELSE
IF comptype = 'D' AND taxclass = 'P' THEN
SET ptkplain = ptkplain + compvalue;
ELSE
IF comptype = 'D' THEN
IF compnet = '1' THEN
SET varnet = varnet - compvalue;
ELSEIF compnet = '0' THEN
SET vargros = vargros - compvalue;
ELSEIF compnet = '2' THEN
SET varborne = varborne - compvalue;
ELSEIF compnet = '3' THEN
SET vargot = vargot - compvalue;
END IF;
END IF;
END IF;
END IF;
ELSE
IF comptype = 'A' THEN
IF compnet = '1' THEN
IF taxclass = 'F' THEN
SET fixnet = fixnet + compvalue;
ELSE
IF taxclass = 'V' THEN
SET varnet = varnet + compvalue;
END IF;
END IF;
ELSEIF compnet = '0' THEN
IF taxclass = 'F' THEN
SET fixgros = fixgros + compvalue;
ELSE
IF taxclass = 'V' THEN
SET vargros = vargros + compvalue;
END IF;
END IF;
ELSEIF compnet = '2' THEN
IF taxclass = 'F' THEN
SET fixborne = fixborne + compvalue;
ELSE
IF taxclass = 'V' THEN
SET varborne = varborne + compvalue;
END IF;
END IF;
ELSEIF compnet = '3' THEN
IF taxclass = 'F' THEN
SET fixgot = fixgot + compvalue;
ELSE
IF taxclass = 'V' THEN
SET vargot = vargot + compvalue;
END IF;
END IF;
END IF;
ELSE
IF comptype = 'D' AND taxclass = 'P' THEN
SET ptkplain = ptkplain + compvalue;
ELSE
IF comptype = 'D' THEN
IF compnet = '1' THEN
IF taxclass = 'F' THEN
SET fixnet = fixnet -
compvalue;
ELSE
IF taxclass = 'V' THEN
SET varnet = varnet -
compvalue;
END IF;
END IF;
ELSEIF compnet = '0' THEN
IF taxclass = 'F' THEN
SET fixgros = fixgros - compvalue;
ELSE
IF taxclass = 'V' THEN
SET vargros = vargros -
compvalue;
END IF;
END IF;
ELSEIF compnet = '2' THEN
IF taxclass = 'F' THEN
SET fixborne = fixborne -
compvalue;
ELSE
IF taxclass = 'V' THEN
SET varborne = varborne -
compvalue;
END IF;
END IF;
ELSEIF compnet = '3' THEN
IF taxclass = 'F' THEN
SET fixgot = fixgot - compvalue;
ELSE
IF taxclass = 'V' THEN
SET vargot = vargot -
compvalue;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
END LOOP;
CLOSE qMComp;