POVRATAK
Metoda: spremiRaspodjeluPoPozicijamaDokumentaV2 (verzija 2)
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 |
VsID | VsID iz zahtjeva | string(36) | | 1..1 |
Godina | Poslovna godina iz zahtjeva | smallint | | 1..1 |
DokVrsta | Vrsta dokumenta iz zahtjeva | string(40) | | 1..1 |
DokGUID | Identifikator dokumenta iz zahtjeva | uniqueidentifier | | 1..1 |
raspodjele | {Or | 1..1 |
raspodjela | 1..n |
PozSifra | Šifra pozicije iz zahtjeva | string(8) | | 1..1 |
KonKonto | Konto troška vezan za poziciju iz zahtjeva. | string(12) | | 0..1 |
Iznos | Iznos po poziciji iz zahtjeva | decimal(18,2) | | 1..1 |
Valuta | Troznačna šifra valute prema ISO 4217 standardu iz zahtjeva. | string(3) | | 1..1 |
greska | 1..1 |
Greska | Vrać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) | tinyint | | 1..1 |
OpisGreske | Opis 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 |
greska | Or} | 1..1 |
Greska | Vrać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) | tinyint | | 1..1 |
OpisGreske | Opis greške prilikom ažuriranja podatka | string(300) | | 1..1 |
/greska |
/spremiRaspodjeluPoPozicijamaDokumentaResponse |
*