This is an old revision of the document!
1. mXamlGetProcedure – glavna razgraničavajuća funkcija
Opis:
Ova funkcija služi kao router (usmerivač) koji na osnovu trenutno odabrane procedure (čuva se u moInput(“procedure”)) poziva odgovarajuću mXamlProcedureSEF… funkciju koja generiše XAML prikaz (dinamički interfejs) za tu konkretnu proceduru uvoza.
Ulaz: nema eksplicitne parametre, ali koristi:
moInput.Exists(“procedure”)– da li je odabrana neka proceduramoInput.CurOption.Value– kod trenutne procedure (npr. “SEFPURIEXSMPL”)
Izlaz: String – XAML kod koji definiše korisnički interfejs za odabranu proceduru. Ako nema odabrane procedure, vraća prazan string.
Pozvane funkcije (u zavisnosti od procedure):
mXamlProcedureSEFPURIEXSMPL()mXamlProcedureSEFPURIEXCPLX1()mXamlProcedureSEFPURIMATSMPL()mXamlProcedureSEFPURIMATSTD()mXamlProcedureSEFPURIMATKALK()mXamlProcedureSEFCRNOTFINTARS()mXamlProcedureSEFDENOTFINTARS()
2. mXamlProcedureSEFPURIEXSMPL()
Opis: Generiše interfejs za jednostavan uvoz računa za troškove (bez raspodele na više stavki). Prikazuje se tabela sa poreskim stopama (TaxSubtotal) iz SEF dokumenta. Za svaku stopu se nudi:
- dugme za mapiranje troška (otvara formu za odabir obračunske strukture, tarife, sektora, projekta…)
- prikaz već mapiranih podataka (obračunska struktura, vrsta troška, troškovno mesto, analitika, projekat)
Povezane funkcije:
mDecodeExpenseMap– učitava prethodno mapiranje za datu šifruOnMapExpenseClick– akcija na dugme za mapiranje
Koristi se za procedure: SEFPURIEXSMPL, SEFPURINVADVPAY
3. mXamlProcedureSEFPURIEXCPLX1()
Opis: Generiše interfejs za složeniji uvoz računa za troškove – raspodela po stavkama računa (InvoiceLine), a ne samo po poreskim stopama. Svaka stavka dobija svoj red u tabeli sa:
- šifrom, opisom, stopom poreza
- dugmetom za mapiranje troška
- prikazom obračunske strukture, vrste troška, sektora, analitike, projekta
Razlika u odnosu na SEFPURIEXSMPL:
Ova procedura tretira svaku liniju računa zasebno, što omogućava precizniju raspodelu troškova.
Povezane funkcije:
mGetSefDocumentLines– vraća kolekciju linija (InvoiceLine ili CreditNoteLine)mDecodeExpenseMap,OnMapExpenseClick
Koristi se za proceduru: SEFPURIEXCPLX1
4. mXamlProcedureSEFPURIMATSMPL()
Opis: Generiše interfejs za pojednostavljeni uvoz računa za robu – mapiranje se vrši na nivou poreskih stopa, a ne pojedinačnih artikala. Korisnik za svaku poresku stopu bira:
- vrstu artikla, tarifu, šifru, naziv, jedinicu mere
Ključna karakteristika: Ne koriste se pojedinačne stavke računa, već agregirani iznosi po stopama PDV-a.
Povezane funkcije:
mDecodeGoodsTaxMap– učitava prethodno mapiranje za datu poresku kategorijuOnMapItemClick– otvara formu za izbor artikla
Koristi se za proceduru: SEFPURIMATSMPL
5. mXamlProcedureSEFPURIMATSTD()
Opis: Generiše interfejs za standardni uvoz računa za robu – svaka stavka računa (InvoiceLine) se mapira na artikal iz šifarnika. Tabela sadrži:
- redni broj, šifru, opis, stopu PDV-a, akciju
- vrstu artikla, tarifu, šifru artikla, opis artikla, jedinicu mere
Povezane funkcije:
mGetSefDocumentLinesmDecodeGoodsMap– učitava mapiranje za datu šifru artiklaOnMapItemClick– odabir artikla
Koristi se za procedure: SEFPURIMATSTD, SEFPURICNRETURNNEW, SEFPURICNASSORT
6. mXamlProcedureSEFPURIMATKALK()
Opis: Generiše interfejs za uvoz računa koji se vezuje za postojeće prijemnice (kalkulacije). Prikazuje:
- listu nefakturisanih prijemnica (ili povratnica) dobavljača
- filter po skladištu i tekstualni filter
- mogućnost odabira jedne ili više prijemnica
- zatim vrši verifikaciju (upoređivanje količina, cena, ukupnih iznosa) između računa i odabranih prijemnica
Verifikacija se radi kroz mXamlProcedureSEFPURIMATKALKVerify() koja prikazuje sve neusaglašenosti (nepoznati artikli, viškovi, manjkovi, cene…).
Povezane funkcije:
mXamlProcedureSEFPURIMATKALKVerifyOnDocumentChecked,OnDocumentAction,OnDocumentLinkClick
Koristi se za procedure: SEFPURIMATKALK, SEFPURICNRETURN
7. mXamlProcedureSEFCRNOTFINTARS()
Opis: Generiše interfejs za finansijsko knjižno odobrenje (CreditNote) – mapiranje po poreskim stopama. Svaka poreska stopa dobija red sa:
- tarifnom grupom
- obračunskom strukturom
- iznosom osnovice, PDV-a i ukupno
- checkbox-om za potvrdu
Takođe se prikazuje i zaglavlje odobrenja (mXamlProcedureSEFCRNOTFINK) gde se bira obračunska struktura i osnov za knjiženje.
Povezane funkcije:
mXamlProcedureSEFCRNOTFINKmDecodeExpenseMap– za učitavanje mapiranja po šifri poreske kategorijeOnApproveAction– potvrda stavke
Koristi se za proceduru: SEFPURICNFIN
8. mXamlProcedureSEFDENOTFINTARS()
Opis: Veoma slična prethodnoj, ali namenjena za knjižno zaduženje (DebitNote). Takođe koristi:
- zaglavlje (
mXamlProcedureSEFCRNOTFINK) - tabelu po poreskim stopama sa tarifom, strukturom, iznosima i potvrdom
Razlika:
Umesto moSef.CreditNote koristi moSef.Invoice (jer zaduženje u UBL-u često dolazi kao Invoice sa negativnim predznakom ili posebnom oznakom).
Koristi se za proceduru: SEFPURIDNFIN
9. mDecodeGoodsMap(oInvLine As IUblDocumentLine) As IArtLstItem
Opis:
Vraća artikal iz Balans šifarnika (IArtLstItem) koji odgovara datoj liniji SEF računa. Logika:
1. Prvo pokušava da pronađe artikal na osnovu šifre artikla (''oInvLine.Code'') i dobavljača (''kupid'') kroz standardne funkcije (''FSefGetInvoiceLineItem'')
2. Ako ne uspe, čita prethodna mapiranja iz tabele ''kupciizjave'' za dati kod (''brojizjave'')
3. Ako postoji JSON zapis, popunjava ''IArtLstItem'' iz njega (''elid'', ''tarbr'', ''artikal'', ''tip'', ''boja''...)
4. Na kraju proverava da li taj artikal i dalje postoji u bazi i osvežava podatke
Važno: Uvek vraća inicijalizovan objekat. Ako artikal nije pronađen, ElID = 0.
10. mDecodeGoodsTaxMap(oTax As TaxSubtotal) As IArtLstItem
Opis:
Slično mDecodeGoodsMap, ali umesto linije računa koristi poresku kategoriju (TaxSubtotal). Ovo se koristi kod pojednostavljenih procedura gde se mapiranje ne vrši po artiklima već po stopama PDV-a.
Logika:
- Preskače se prvi korak (pretraga po šifri artikla u bazi)
- Direktno se čita prethodno mapiranje iz
kupciizjavegde je ključ šifra poreske kategorije (TaxCategory.Code) - Zatim isto osvežavanje iz baze ako
elidpostoji
Koristi se u proceduri: SEFPURIMATSMPL
11. mDecodeExpenseMap(sCode As String) As IUlazFaktSas
Opis:
Vraća objekat troška (IUlazFaktSas) za dati ključ (šifra poreske kategorije ili složeni ključ linije računa). Logika:
- Čita prethodno mapiranje iz tabele
kupciizjavegde jebrojizjave=sCode - Parsira JSON i popunjava svojstva objekta:
RacTip– obračunska struktura porezaTarID,TarOpis– tarifaTroNazID,TroOpis– naziv/pojam troškaKontoAnalit,KontoSint– kontiSekRefID– troškovno mestoSubAnalitika– analitikaDocRefID– projekat
- Takođe postavlja i iznose (
Osnovica,PDV,Ukupno) na osnovu tipa procedure (prekomFindTaxSubtotalByCodeilimFindLineByCode)
Koristi se u procedurama: SEFPURIEXSMPL, SEFPURIEXCPLX1, SEFCRNOTFINTARS, SEFDENOTFINTARS
12. Dodatne pomoćne funkcije
12.1 mXamlProcedureSEFCRNOTFINK()
Opis: Generiše zaglavlje za knjižna odobrenja/zaduženja – mali XAML formular sa dva polja:
- Obračunska struktura (
ractip) - Osnov za knjiženje (
naziv– npr. “Nabavna vrednost”, “Troškovi” itd.)
Korisnik bira vrednosti kroz posebne forme za odabir, a dugmad za brisanje omogućavaju resetovanje.
12.2 mCheckTaxRates(iUblPercent As Long, oArt As IArtLstItem, oFaktSas As IUlazFaktSas) As Boolean
Opis:
Proverava da li se poreska stopa iz SEF dokumenta (iUblPercent) poklapa sa stopom koja je definisana za odabrani artikal ili tarifu u Balansu. Ako se ne poklapa, prikazuje poruku i vraća False. Ako jeste, vraća True.
Upotreba: Poziva se prilikom mapiranja artikla ili troška da bi se sprečilo unošenje pogrešne poreske stope. Preskače se ako je SEF stopa 0 (poresko oslobođenje).
12.3 Ostale često korišćene funkcije
| Funkcija | Opis |
| — | — |
mGetSefDocumentLines() | Vraća kolekciju linija (InvoiceLines ili CreditNoteLines) iz trenutnog SEF dokumenta. |
mFindTaxSubtotalByCode(sCode) | Pronalazi TaxSubtotal objekat po šifri kategorije (npr. “S”, “P”, “Z”). |
mFindLineByCode(sCode) | Pronalazi InvoiceLine ili CreditNoteLine po kombinaciji šifre i naziva artikla. |
mCreateItemVerificationCollections(oArt) | Inicijalizuje kolekcije za praćenje grešaka prilikom verifikacije (unknown, foreign, shortage, excess, price, missing). |