Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Version History

« Previous Version 2 Next »

Pro tento účel je do systému přidána hromadná úloha Convert VAT Rate in Active Contracts (API Change VAT Group Aft. Act. (78001)). Tato úloha zabezpečí výměnu / konverzi DPH účto skupin zboží na smlouvách ve stavu Aktivní a to jak v hlavičce smlouvy tak i v ostatních tabulkách, které se smlouvou souvisí a mají dopad na výpočet DPH. Tj. změna bude provedena i pro související služby, pojištění a kalendáře.

Tato úprava probíhá bez použití změnových kopií přímo na originálech těchto smluv a vychází z logiky úlohy API Contract Services Change (4026638).

Tlačítko Convert Active Contracts na spuštění úlohy je přidáno na stránku VAT Rate Change Setup. Úlohu je také možné vyhledat pomocí systémové lupy.

image-20241128-125236.png

Request Form

Po spuštění úlohy se otevře dialogové okno Convert VAT Rate in Active Contracts pro zadání kritérií a filtrů:

image-20241128-125123.png

V sekci “Options” jsou pole:

  • Datum změny DPH (VAT Change Date)

    • Date type, defaultně prázdné

    • Uživatel zadává datum od kdy je změna sazby DPH platná a systém podle tohoto datumu posuzuje zaúčtované a nezaúčtované řádky ve splátkovém kalendáři smlouvy, viz. popis procesu úlohy

    • Povinný údaj (viz. kontroly po spuštění níže)

  • Typ změny smlouvy (Contract Change Type)

    • Lookup do tabulky Typy změn na smlouvě (4046856) s filtrem Object ID wizard (15)=empty (tzn. není doboleno vybrat změnu, která se spouští wizardem)

    • Uživatel vybere Kód typu změny smlouvy, který bude pak zapsán do Historie změn smlouvy, do pole Kód změny

    • Povinný údaj, viz kontroly po spuštění úlohy

  • Důvod změny smlouvy (Contract Change Reason)

    • Lookup do tabulky Důvody změny smlouvy (4046857)

    • Uživatel vybere Kód důvodu změny smlouvy, který bude pak zapsán do Historie změn smlouvy, do pole Důvod vykonání změny

  • Poznámka (Comment)

    • Text 120, defaultně prázdné

    • Uživatel doplní textovou poznámku, kterou pak úloha zapíše do Historie změn smlouvy, do pole Poznámka.

V sekci “Filter: Financing Contract Header” jsou filtry:

Uživatelské filtry jsou všechny defaultně prázdné

  • Financing Product Type Code

    • Pokud prázdné, na danou hodnotu se nefiltruje

  • Financing Product No.

    • Pokud prázdné, na danou hodnotu se nefiltruje

  • Customer No.

    • Pokud prázdné, na danou hodnotu se nefiltruje

  • No.

    • Číslo smlouvy o financování

    • Pokud prázdné, na danou hodnotu se nefiltruje

  • Migrated Contract

    • Option

      • Prázdne – na danou hodnotu se nefiltruje

      • No – filtruje se na hodnotu N v smlouvě

      • Yes – filtruje se na hodnotu Y v smlouvě

  • další filtry může přidat uživatel přes tlačítko + Filter…

Obecné zásady filtrování v systému BC jsou popsány zde:

Řazení, vyhledávání a filtrování seznamů - Business Central | Microsoft Learn

Úloha má i pevné filtry na hlavičku smlouvy – prochází pouze smlouvy které splňují:

  • Calc.Variant=N

  • Change Copy=N

  • Change Copy Exists=N

  • Status=Active.

Uživatel při nastavění uživatelských filtrů musí zohlednit i pevné filtry které jsou v kódu a není je možné uživatelsky modifikovat – tzn. že pokud uživatel nastavil uživatelský filtr např. na Stav=Closed, smlouvy v tomto stavu nebudou zpracovány protože pevný filtr Status=Active má přednost před uživatelskými filtry.

Úlohu je možné spustit tlačítkem OK anebo Plán…(Schedule…). Pokud je úloha spuštěna tlačítkem OK, běží interaktivně (zobrazuje případné hlášky) pod daným uživatelem. Pokud je úloha spouštěna tlačítkem Schedule…, samotné spouštění se vykonává již přeš frontu úloh (plánovač) – hlášky jsou potlačeny, resp. po spuštění již není potřebné aby daný uživatel byl přihlášen (popis dál).

Proces úlohy

Po spuštění úlohy tlačítkem “OK” anebo “Schedule” systém vykoná:

  • Kontroluje, jestli je vyplněn VAT Change Date

    • pokud není vyplněn, zobrazí chybovou hlášku “VAT Change Date must be entered. CZ: Datum změny DPH musí být zadán. SK: Dátum zmeny DPH musí byť zadaný.” a dál nepokračuje. Stejně tak při spuštění přes Schedule…

    • image-20241128-134757.png

    • pokud je vyplněn pokračuje dál na další kontrolu

  • Kontrolu, jestli je vyplněn Contract Change Type

    • Pokud není vyplněn, zobrazí chybovou hlášku “Contract Change Type must be entered. CZ: Typ změny smlouvy musí být zadán.” a dál nepokračuje. Stejně tak při spuštění přes Schedule…

    • image-20241128-134658.png

    • Pokud jsou vyplněny, pokračuje dál

  • Pokud všechny kontroly jsou bez chyby, úloha se spustí a prochází hlavičky smluv o financování. Hledá smlouvy přes pevné filtry (prochází smlouvy které mají):

    • Calc.Variant=N

    • Change Copy=N

    • Change Copy Exists=N

    • Status=Active

    • i přes filtry, které byly zadány uživatelem v dialogovém okně úlohy, v sekci Filter: Financing Contract Header

  • Na nalezených smlouvách pak vykoná kontrolu jestli na smlouvě existuje alikvotní splátka v splátkovém kalendáři smlouvy API Financing Contract Line (4026398):

    • Financing Contract No. (1)=stejné

      • Type (6)=Payment

      • Aliqout Payment (810)=Y

    • Pokud existuje, vykoná kontrolu, jestli je tato splátka zaúčtována. Tj. v poli Posted=Y.

      • pokud není zaúčtována (tzn. smlouva je po aktivaci a před zaúčtováním alikvotu), pak tuto smlouvu nezprocesuje respektive ji zapíše do Contract Change Log:

        • smlouvu zapíše do Contract Change Log s Recalculation Result=Fail a Error Detail=Posted aliquot payment does not exist. (CZ: Neexistuje zaúčtovaná alikvotní splátka.)

        • pokračuje na další smlouvu

      • pokud je zaúčtována, pokračuje na kontrolu VAT Reporting Date (viz dál)

    • Pokud alikvotní splátka neexistuje (Handover Date=1. den v měsíci), vykoná kontrolu jestli smlouva má aspoň jednu zaúčtovanou řádnou splátku ve splátkovém kalendáři smlouvy API Financing Contract Line (4026398):

      • Financing Contract No. (1)=stejné

      • Type (6)=Payment

      • Aliqout Payment (810)=N

      • Recalculation Settlement (3045)=N

      • Partial Payment Credit (3055)=N

      • Posted (50)=Y

      • Pokud taková splátka neexistuje (tzn. smlouva je po aktivaci, bez alikvotu a před zaúčtováním první řádné splátky), pak tuto smlouvu neprocesuje respektive ji zapíše do Contract Change Log:

        • smlouvu zapíše do Contract Change Log s Recalculation Result=Fail a Error Detail=Posted regular payment does not exist. (CZ: Neexistuje zaúčtovaná řádná splátka.)

        • pokračuje na další smlouvu

      • Pokud taková splátka existuje, pokračuje dál na kontrolu VAT Reporting Date (viz dál)

  • Na nalezených smlouvách pak vykoná kontrolu, jestli k dané smlouvě existuje zaúčtovaná řádná splátka v splátkovém kalendáři smlouvy API Financing Contract Line (4026398), která má VAT Reporting Date (850) nebo VAT Date (CZ/SK: 4027520) větší nebo rovné k zadanému Datum změny DPH (VAT Change Date) z dialogového okna úlohy:

    • Financing Contract No. (1)=stejné

    • Type (6)=Payment

    • Aliqout Payment (810)=N

    • Recalculation Settlement (3045)=N

    • Partial Payment Credit (3055)=N

    • Posted (50)=Y

    • VAT Date (CZ/SK: 4027520) nebo VAT Reporting Date (850) => VAT Change Date

    • Pokud taková splátka existuje (tzn. smlouva má zaúčtovanou splátku s datumem DPH větším jako je datum změny DPH), pak tuto smlouvu neprocesuje resp. zapíše jí do Contract Change Log:

      • smlouvu zapíše do Contract Change Log s Recalculation Result=Fail a Error Detail=The contract must not include posted payment with a VAT Date higher than or equel to the VAT Change Date. (CZ: Na smlouvě nesmí být zaúčtovaná splátka s datumem DPH výšším nebo rovným než je datum změny DPH. SK: Na zmluve nesmie byť zaúčtovaná splátka s dátumom DPH vyšším alebo rovným ako je dátum zmeny DPH.)

      • pokračuje na další smlouvu

    • Pokud taká splátka neexistuje, pokračuje dál na další kontrolu

  • Na nalezených smlouvách pak vykoná kontrolu, jestli k dané smlouvě existuje nezaúčtovaná řádná splátka v splátkovém kalendáři smlouvy API Financing Contract Line (4026398),

    • Financing Contract No. (1)=stejné

    • Type (6)=Payment

    • Aliqout Payment (810)=N

    • Recalculation Settlement (3045)=N

    • Partial Payment Credit (3055)=N

    • Posted (50)=N

    • Pokud taková splátka neexistuje (tzn. smlouva je v posledním měsíce řádného trvání a před automatickém prodloužení), pak tuto smlouvu nezprocesuje resp. zapíše jí do Contract Change Log:

      • smlouvu zapíše do Contract Change Log s Recalculation Result=Fail a Error Detail=Unposted payment does not exist. (CZ/SK: Neexistuje nezaúčtovaná splátka.)

      • pokračuje na další smlouvu

    • Pokud taková splátka existuje, tak se provede kontrola, že první nezaúčtovaná splátka má zároveň VAT Reporting Date (850) nebo VAT Date (SK/CZ: 4027520) větší nebo rovné k zadanému Datum změny DPH (VAT Change Date) z dialogového okna úlohy. Pokud podmínka:

      • JE splněna, tak pokračuje dál na zpracování originálu smlouvy (viz níže)

      • NENÍ splněna, tak:

        • smlouvu zapíše do Contract Change Log s Recalculation Result=Fail a Error Detail=The first unposted payment does not have a VAT Date higher than or equal to the VAT Change Date. (CZ: První nezaúčtovaná splátka nemá Datum DPH vyšší nebo rovné Datumu změny DPH. SK: Prvá nezaúčtovaná splátka nemá Dátum DPH vyšší alebo rovný Dátumu zmeny DPH.)

        • pokračuje na další smlouvu

  • Pak pokračuje na zpracování originálu smlouvy:

    • systém k nalezené smlouvě, která splňuje všechny kontroly výše:

      • vykoná zpracování DPH účto skupín dle popisu níže v odstavci Zpracování originálu smlouvy

      • při zpracování dané smlouvy zobrazuje hlášku: “Working on it…Contract…” (pokud byla úloha spuštena přes Schedule…, hlášku se nezobrazuje)

      • po zpracování vytvoří zápis do historie změn smlouvy.

Pro vytvoření zápisu do API Contract Change History (4046858) použije následující hodnoty:

  • Change Type Code = Contract Change Type z request formu

  • Approved By = ID uživatele, který úlohu spouští

  • Approval Date = work date systému

  • Change Reason Code = Contract Change Reason z request formu

  • Change Valid From = work date systému

  • Change Date = Date To z posledné zaúčtované splátky (Posted=Y, Canceled=N, Aliqout Payment=N, Recalculation Settlement=N, Partial Payment Credit=N)

  • Comment = Comment z request formu

  • Closed (15)=Y (aby při přenosu již nabyla vyžadováno schválení)

  • po dokončení vytvoří zápis do Contract Change Log s Recalculation Result=Success.

Zpracování originálu smlouvy:

  • zjistí si jakou konverzi bude dělat v tabulce VAT Rate Change Conversion (551) tak, že si projde všechny řádky a bude nahrazovat hodnotu z pole From Code hodnotou v poli To Code

image-20241031-082514.png
  • zapíše na hlavičku smlouvy nové DPH účto skupiny zboží podle dohledané hodnoty v poli To Code z tabulky konverzí do těchto polí tak, že změnu provede jen v těch polích, ve kterých najde shodnou hodnotu jaká je v tabulce konverzí v poli From Code: Kamilova otázka: změna se bude dělat s validací nebo pouhým přiřazením?

    • DPH účto skupina jistina (VAT Posting Group Principal), W1 pole 310 (zde je další kód po validaci)

    • DPH účto skupina úrok (VAT Posting Group Interest), W1 pole 311

    • DPH účto skupina jednoduchého servisu (VAT Posting Group Simple Service), W1 pole 315

    • DPH účto skupina zvláštní režim – daňová (VAT P.Gr. Special Mode Tax), SK pole 4027530, CZ pole 4047510

    • DPH účto skupina splátky spl.prodeje (VAT Posting Group Whole Paym.), W1 pole 322

    • DPH účto skupina jednoduchého pojištění (VAT Posting Group Simple Ins.), W1 pole 318

    • DPH účto skupina jednoduchého poplatku (VAT Posting Group Simple Fee), W1 pole 316

    • VAT Posting Group Deposit, W1 pole 320

    • DPH účto skupina zboží splátky při dodání zboží (VAT Prod. Post. Gr. Del. Goods), SK pole 19610

    • DPH účto skupina zboží splátky při dodání zboží - opravný doklad (VAT Prod. Post. Gr. Correction), SK pole 19615

  • V tabulce API Contract Service (4026681) dohledá služby:

    • Filtry:

      • Service Contract Type (5, Option, PK)=Contract

      • Contract No. (10, Code[20])=stejné

      • Service Status (20, Option)=Active

    • pokud nenaleze žádné služby, pokračuje na pojistky

    • na všech nalezených službách vykoná konverze DPH účto skupiny stejným způsobem jako v hlavičce smlouvy:

      • VAT Prod. Posting Group (125)=stejná hodnota jako pole Code From

    • Ve splátkových kalendářích nalezených služeb dohledá nezaúčtované řádky Line Type (5)=Payment a Posted (75)=N a updatne:

      • VAT Prod. Posting Group (120) = VAT Prod. Posting Group (125) z hlavičky dané služby

      • VAT % (125) = dle kombinace VAT Bus. Posting Group a VAT Prod. Posting Group (standard)

      • VAT Amount (130) = přepočte dle nové sazby VAT.

    • po dokončení všech služeb pokračuje na pojistky.

  • V tabulce API Insurance Contract (4027100) dohledá pojistky:

    • Filtry:

      • Financing Contract No. (50, Code[20])=stejné

      • Status (60, Option)=Active

      • Valid To >= Datum změny DPH (VAT Change Date) z dialogového okna úlohy)

      • Insurance Type (910, Option) <> Individual

    • Pokud nenalezne žádné pojistky, pokračuje na další krok.

    • Na všech nalezených pojistkách vykoná konverze DPH účto skupiny stejným způsobem jako v hlavičce smlouvy:

      • VAT Prod. Posting Group (915, Code[20])=stejná hodnota jako pole Code From

    • Pokračuje na klientské kalendáře nalezených pojistek v API Ins. Client Payment Cal. (4027105) a na nezaúčtovaných řádcích Posted (80)=N vykoná update:

      • VAT Prod. Posting Group (910) = VAT Prod. Posting Group (915) z hlavičky dané pojistky

      • VAT % (915) = dle kombinace VAT Bus. Posting Group a VAT Prod. Posting Group (standard)

      • VAT Amount (955) = přepočte dle nové sazby VAT.

    • Pokračuje na kalendáře pojišťovny nalezených pojistek v API Ins. Company Payment Cal. (4027106) a na nezaúčtovaných řádcích Blocked (70)=N vykoná update:

      • VAT Prod. Posting Group (915) = VAT Prod. Posting Group (915) z hlavičky dané pojistky

      • VAT % (950) = dle kombinace VAT Bus. Posting Group a VAT Prod. Posting Group (standard)

      • VAT Amount (955) = přepočte dle nové sazby VAT.

    • po dokončení všech pojistek pokračuje na dalši krok.

Alternativně zvážit rekalkulaci pojistných kalendářů ale s ohledem na smlouvy s Contract Extension=Y (informal), na kterých nemůže být spouštěna rekalkulace nebo nasazení splátkového kalendáře smlouvy - prebrať s Romanom/Maruškou.

  • pokud je v hlavičce smlouvy API Financing Contract Header (4026397) příznak Paym. Calendar Is Tax Document (19032, Boolean)=Y, nastaví hodnotu nového pole Prn. Queue VAT na Y.

  • Pokud je Change Type<>Add To Queue, na závěr zpracování dané smlouvy úloha vykoná:

    • deaktivuje existující varianty smlouvy přepnutím jejich Calc. Variant Status na Inactive

    • provede update částek z kalendářů služeb do splátkového kalendáře smlouvy (bez spouštění finanční kalkulačky) aktualizací hodnoty Service

    • update splátkového kalendáře smlouvy:

      • pokud APICZ VAT Special Mode (4047500, Boolean)=Y v hlavičce smlouvy, vykoná přepočet splátkového kalendáře smlouvy (tzv. rekalkulační větev). Pozn. tyto smlouvy musíme rekalkulovat, spec. DPH režim jinak nevyřešíme.

      • pokud N, vykoná update polí v splátkovém kalendáři smlouvy bez spouštění finanční kalkulačky a nasazení splátkového kalendáře (pozn. důvodem jsou smlouvy s Contract Extension=Y):

        • VAT Posting Group Principal (310, Code[20]) - převzít z hlavičky smlouvy pokud v hlavičce neprázdní

        • VAT Posting Group Interest (311, Code[20]) - převzít z hlavičky smlouvy pokud v hlavičce neprázdní

        • VAT Posting Group Service (315, Code[20]) - převzít z hlavičky smlouvy pokud v hlavičce neprázdní

        • VAT Posting Group Simple Ins. (318, Code[20]) - převzít z hlavičky smlouvy pokud v hlavičce neprázdní

        • VAT Posting Group Simple Fee (319, Code[20]) - převzít z hlavičky smlouvy pokud v hlavičce neprázdní

        • APICZ VAT P.Gr.Sp.Mode Non-Tax (4047560, Code[) - převzít z hlavičky smlouvy pokud v hlavičce neprázdní

        • APICZ VAT Pos.Gr.Spec.Mode Tax (4047565, Code[20]) - převzít z hlavičky smlouvy pokud v hlavičce neprázdní

        • VAT Principal (12, Decimal)

        • Amount VAT Interest (18, Decimal)

        • Amount VAT Insurance (21, Decimal)

        • Amount VAT Service (24, Decimal)

        • Amount VAT Simple Fee (422, Decimal)

        • Amount VAT Selling Price (3010, Decimal)

        • Amount Excl. VAT Aliquot (3020, Decimal)

        • APICZ VAT Base Special Mode (4047550, Decimal)

        • APICZ VAT Amount Special Mode (4047555, Decimal)

        • Amount (34)

        • Amount VAT Deposit (40, Decimal)

    • v hlavičce smlouvy zaktualizuje hodnoty polí na základě hodnot z první neúčtované řádné splátky v SPK smlouvy:

      • Annuity Excl.VAT

      • Services Excl. VAT

      • Insurance Excl. VAT

      • Simple Fee Excl. VAT

      • Payment Excl.VAT

      • Payment Incl.VAT

      • Deposit Including VAT (42, Decimal)

    • může být potřebné nastavení příznaků smlouvy na Y (pokud se některé při nejaké změne zhodia na N):

      • Service - Updated (150, Boolean)

      • Insurance - Updated (151, Boolean)

      • Payments - Updated (152, Boolean)

      • Calculation Lines - Updated (153, Boolean)

      • Calc. Inputs - Updated (154, Boolean)

      • Annuity Updated (4047070, Boolean)

      • Insurance Input Updated (4047075, Boolean)

    • po zpracování změnové kopie ze změnové kopie doplní New Payment Excl.VAT

    • vytvoří zápis do Contract Change Log

    • zobrazí hlášku “Změna byla vykonaná na X smlouvě (-ách). Na Y smlouvě (-ách) se vyskytla chyba.”.

  • Vyfiltruje smlouvy dle uživatelských filtrů v sekci Options (pokud jsou prázdné, nefiltruje se na ní) a na pevný filtr Status<Active

  • úloha provede konverzi sazeb DPH účto skupin dle nastavení v tabulce VAT Rate Change Conversion (551)v následujících oblastech ale pouze pokud je příslušná účto skupina v cílovém poli neprázdná.

  • Úloha následně zapíše nové DPH účto skupiny zboží podle dohledané hodnoty v poliTo Code (3, Code[20])z tabulky konverzí do těchto polí tak, že změnu provede jen v těch polích, ve kterých najde shodnou hodnotu jaká je v tabulce konverzí v poli From Code (2, Code[20], PK. Úloha pracuje v cyklu a takto prověří všechny nastavené řádky.

 Oblast

Pole

Hlavička smlouvy

  • API Financing Contract Header (4026397)

  • DPH účto skupina jistina (VAT Posting Group Principal (310, Code[20]))

  • DPH účto skupina úrok (VAT Posting Group Interest (311, Code[20]))

  • DPH účto skupina jednoduchého servisu (VAT Posting Group Simple Serv. (315, Code[20]))

  • DPH účto skupina zvláštní režim – daňová (VAT P.Gr. Special Mode Tax), SK pole 4027530, CZ pole 4047510

  • DPH účto skupina splátky spl.prodeje (VAT Posting Group Whole Paym. (322, Code[20]))

  • DPH účto skupina jednoduchého pojištění (VAT Posting Group Simple Ins. (318, Code[20]))

  • DPH účto skupina jednoduchého poplatku (VAT Posting Group Simple Fee (316, Code[20]))

  • DPH účto skupina zboží splátky při dodání zboží (VAT Prod. Post. Gr. Del. Goods (19610, Code[20]))

  • DPH účto skupina zboží splátky při dodání zboží - opravný doklad (VAT Prod. Post. Gr. Correction (19615, Code[20]))

Služby smlouvy (všechny)

  • API Contract Service (4026681)

VAT Prod. Posting Group (125, Code[20])

Pojistné smlouvy

  • API Insurance Contract (4027100)

(pouze v Status=Preparation,Insurance Type <> Individual)

VAT Prod. Posting Group (915, Code[20])

  • Pokud je úloha spuštěna bez plánovače, zobrazí se uživateli na konci zpracování informační okno s počtem zpracovaných smluv a možností otevřít Contract Change Log.

image-20241128-141444.png

Ukázka logů k této úloze:

image-20241128-141403.png

Spuštění úlohy přes frontu úloh, tlačítkem Schedule…, Fronta změn smlouvy a Log změn smlouvy jsou popsány v PD https://iao.atlassian.net/wiki/x/jADVAQhttps://iao.atlassian.net/wiki/x/nADVAQ https://iao.atlassian.net/wiki/x/wADWAQ.

 

 

  • No labels