POVRATAK

Metoda: spremiRaspodjeluPoPozicijamaDokumentaV2 (verzija 2)

Opis funkcionalnosti https://spihr.sharepoint.com/:w:/r/_layouts/15/Doc.aspx?sourcedoc=%7BC4012AC4-7DA1-41BC-B73D-5544AE16ED6C%7D&file=Metoda%20spremiRaspodjeluPoPozicijamaDokumentaV2.docx&action=default&mobileredirect=true&DefaultItemOpen=1

1. Kontrola prava pristupa

Za kontrolu prava korištenja metode u 098 se provjerava slijedeća operacija:

Aplikacija Broj operacije Kontrolirana metoda
147 WS147GRpd2 spremiRaspodjeluPoPozicijamaDokumentaV2

2. Opis rada metode

Metoda vrši spremanje raspodjele dokumenta po pozicijama.

Koraci obrade:

1. Vrši se provjera aktivnosti vanjskog sustava u LCSPI tablici LCZAJ_VanjskiSustavi preko pristiglog VsID.

2. Vrši se provjera zatvorenosti poslovne godine poslane u elementu Godina preko parametra LC192_ParametriSC.STR2[2] ('D' = godina zatvorena).

Ukoliko godina nije zatvorena (LC192_ParametriSC.STR2[2] <> 'D') tada se prelazi na slijedeći korak.
Ukoliko godina je zatvorena tada se za taj slog puni Greska = 2 na nivou dokumenta uz OpisGreske = "Poslovna godina je zatvorena" i prekida se daljnja obrada tog sloga.

3. Vrši se provjera glavne valute korisnika i poslovnoj godini poslanoj u elementu Godina preko funkcije uf_LCZAJ_VratiGlavnuValutuKorisnika.

Ukoliko je glavne valute korisnika jednaka poslanom elementu Valuta tada se prelazi na slijedeći korak.
Ukoliko je glavne valute korisnika različita od poslanog elementa Valuta tada se za taj slog puni Greska = 4 na nivou dokumenta uz OpisGreske = "Neispravna valuta raspodjele." i prekida se daljnja obrada tog sloga.

4. Vrši se provjera postojanja dokumenta ovisno o elementu DokVrsta u LC SPI bazi poslovne godine (element Godina) prema identifikatoru dokumenta DokGUID (DokGUID = Rowguid u tablicama).
Za DokVrsta = "SCD192" pretražuje se tablica LCZAJ_UraPocetno i LC192_KnjizniZapisiPocetno.
Za DokVrsta = "UGO125" pretražuje se tablica LC361_Ugovori.

Ukoliko dokument postoji tada se prelazi na slijedeći korak.
Ukoliko dokument ne postoji tada se za taj slog puni Greska = 3 na nivou dokumenta uz OpisGreske = "Dokument nije pronađen u LC SPI sustavu" i prekida se daljnja obrada tog sloga.

5. Ovisno o elementu DokVrsta pretražuju se tablice raspodjele po pozicijama dokumenata u LC SPI bazi za dokument dohvaćen pomoću identifikatora dokumenta DokGUID.
Za DokVrsta = "SCD192" pretražuje se tablica LC147_StavkeIKRaspodjele.
Za DokVrsta = "UGO125" pretražuje se tablica LC127_UgovoriPozicijePlanStavke.

Ukoliko raspodjela ne postoji tada se prelazi na slijedeći korak.
Ukoliko raspodjela postoji tada se za taj slog puni Greska = 4 na nivou dokumenta uz OpisGreske = "Dokument već ima raspodjelu po pozicijama" i prekida se daljnja obrada.

6. Vrši se sumiranje poslanih iznosa raspodjele te usporedba sa iznosom dokumenta ovisno o elementu DokVrsta u LC SPI bazi poslovne godine (element Godina) prema identifikatoru
dokumenta DokGUID (DokGUID = Rowguid u tablicama).
Za DokVrsta = "SCD192" sumiraju se kolone LCZAJ_UraPocetno.Bruto ili LC192_KnjizniZapisiPocetno.(Duguje + Potrazuje).
Za DokVrsta = "UGO125" sumiraju se kolone LC127_Ugovori.KonacnaVrijednostSaPDV.

Ukoliko se iznosi podudaraju tada se prelazi na slijedeći korak.
Ukoliko se iznosi ne podudaraju tada se za taj slog puni Greska = 5 na nivou dokumenta uz OpisGreske = "Suma raspodjele ne odgovara iznosu dokumenta" i prekida se daljnja obrada tog sloga.

7. Vrši se provjera postojanja pozicije u aktivnom planu proračuna (tablica LC147_Pozicije) ovisno o elementu PozSifra u LC SPI bazi poslovne godine (element Godina).
Provjera se vrši za sve poslane pozicije prije spremanja podataka jer bilo koja od grešaka rezultira prekidom obrade spremanja raspodjele dokumenta.

Ukoliko sve poslane pozicije postoje tada se prelazi na slijedeći korak.
Ukoliko jedna od pozicija ne postoji tada se za taj slog puni Greska = 1 na nivou raspodjele uz OpisGreske = "Nepostojeća pozicija u aktivnom planu proračuna" i prekida se daljnja obrada tog sloga.

8. Ukoliko je poslan element KonKonto vrši se provjera postojanja konta u tablici LCZAJ_RacunskiPlan u LC SPI bazi poslovne godine (element Godina).
Provjera se vrši za sve poslane stavke raspodjele prije spremanja podataka jer bilo koja od grešaka rezultira prekidom obrade spremanja raspodjele dokumenta.

Ukoliko element nije poslan tada se prelazi na slijedeći korak jer će se prilikom spremanja podataka uzeti prvi konto na poziciji.
Ukoliko poslana konta postoje tada se prelazi na slijedeći korak.
Ukoliko jedan od poslanih konta ne postoji tada se za taj slog puni Greska = 2 na nivou raspodjele uz OpisGreske = "Nepostojeći konto" i prekida se daljnja obrada tog sloga.

9. Ukoliko je poslan element KonKonto vrši se provjera postojanja konta na poziciji u aktivnom planu proračuna u tablici LC147_RacuniPozicije u LC SPI bazi poslovne godine (element Godina).
Provjera se vrši za sve poslane stavke raspodjele prije spremanja podataka jer bilo koja od grešaka rezultira prekidom obrade spremanja raspodjele dokumenta.

Ukoliko element nije poslan provjerava se da li u navedenoj tablici postoji poslana pozicija.
Ukoliko pozicija postoji tada se prelazi na slijedeći korak.
Ukoliko pozicija ne postoji tada se za taj slog puni Greska = 3 na nivou raspodjele uz OpisGreske = "Nepostojeći konto na poziciji za aktivni plan proračuna."
i prekida se daljnja obrada tog sloga.

Ukoliko poslana konta postoje na poslanim pozicijama tada se prelazi na slijedeći korak.
Ukoliko jedan od poslanih konta ne postoji na poslanoj poziciji tada se za taj slog puni Greska = 3 na nivou raspodjele uz OpisGreske = "Nepostojeći konto na poziciji za aktivni plan proračuna."
i prekida se daljnja obrada tog sloga.

10. Vrši se punjenje pripadajućih tablica raspodjele po pozicijama dokumenata u LC SPI bazi prema elementu DokVrsta.
Za DokVrsta = "SCD192" puni se tablica LC147_StavkeIKRaspodjele.
Za DokVrsta = "UGO125" puni se tablica LC127_UgovoriPozicijePlanStavke.

11. Vrši se punjenje odgovora metode prema specifikaciji.

*

3. Punjenje (ažuriranje) tablica u bazi

Punjenje LC SPI tablice LC147_StavkeIKRaspodjele :

Naziv kolone Element Napomena
RBS Generira se redni broj stavke po dokumentu
Iznos Iznos Iznos stavke raspodjele poslan u zahtjevu
ID Generira se novi identifikator
IznosPDV 0,00
XDatumVrijeme GETDATE()
OperatoriID Dohvaća se iz tablice LCZAJ_Operatori LC SPI baze preko pristiglog identifikatora vanjskog sustava VsID
KnjizniZapisiPocetnoID Ukoliko je po DokGUID pronađen slog u LC192_KnjizniZapisiPocetno tada se upisuje identifikator KnjizniZapisiPocetnoID
UraPocetnoID Ukoliko je po DokGUID pronađen slog u LCZAJ_UraPocetno tada se upisuje identifikator UraPocetnoID
PozicijeID PozSifra Upisuje se identifikator pozicije aktivnog plana proračuna LC147_Pozicije.PozicijeID dohvaćen preko poslanog elementa PozSifra
RazdjelID LC147_PlanStavke.RazdjelID dohvaćeno pomoću LC147_Pozicije.PozicijeID
ProjektiID LC147_PlanStavke.ProjektiID dohvaćeno pomoću LC147_Pozicije.PozicijeID
FunkcijskaKlasifikacijaID LC147_PlanStavke.FunkcijskaKlasifikacijaID dohvaćeno pomoću LC147_Pozicije.PozicijeID
OdjeliID LC147_PlanStavke.OdjeliID dohvaćeno pomoću LC147_Pozicije.PozicijeID
MjestaTroskaID LC147_PlanStavke.MjestaTroskaID dohvaćeno pomoću LC147_Pozicije.PozicijeID
LokacijeID LC147_PlanStavke.LokacijeID dohvaćeno pomoću LC147_Pozicije.PozicijeID
RacunskiPlanID KonKonto LCZAJ_RacunskiPlan.RacunskiPlanID dohvaćen preko poslane vrijednosti KonKonto.
Ukoliko KonKonto nije poslan tada se uzima LC147_RacuniPozicije.RacunskiPlanID (prvi slog za PozicijeID)
IzvoriFinanciranjaID LC147_PlanStavke.IzvoriFinanciranjaID dohvaćeno pomoću LC147_Pozicije.PozicijeID
KorisniciProracunaID LC147_PlanStavke.KorisniciProracunaID dohvaćeno pomoću LC147_Pozicije.PozicijeID
OP1RacunskiPlanID NULL
Storno default(0)
Preknjizeno default(0)
TipoviUraID NULL
RasporediPDV Prepisati sa LC147_Pozicije.ObracunavatiPDVZaPoziciju
IznosUValuti default(0)
TarifniBrojeviID NULL
PreknjizenjeTemeljnicaStavkeID NULL

Punjenje LC SPI tablice LC127_UgovoriPozicijePlanStavke :

Naziv kolone Element Napomena
RacuniPozicijeID LC147_RacuniPozicije.RacuniPozicijeID dohvaćeno pomoću LC147_Pozicije.PozicijeID i
- ukoliko je poslan element KonKonto preko LCZAJ_RacunskiPlan.RacunskiPlanID
- ukoliko nije poslan element KonKonto tada prvi dohvaćeni LC147_RacuniPozicije.RacuniPozicijeID po LC147_Pozicije.PozicijeID
UgovoriID LC127_Ugovori.UgovoriID dohvaćeno preko DokGUID
OperatoriID Dohvaća se iz tablice LCZAJ_Operatori LC SPI baze preko pristiglog identifikatora vanjskog sustava VsID
XDatumVrijeme GETDATE()
PozicijeID PozSifra Upisuje se identifikator pozicije aktivnog plana proračuna LC147_Pozicije.PozicijeID dohvaćen preko poslanog elementa PozSifra
IznosPozicije Iznos Iznos stavke raspodjele poslan u zahtjevu

*

4. Punjenje odgovora metode:

Opis Tip podatka uvjet O
spremiRaspodjeluPoPozicijamaDokumentaResponse
VsIDVsID iz zahtjevastring(36)1..1
GodinaPoslovna godina iz zahtjeva smallint1..1
DokVrstaVrsta dokumenta iz zahtjevastring(40)1..1
DokGUIDIdentifikator dokumenta iz zahtjevauniqueidentifier1..1
raspodjele{Or1..1
raspodjela1..n
PozSifraŠifra pozicije iz zahtjevastring(8)1..1
KonKontoKonto troška vezan za poziciju iz zahtjeva.string(12)0..1
IznosIznos po poziciji iz zahtjevadecimal(18,2)1..1
ValutaTroznačna šifra valute prema ISO 4217 standardu iz zahtjeva.string(3)1..1
greska1..1
GreskaVraća se greška pojedinog sloga raspodjele po pozicijama
0 – nema greške;
1 – greška (nepostojeća pozicija u aktivnom planu);
2 – greška (nepostojeći konto);
3 - greška (nepostojeći konto na poziciji za aktivni plan)
4 - greška (neispravna valuta raspodjele)
tinyint1..1
OpisGreskeOpis greške u slučaju da zapis nije uspješno ažuriran u sustavu.
– obavezan za Greska <> 0
string(300)0..1
/greska
/raspodjela
/raspodjele
greskaOr}1..1
GreskaVraća se globalna greška ili greška nastala provjerom dokumenta
1 – greška (globalna);
2 - greška (nije pronađen dokument sa poslanim identifikatorom);
3 – greška (dokument već ima raspodjelu);
4 – greška (suma raspodjele ne odgovara iznosu dokumenta);
5 – greška (dokument pripada početnom stanju)
tinyint1..1
OpisGreskeOpis greške prilikom ažuriranja podatkastring(300)1..1
/greska
/spremiRaspodjeluPoPozicijamaDokumentaResponse

*