// További feltételek: // - kisadózói nyilatkozatot csak kkt., bt. és egyéni cég esetén lehet megadni. // - a kisadózói nyilatkozaton megadott személyeknek szerepelnie kell a tagok között is. function isJelolt(ertek) { const tmp = String(ertek); let retVal = tmp.length; if (tmp === "undefined") { retVal = 0; } return retVal; } function afacheck(cegforma, aPont, bPont1, bPontG, bPontH, bPontI, bPontJ, bPontK, bPontL, bPontM, bPontR, bPontN, bPontS, bPontT, bPontV, bPontP, cPont6, cPont2, cPont7, cPont8, cPont5, ePont1, ePont8, ePont9, ePont7, fPontPenzforgalom, gPont1, gPont2, iPont, jPont, jPont2, kPont1, kPont2, mPont1, mPont2) { const errorMessages = []; bPont1 = isJelolt(bPont1); bPontG = isJelolt(bPontG); bPontH = isJelolt(bPontH); bPontI = isJelolt(bPontI); bPontJ = isJelolt(bPontJ); bPontK = isJelolt(bPontK); bPontL = isJelolt(bPontL); bPontM = isJelolt(bPontM); bPontR = isJelolt(bPontR); bPontN = isJelolt(bPontN); bPontS = isJelolt(bPontS); bPontT = isJelolt(bPontT); bPontV = isJelolt(bPontV); bPontP = isJelolt(bPontP); cPont6 = isJelolt(cPont6); cPont2 = isJelolt(cPont2); cPont7 = isJelolt(cPont7); cPont8 = isJelolt(cPont8); cPont5 = isJelolt(cPont5); ePont1 = isJelolt(ePont1); ePont8 = isJelolt(ePont8); ePont9 = isJelolt(ePont9); ePont7 = isJelolt(ePont7); fPontPenzforgalom = isJelolt(fPontPenzforgalom); gPont1 = isJelolt(gPont1); gPont2 = isJelolt(gPont2); iPont = isJelolt(iPont); jPont = isJelolt(jPont); jPont2 = isJelolt(jPont2); kPont1 = isJelolt(kPont1); kPont2 = isJelolt(kPont2); mPont1 = isJelolt(mPont1); mPont2 = isJelolt(mPont2); const AFAA = aPont; // b) Az áfaalanyiság, áfaalanyként való nyilvántartásba vétel kizárása const AFAB = bPont1 + bPontG + bPontH + bPontI + bPontJ + bPontK + bPontL + bPontM + bPontR + bPontN + bPontS + bPontT + bPontV + bPontP; // c) Az áfafizetési kötelezettség megállapításának módja const AFAC = cPont6 + cPont2 + cPont7 + cPont8 + cPont5; // d) Áfamentesség const AFAE = ePont1 + ePont8 + ePont9 + ePont7; // f) Közösségi adószám igénylése, illetve bejelentés az Áfa tv. 20. §-a és 257/B. §-a alapján const AFAF = fPontPenzforgalom; // h) Pénzforgalmi elszámolás választásával kapcsolatos nyilatkozat const AFAG = gPont1 + gPont2; // a) Bejelentés az Áfa tv. 89/A. §-a vagy 96. §-a alapján const AFAI = iPont; // i) A kisvállalati adózás (KIVA) választásával kapcsolatos nyilatkozat const AFAJ = jPont + jPont2; // e) Bejelentés az Áfa tv.49/A. § (2) vagy (3) bekezdése alapján const AFAK = kPont1 + kPont2; // g) Az MNB- vagy EKB-árfolyam alkalmazásának bejelentése az Áfa tv. 80. § (2) bekezdés b) pontja vagy 80/A. §-a alapján const AFAM = mPont1 + mPont2; // j) Társasági adó devizában történő megfizetésével kapcsolatos nyilatkozat // -------- Általános feltételek -------- if ((AFAA + AFAB + AFAC + AFAE + AFAF + AFAG + AFAI + AFAJ + AFAK + AFAM) === 0) { errorMessages.push("Az összes közül legalább egy elemet jelölni kell."); } if ((AFAA + AFAB + AFAC) === 0) { errorMessages.push("Az áfa-alanyiságra, illetve az áfa-adózási módra vonatkozóan legalább egyik nyilatkozat jelölése kötelező. (Adószám-kérés esetén \"Az áfa-alanyiság kizárása\",vagy \"Az áfa-fizetési kötelezettség megállapításának módja\" vagy az \"Áfa-mentesség\" rovatok egyikének jelölése kötelező.)"); } // -------- „Az áfa-alanyiság kizárása”-rovat, egyéb rovatok: egymást kizáró nyilatkozatok -------- if (((AFAA == 2 || AFAA == 3) && (AFAB + AFAC + AFAE + AFAF + AFAG + AFAJ + AFAK) > 0) || (AFAA == 1 && (AFAB + AFAC + ePont1 + ePont7 + AFAF + AFAG + AFAJ + AFAK) > 0)) { errorMessages.push("Ha \"Az áfaalanyiság kizárása\" rovat bármelyik nyilatkozata jelölt (1-es, vagy 2-es, vagy 3-as kód), akkor a következő rovatok nem jelölhetők: „Bejelentés az Áfa tv. 89/A. §-a vagy 96. §-a alapján”, „Az áfafizetési kötelezettség megállapításának módja”, „Áfamentesség”, „Bejelentés az Áfa tv. 49/A. § (2) vagy (3) bekezdése alapján”, „Közösségi adószám igénylése, illetve bejelentés az Áfa tv. 20. §-a és 257/B. §-a alapján”, „Az MNB- vagy EKB-árfolyam alkalmazásának bejelentése az Áfa tv. 80. § (2) bekezdés b) pontja vagy 80/A. §-a alapján”, „Pénzforgalmi elszámolás választásával kapcsolatos nyilatkozat”.\n" + "Kivéve: az 1-es kód jelölése („Nem minősülünk az általános forgalmi adó alanyának az Áfa tv. 5. §-a szerint”) esetén a nem adóalany jogi személy közösségen belüli beszerzésre vonatkozóan közösségi adószámot kérhet az Áfa tv. 20. §-a és 257/B. §-a alapján, tehát a közösségi adószám megállapítását eredményező nyilatkozatok között 8-as vagy 9-es kód jelölhető."); } if (AFAA == 3 && cegforma !== 12 && cegforma !== 17) { errorMessages.push("„Az áfaalanyiság kizárása” rovatban a 3-as kódot kizárólag a „Külföldi vállalkozás magyarországi fióktelepe” (GFO=226) és a „Külföldiek magyarországi közvetlen kereskedelmi képviselete” (GFO=611) töltheti ki.") } // -------- „Az áfa-fizetési kötelezettség megállapításának módja”-rovat: egymást feltételező nyilatkozatok -------- if ((bPontH || bPontM || bPontR || bPontN || bPontS || bPontT || bPontV || bPontP) && !bPont1) { errorMessages.push("Ha különös adózási mód, vagy adómentesség helyett választja az általános szabályokat, a megfelelő kódot és az 1-es kódot is jelölni kell. (A következő kódok bármelyikének jelölése esetén az 1-es kódot is jelölni kell: H, M, R, N, S, T, V, P.)"); } if ((bPontI || bPontJ) && !bPontG ) { errorMessages.push("Az I-kóddal vagy J-kóddal jelölt nyilatkozat esetén a G-kódot is jelölni kell. (Az I-kód vagy J-kód jelölése esetén a G-kódot is jelölni kell.)"); } // -------- „Az áfa-fizetési kötelezettség megállapításának módja”-rovat: egymást kizáró nyilatkozatok -------- if (bPontH && (bPontG || bPontI || bPontJ)) { errorMessages.push("A viszonteladói tevékenység egészére tett lemondó nyilatkozat kizárja az ezzel ellentétes nyilatkozatot. (A H-kód jelölése esetén a G, I, J kód bármelyikének jelölése kizárt.)"); } if (bPontS && bPontT) { errorMessages.push("Az ingatlan bérbeadása tevékenységre vonatkozóan csak az egyik nyilatkozat jelölhető. (Az S és T kód együttesen nem jelölhető.)"); } if (bPontV && bPontP) { errorMessages.push("Az ingatlan értékesítése tevékenységre vonatkozóan csak az egyik nyilatkozat jelölhető. (A V és P kód együttesen nem jelölhető.)"); } // -------- Az „Áfa-mentesség”-rovat: egymást feltételező nyilatkozatok -------- if (cPont8 && !cPont7) { errorMessages.push("Kompenzációs rendszer melletti alanyi adómentesség választása esetén a kompenzációs rendszer választását is jelölni kell. (A 8-as kód jelölése esetén a 7-es kódot is jelölni kell.)"); } // -------- Az „Áfa-mentesség”-rovat: egymást kizáró nyilatkozatok -------- if (AFAC > 1 && (cPont6 || cPont2 || cPont5)) { errorMessages.push("Az áfa-mentességre vonatkozóválasztás csak önmagában jelölhető. (A 6-os, 2-es, 5-ös kód bármelyikének jelölése esetén a 6-os, 2-es, 5-ös, 7-es, 8-as kódok közül másik nem jelölhető.)"); } // -------- „Az áfa-alanyiság kizárása”-, „Az áfa-fizetési kötelezettség megállapításának módja”-, „Áfa-mentesség”-rovat: egymást kizáró nyilatkozatok -------- if ((bPontG || bPontH || bPontI || bPontJ || bPontK || bPontL || bPontM || bPontR) && AFAC > 0 && !(AFAC === 1 && cPont7)) { errorMessages.push("Áfa-mentességre és áfa-fizetési kötelezettségre vonatkozó választás együttesen nem jelölhető. (Ha \"Az áfa-fizetési kötelezettség megállapításának módja\" rovat következő kódjainak valamelyike jelölt, az \"Áfa-mentesség\" rovatban kizárólag a 7-es kód lehet jelölt: G, H, I, J, K, L, M, R.)"); } if (bPont1 && !(bPontS || bPontT || bPontV || bPontP) && AFAC > 0 && !(AFAC === 1 && cPont7)) { errorMessages.push("Áfa- mentességre és áfa-fizetési kötelezettségre vonatkozó választás együttesen nem jelölhető. (Ha \"Az áfa-fizetési kötelezettség megállapításának módja\" rovatban az 1-es kód önmagában vagy más kóddal jelölt, és az S-, T-, V-, P-kódok egyike sem jelölt az 1-es kóddal együtt, akkor az \"Áfa-mentesség\" rovatban kizárólag a 7-es kód lehet jelölt. )"); } if ((bPontS || bPontT || bPontV || bPontP) && cPont6) { errorMessages.push("Áfa-mentességre és áfa-fizetési kötelezettségre vonatkozó választás együttesen nem jelölhető. (Ha \"Az áfa-fizetési kötelezettség megállapításának módja\" rovatban az S-, T-, V-, P-kódok valamelyike jelölt, akkor az \"Áfa-mentesség\" rovatban a 6-os kód nem jelölhető, a többi kód igen: 2, 7, 8, 5.)"); } if (bPontN && AFAC > 0) { errorMessages.push("Áfa-mentességre és áfa-fizetési kötelezettségre vonatkozó választás együttesen nem jelölhető. (Ha \"Az áfa-fizetési kötelezettség megállapításának módja\" rovat N-kódja jelölt, akkor az \"Áfa-mentesség\" rovatban egy kód sem lehet jelölt.)"); } // -------- A közösségi adószám megállapításának kérése, a közösségi adószám kiadását eredményező nyilatkozatok -------- if (ePont9 && ePont8) { errorMessages.push("Ellentmondó nyilatkozat a közösségi adószám megállapítását eredményező nyilatkozatok között. (Ha a közösségi adószám megállapítását eredményező nyilatkozatok között a 8-as vagy 9-es kód jelölt, akkor a 8-as vagy 9-es kódok közül a másik nem jelölhető.)"); } // -------- Pénzforgalmi elszámolás, egymást kizáró nyilatkozatok -------- if ((cPont2 || cPont8 || cPont5) && AFAF) { errorMessages.push("Pénzforgalmi elszámolás választása az alanyi mentességgel egyidejűleg kizárt az Áfa-törvény 196/B. § (1) bek. c) pontja alapján. („A pénzforgalmi elszámolás” választását jelentő nyilatkozat nem jelölhető, ha az adózó alanyi mentességet választott, tehát az \"Áfa-mentesség\" rovatban az alábbi kódok valamelyike jelölt: 2, 8, 5.)"); } // -------- További ellenőrzések -------- if (cegforma === 12 && (AFAB + AFAC + AFAE + AFAF + AFAG + AFAI + AFAJ + AFAK) > 0) { errorMessages.push("A 12-es cégformához csak az a) választható!"); } if (cegforma === 16 && (AFAB + AFAC) > 0) { errorMessages.push("A 16-os cégformához b) és/vagy c) nem választható!"); } if (jPont && jPont2) { errorMessages.push("Bejelentés az Áfa tv. 49/A. § (2) vagy (3) bekezdése alapján jelölésekor a nyilatkozat 1. és 2. kódnégyzete együtt nem jelölhető."); } if (kPont1 && kPont2) { errorMessages.push("Az MNB- vagy EKB-árfolyam alkalmazásának bejelentése az Áfa tv. 80. § (2) bekezdés b) pontja vagy 80/A. §-a alapján jelölésekor a nyilatkozat kódnégyzetei együtt nem jelölhetők."); } if (mPont1 && mPont2) { errorMessages.push("Társasági adó devizában történő megfizetésével kapcsolatos nyilatkozat: Egymást kizáró nyilatkozatok együtt nem jelölhetők."); } return errorMessages; }