4D Wand IMC - Internet/Mobile Connector

Datum kreiranja: 06.05.2011.

Datum zadnje izmjene: 10.07.2023 - Dodana kolona CentralaID u tablici DokPartners

Općenito o 4D Wand IMC - Web aplikacija

4D Wand IMC je razvijen kao vlastito rješenje za korisnike 4D Wand-a koji žele nad 4D Wandom imati web shop. Modul 4D Wand IMC je neophodan i obvezan kao temelj izrade web shop-a i ako to rade druge programerske tvrtke.

Za potrebe 4D Wand IMC-a razvili smo određene mehanizme razmjene podataka. Naše rješenje je univerzalno i nije predviđeno za posebno krojenje od korisnika do korisnika (zato i je financijski povoljno). Nekim našim korisnicima isto neće biti dovoljno. Iz tog razloga smo odlučili naše metode razmjene podataka nadograditi i u smjeru da se iste koriste i za druga web rješenja. Time je svima olakšana izrada web shopa, a korisnik je siguran da će se sve odrađivati u 4D Wandu na odgovarajući način (tu svakako treba uzeti u obzir da podaci trebaju biti obrađeni po Zakonu). Redovito održavamo mehanizme razmjene, a ako nam netko javi da mu treba nešto dodatno i procijenimo da je isto mudro tj. vrijedno da bude sadržano u razmjeni, rado ćemo traženo dodati u mehanizme samog 4D Wand IMC-a, te revidirati upute.

Nad 4D Wand-om ne postoje web servisi (API-i), podaci se šalju i primaju isključivo iz 4D Wand-a.

Mogućnosti korištenja 4D Wand IMC-a

4D Wand šalje na Internet SQL skriptu kojom puni MS SQL bazu. Nad kreiranim tablicama u MS SQL-u moguće su tri opcije:

1.Koristiti našu web aplikaciju i dizajn
4D Wand IMC aplikacija bazirana je na responsive tehnologijama (Bootstrap) i automatski se prilagođava uređaju korisnika: računalu, tabletu, pametnom telefonu.
Napisana je poštujući trenutačne preporuke i tehnologije Microsofta za razvoj web aplikacija (C#, MVC, Javascript,...).

2.Promijeniti dizajn nad našim web shopom
Nad našim 4D Wand IMC napraviti izmjene u dizajnu (CSS). Funkcionalnost kataloga ostaje ista, ali korisnik na sebe preuzima obavezu održavanja i sinkronizacije vizualnog identiteta i eventualnih prilagodbi u skriptama.
Postoji predviđeno mjesto za personalizaciju izgleda web shopa uređivanjem CSS-a kroz 4duser.css datoteku koja se standardno nalazi na web serveru na lokaciji /Content/css/4duser.css
 Napomena: Datoteka 4duser.css će zadržati sve izmjene prilikom ažuriranja novih verzija 4D Wand IMC, odnosno neće biti prepisana.

3.Kreirati vlastiti web shop
Razviti vlastitu web aplikaciju nad ili uz pomoć naših SQL tablica. 4D Wand će i dalje slati podatke o artiklima, osobama itd. u SQL tablice. Korisnikova web aplikacija treba puniti postojeće tablice narudžbi (Narudzbas) i stavki košare (Kosaras) koje će onda 4D Wand učitati putem naše web aplikacije. Time se 4D Wandu prepušta Ažuriranje tablica i učitavanje narudžbi, a vanjski programeri mogu napraviti cijeli web shop vlastitim alatima i tehnologijama i samo čitati i pisati u SQL tablice bez ikakvog dodira s 4D Wandom. Napominjemo da je važno popuniti sva polja na način kao što radi i 4D Wand web aplikacija. Posebno napominjemo da polje BrojNarudzbe mora biti u rastućem redoslijedu. U našoj aplikaciji polje se kreira kao [yyMMdd-hhmmss-ms] (godina mjesec dan - sati minute sekunde - milisekunde) trenutka kompletiranja narudžbe i slanja obavijesti kupcu - znači da taj broj nastaje na kraju procesa obrade narudžbe kada je kupac gotov s naručivanjem i istu pošalje. Polje "Poslano" treba biti popunjeno s"1" jer označava da je poslana obavijest kupcu i korisniku o novoj narudžbi s web-a. Da bi korisnik prethodno opisano mogao odraditi, treba imati modul 4D Wand IMC i treba obavezno imati delegiranu osobu koja će dobro poznavati korištenje 4D Wand IMC-a unutar samog 4D Wanda (npr. kako definirati koje artikle želi, kako definirati eventualnu rabatnu politiku, stanje skladišta za artikle, kako povući narudžbu s web-a u 4D Wand i slično), a koja će komunicirati s tvrtkom koja se bavi web programiranjem.

VAŽNA NAPOMENA:

4D Wand je jedini izvor istine! Podaci koje smije popunjavati treća strana su jedino podaci u tablicama [Narudbas] i [Kosaras]. Svi ostali podaci se dobivaju jedino i isključivo iz 4D Wand-a.

Preduvjeti

Web server IIS koji se izvršava na Microsoft .NET platformi na Windows OS.

Na web serveru mora biti instaliran ASP.NET 4.0 i MVC 3.0 (www.asp.net) i imati mogućnost pristupa MS SQL Server 2012 ili novije verzije.

Nakon toga potrebno je:

Kreirati praznu bazu (npr. WandIMC, ime je proizvoljno) u SQL-u

Kreirati korisnika koji ima sva prava nad tom bazom (ime i šifra proizvoljni)

Kreirati e-mail account (npr. katalog@4d.hr, narudzba@4d.hr) s kojeg će se slati e-mail narudžbe

Otvoriti site kao poddomenu (npr: katalog.4d.hr, katalog.domena.hr, nazivtvrtke.domena.hr i sl.). Naravno, aplikaciju je moguće instalirati i na domenu.

Iz 4D Wanda pozvati „Slanje 4D Wand IMC-a na web server“.

Napomena: Internet aplikacija se NE smije nalaziti u poddirektorijima domene/poddomene, već u glavnom direktoriju na koji "gleda" domena/poddomena.

Ako korisniku web aplikaciju radi treća strana, nužno je što detaljnije pročitati Upute za korisnika, Ažuriranje kataloga, Popunjavanje tablica Narudzbas i Kosaras, Potvrda učitavanja narudžbe u 4D Wand.

Setiranje

Sve slike idu u folder: /content/slike.

Korisnik svoju ikonicu stavlja kao: /favicon.ico

Na web lokaciji iz roota treba otvoriti folder wand i u njega kopirati cshtml i js datoteke iz instalacije.

[Za sve verzije prije 18.08.31.1] - U datoteci wand.korisnik.js nalazi se funkcija koja kreira tabelu s detaljima artikla.

Web.config

Ako koristite 4D Wand i 4D Wand IMC od verzije 17.10.19.1, sljedeća setiranja (osim "SessionState" i "JsonDeserializer") se podešavaju u modulu Internet unutar 4D Wand-a.
Predlažemo da "SessionState" postavite na željenu, a "JsonDeserializer" postavite na barem predloženu vrijednost.

Samo ako su 4D Wand IMC i 4D Wand verzije starije od 17.10.19.1 u web.config datoteci treba dodati dolje opisane parametre i upisati odgovarajuće vrijednosti.

WandCatalogEntites je naziv konekcije na SQL bazu. Ovisno o postavkama web servera potrebno je isti ispravno posetirati, jer je moguće je da su potrebne i neke druge postavke u web.config koji se koristi za 4D Wand IMC (npr <trust level="Full" />, i sl.).

Na Connection string obavezno dodati “MultipleActiveResultSets=true“

WebID dodjeljuje 4D i isti će Vam biti poslan prilikom kupnje/instalacije

WandSifra služi 4D Wandu za pristup funkcijama i treba biti upisano i u parametre IMC - Internet/Mobile Connector modula u polje „4D Wand IMC šifra“. upišite šifru (password) po želji.

Podaci za e-mail su jasni sami po sebi.
(sljedeće opcije se koriste samo u našoj web aplikaciji)

U polje naslov upišite tekst koji će se naći u naslovu preglednika web stranica, a time i u bookmarcima kod vaših korisnika.

Polje VP određuje da li se na web komponenti 4D Wand IMC-a prikazuju VP ili MP cijene. upišite 0 za MP cijene, 1 za VP cijene.

Polje Sort (SortHomePage) može biti bilo koje polje iz tablice Robas. Default je Roba.Naziv. Ako se želi opadajući sort potrebno je dodati " DESC" (paziti na razmak prije DESC) nakon naziva polja. Npr: <add key="Sort" value="Roba.Sifra DESC">

ForceLogin - parametar se pali ako se želi onemogućiti da se može odraditi narudžba unutar kataloga bez prijave korisnika.

ItemsPerPage - u parametar se upisuje koliko će se artikala prikazivati po pojedinoj stranici.

CodePage - Encoding na web komponenti 4D Wand IMC-a.

Zaliha - Da li se na web komponenti 4D Wand IMC-a prikazuje zaliha artikla.

Oznaka zalihe - Da li se prikazuje oznaka da je artikl raspoloživ ili ga je potrebno naručiti

Rezervacija - Parametar se uključuje ako se želi da dokument ponude ili pretponude rezervira količinu po stavkama.

IzgledTabeleArtikala - 0 je tabelarni prikaz, 1 je prikaz u tile-ovima

Ako se želi postaviti duži timout sesije može se isti dodati u system.web sekciju (vidi niže).

 

<connectionStrings>
...
(Primjer 1)
<add name="WandCatalogEntities"
connectionString="data source=.\MSSQLSERVER2012;Database=WandWeb_Katalog;User ID=wandweb_katalog;Password=xxxxxxxxx;MultipleActiveResultSets=true" />
providerName="System.Data.SqlClient"
(Primjer 2)
<add name="WandCatalogEntities"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;Database=WandWeb;MultipleActiveResultSets=true"
providerName="System.Data.SqlClient" />
...
</connectionStrings>

<appSettings>
...
<!-- 4D Wand IMC Settings-->
<add key="WebID" value="XX"/>
<add key="WandSifra" value="XXXXX"/>
<add key="VP" value="0|1"/>
<add key="Naslov" value="4D Wand Web Katalog"/>
<add key="ItemsPerPage" value="30"/>
<add key="CodePage" value="0|1250"/>
<add key="ForceLogin" value="false|true"/>
<add key="Zaliha" value="false|true"/>
<add key="OznakaZalihe" value="false|true" />
<add key="SortHomePage" value="Roba.Naziv"/>
<add key="Sort" value="Roba.Naziv"/>
<add key="SortKlasifikacije" value="Naziv" />
<add key="Rezervacija" value="0|1"/>
<add key="Placanje" value="false|true"/>
<add key="Narucivanje" value="false|true"/>
<add key="IzgledTabeleArtikala" value="0|1"/>

<!-- 4D Wand IMC E-mail settings -->
<add key="WandEmail_SMTP" value="mail.smtp.hr"/>
<add key="WandEmail_SmtpPort" value=""/>
<add key="WandEmail_EnableSsl" value=""/>
<add key="WandEmail_UserName" value="username "/>
<add key="WandEmail_Password" value="password"/>
<add key="WandEmail_To" value="korisnik@firma.hr"/>
<add key="WandEmail_Subject" value="4D Wand Web narudžba"/>
<add key="WandEmail_From" value="katalog@4d.hr"/>
...
(Ako se slike šalju na web ili se koristi mobilna aplikacija)
<add key="aspnet:MaxJsonDeserializerMembers" value="1500000" />
...
</appSettings>

(Postavljanje dužeg session timeouta [u minutama])
<system.web>
    <sessionState mode="InProc" timeout="600"/>
</system.web>
    

Na strani 4D Wanda potrebno je unutar foldera firme za koju se setira 4D Wand IMC, kreirati folder gdje će se snimati export podataka i *.cshtml datoteke (npr. „web“ unutar firme). Taj path treba u modulu IMC - Internet/Mobile Connector u parametrima programa upisati u „Direktorij u kome se kreiraju datoteke:“. U njega treba kopirati „default“ datoteke koje se mogu snimiti s https://www.4d.hr/rest/4DWandKatalogDefaults.zip . Ako se web nalazi lokalno kod korisnika ovdje se može upisati path do web stranica (npr: \\Internet\WandCatalog\wand\). Podatak Web ID dodjeljuje 4D.

Funkcije za komunikaciju

Funkcije se mogu staviti u scheduler. Predlažemo da se Export, slanje i import 4D Wand IMC rade po potrebi (jednom dnevno), a Ažuriranje zaliha na 4D Wand IMC novih narudžbi da se poziva u nekim intervalima.

Export, slanje i import 4D Wand IMC-a: C:\4D\Wand\Sys\W_exe.exe WEB=1;7
Import svih novih narudžbi s 4D Wand IMC-a: C:\4D\Wand\Sys\W_exe.exe WEB=1;8 (za import narudžbi u realnom vremenu pročitajte više u poglavlju 4D Komunikator)
 Ažuriranje zaliha na 4D Wand IMC-u: C:\4D\Wand\Sys\W_exe.exe WEB=1;16 (za dohvat zalihe pojedinog/pojedinih artikla u relnom vremenu pročitajte više u poglavlju 4D Komunikator)
 Export, slanje i import dokumenata na 4D Wand IMC-u: C:\4D\Wand\Sys\W_exe.exe WEB=1;70
Slanje datoteka vezanih na artikl na 4D Wand IMC: C:\4D\Wand\Sys\W_exe.exe WEB=1;32

moguć je pojedinačni poziv procedura:
Export 4D Wand IMC-a: C:\4D\Wand\Sys\W_exe.exe WEB=1;1
Slanje 4D Wand IMC-a/dokumenata na 4D Wand IMC: C:\4D\Wand\Sys\W_exe.exe WEB=1;2
Import 4D Wand IMC-a/dokumenata na 4D Wand IMC: C:\4D\Wand\Sys\W_exe.exe WEB=1;4
Export dokumenata na 4D Wand IMC: C:\4D\Wand\Sys\W_exe.exe WEB=1;64

Napomena: Ako je upogonjen 4D Komunikator, moguće je koristiti i ugraditi funkcije na web stranicu. Za pregled dostupnih API-ja pogledajte ovdje.

Završetak setiranja

Da bi site proradio, potrebno je iz 4D Wanda -> IMC - Internet/Mobile Connector pokrenuti opciju „Učitaj 4D Wand IMC“ i nakon toga bi se na stranicama trebali pojaviti demo artikli. Ako su se demo artikli uspješno učitali i pojavili na Internetu, tada je moguće artikle označene u kolonama cjenika za web shop, poslati na Internet pozivom opcije „Kreiraj i pošalji 4D Wand IMC“.

Dodatna pojašnjenja

Slike artikala je moguće slati pomoću opcije "Slanje datoteka artikala na 4D Wand IMC". Ova opcija, korištenjem https POST metode, šalje slike (ili datoteke vezane na artikle) na web komponentu 4D Wand IMC-a u folder Content/Slike (ili folder definiran u Vrstama dokumenata vezani s diska). Proces slanja slika provjerava slike povezane na Artiklima (datoteke povezane na artikle,a koje su označene da se upload-aju na 4D Wand IMC) sa slikama (datotekama) koje se nalaze na web komponenti 4D Wand IMC-a i šalje slike (datoteke) koje nedostaju ili su se promijenile naspram web komponente 4D Wand IMC-a. Da bi https POST metoda mogla ispravno raditi potrebno je aplikaciji dodjeliti prava pisanja nad direktorijem /content, u suprotnom se može dogoditi greška 403 prilikom slanja slika prema 4D Wand IMC-u.
 Slike trebaju biti povezane s artiklima u 4D Wand-u. Prilikom eksporta podataka za 4D Wand IMC eksportirati će se samo nazivi slika u tablicu Robas i tablicu RobDocs. Web komponenta 4D Wand IMC-a očekuje slike s tim nazivima u folderu /content/slike prebačene prethodno opisanim procesom.
Za komunikaciju 4D Wanda i web servera koristi se HTTPS protokol. Nisu podržani drugi protokoli (ftp, ftps, sftp,...).
Nakon slanja narudžbe s web komponente 4D Wand IMC-a, mora se pojaviti prozor/poruka da je narudžba uspješno poslana. Ako se otvori home page znači da se dogodila greška prilikom slanja e-maila, a narudžba nije ispražnjena.
Komunikacija s web aplikacijom se logira u datoteci log.txt trenutno aktivne godine.

Parametri programa

Ako se želi omogućiti prijavu kupaca u web aplikaciju, nakon uključivanja parametra programa "Eksport osoba i rabatne politike", potrebno je u adresaru na osobama kojima se želi omogućiti pristup katalogu, uključiti opciju "Web kupac" i upisati pristupnu šifru za web. Istu je naravno potrebno javiti kupcu.
Ako se žele slati stanja skladišta, potrebno je u parametrima programa uključiti opciju "Eksport stanja skladišta", te na prozoru za Ažuriranje skladišta ("Podaci o korisniku") željenim skladištima uključiti opciju "Export stanja skladišta za 4D Wand IMC".
 Za eksport dodatnih atributa artikala nužno ih je adekvatno definirati u 4D Wand sustavu.

Za eksport posebno definiranih cijena u Planskoj kalkulaciji (WEB VPC i WEB MPC) za 4D Wand IMC, potrebno je u modulu IMC-Internet/Mobile Connector odabrati Setiranje parametara, zatim na kartici Osnovne postavke u polje Web skladište na kojem se upisuju cijene upisati šifru skladišta na kojem se navedene cijene definiraju. U tom slučaju će se u poljima VPCijena i MPCijena tablice Robas nalaziti novodefinirane cijene u planskoj kalkulaciji, dok će se u poljima OriginalnaVPCijena i OriginalnaMPCijena nalaziti VPC-PDV, odnosno MPC+PDV iz planske kalkulacije artikala 4D Wanda.

Da bi se omogućilo slanje Načina plaćanja prema 4D Wand IMC-u potrebno je u 4D Wand-u -> Maloprodaja -> Registri -> Načini plaćanja po dokumentima odabrati način plaćanja i uključiti opciju Sredstvo plaćanja za web dućan.

Kreiranje poddomene na IIS

Kreirati novi site (npr. Wand IMC). Dati mu neki port (81, 82,... i sl).
U DNS kreirati Host (A) katalog s FQDN katalog.domena.hr
U ISA staviti alias na katalog.domena.hr i redirekciju s upisanog porta na lokalnu adresu (npr 82 na 192.168.44.4) i sl.

Rad s 4D Wand IMC-om

4D Wand IMC API pristupna šifra

Napomena: Navedene promjene vrijede od verzije objavljene 17.12.2019. Za sve verzije prije navedenog datuma, u https zahtjevima kao parametar "s=" koristi se šifra iz web.config-a

U https zahtjevima 4D Wand IMC-a kao parametar potrebno je poslati pristupnu šifru. Šifra se generira na sljedeći način:

Šifra definirana u web.config-u (polje 4D Wand IMC šifra u parametrima programa) se encode-a sa SHA-256 hash algoritmom, zajedno s proizvoljnim salt-om

SHA-256("sifraIzWebConfiga" + "salt")

Generira se JSON sa sljedećom strukturom

{
    "hash":"SHA-256 hash",
    "salt":"proizvoljni salt dodan u encode-u hash-a"
}
                           

JSON se encode-a u Base64

Base64 se encode-a pomoću UrlEncode-a

Rezultat UrlEncode-a se smatra <4D Wand IMC šifra> i koristi se za popunjavanje parametara "s", npr. /Update/UpdateKatalog?s=<4D Wand IMC šifra>

4D Wand IMC kod svakog zahtjeva generira hash pomoću šifre upisane u web.config-u i proizvoljnog salt-a definiranog u JSON-u, te ga uspoređuje s poslanim hash-om iz JSON-a

Ažuriranje podataka 4D Wand IMC-a

Kreiraj 4D Wand IMC
U koraku „Kreiraj 4D Wand IMC“ program kreira datoteku pod nazivom WandKatalog.txt u folderu specificiranom u parametrima programa „Direktorij u kome se kreiraju datoteke“. Datoteka je u stvari SQL skripta u kojoj se nalaze komande za Ažuriranje tablica u SQL bazi. Nakon ovog koraka treba provjeriti da li je datoteka WandKatalog.txt kreirana i da li ima trenutni datum i vrijeme.

Pošalji 4D Wand IMC na Internet
U koraku „Pošalji 4D Wand IMC na Internet“, šalju se sljedeće datoteke:

WandKatalog.txt

HomePage.cshtml

Kontakt.cshtml

Logo.cshtml

NarudzbaForma.cshtml

NarudzbaPoslana.cshtml

NarudzbaPrazna.cshtml

wand.korisnik.js

email.txt

DetaljArtikla.cshtml

TabelaNaslovArtikla.cshtml

LoginGornjiTekst.cshtml

LoginDonjiTekst.cshtml

NapomenaDostave.txt

OpciUvjeti.pdf

ReklamacijskiZapisnik.pdf

UvjetiPlacanja.pdf

RaskidUgovora.pdf

PravilaPrivatnosti.pdf

NapomenaNaruci.cshtml

NapomenaPlati.cshtml

NajnizaCijena.cshtml

HeadGoogleAnalytics.cshtml

BodyGoogleAnalytics.cshtml

logo.png

Sve datoteke, osim WandKatalog.txt, se mogu uređivati u 4D Wandu u parametrima IMC-a. Sve datoteke se šalju POST metodom u Wand poddirektorij web servera. Nakon ovog koraka provjerite da li se datoteke nalaze na web serveru. Slanje datoteka se vrši POST metodom u MIME multipart/form-data formatu pozivom na API /Update/UploadDatoteke?s=<4D Wand IMC šifra>&folder=Wand.

Učitaj 4D Wand IMC
U koraku „Učitaj 4D Wand IMC“ poziva se API /Update/UpdateKatalog?s=<4D Wand IMC šifra> koja izvršava skriptu iz datoteke WandKatalog.txt. Za potrebe testiranja može se u SQL Server Management Studio (ili slično) učitati i izvršiti skripta. API se može i direktno pozvati: npr: https://katalog.4d.hr/Update/UpdateKatalog?s=<4D Wand IMC šifra>. Ako se metoda uspješno izvrši u pregledniku će se pojaviti naziv izvršene datoteke (npr: ~\wand\wandkatalog.txt). Ako se dogodi neka greška tekst greške (exceptiona) će se pojaviti u pregledniku. Greške mogu biti i „NP“ za neispravan password ili „XX“ za nepoznatu grešku. Napomena: skripta ima ekstenziju "txt".
Da bi zamijenili našu metodu nekom drugom, potrebno je napisati novu koja će iz WandKatalog.txt učitati i izvršiti SQL skriptu. 4D Wand može kreirati skripte za MS SQL 2012 (i više). Naš API se spoji na SQL server upisan u web.config ("WandCatalogEntities"), zatim iz WandKatalog.txt učitava SQL komande (stream readerom) do prve sljedeće komande "GO" koju izvrši i zatim nastavlja s učitavanjem i izvršavanjem SQL komandi do kraja skripte. Ako je update uspio, metoda vrati naziv obrađene skripte.

Kreiraj i pošalji dokumente na 4D Wand IMC
 Kreiranje i slanje statusa dokumenata prema 4D Wand IMC-u. Kreiraju se tablice Dokuments, DokStavkas, DokRobas, DokPartners i DokOsobas.
 Kako bi ovaj export ispravno radio, potrebno je prvo postaviti parametre u postavkama IMC- Internet/Mobile Connector. Na sljedećoj poveznici možete saznati više o potrebnim parametrima.
 Kada su postavljeni svi željni parametri, operacija "Kreiraj i pošalji dokumente na 4D Wand IMC" će kreirati i poslati statuse željenih dokumenata.
 Glavna tablica, u koju se šalju statusi dokumenata, je Dokuments koja je povezana s ostalim tablicama. S tablicom DokPartner je vezana po ključu PartnerID, tablica DokOsobas po ključu OsobaID te s tablicom DokStavkas po ključu DokumentID.
 Također, ako je potrebno više informacija o samoj robi stavke, tablica DokStavkas je vezana s tablicom DokRobas po ključu RobaID.
 U tablici DokStavkas, polje Datum1 je popunjeno kao planirani datum isporuke na narudžbama dobavljača, datum aktivacije na održavanjima i pretplatama, datum dolaska na narudžbama kupaca, datum dospijeća na specifikacijama plaćanja.

 Ako se šalje stablo dokumenata tada će sljedeća polja u tablici Dokuments biti popunjena:

Polje DokumentRoditeljID će biti popunjeno s ID-em prethodnog dokumenta, ako postoji prethodni/roditeljski dokument. Ako ne postoji roditeljski dokument, tada će polje biti popunjeno s nulom (0).
 Primjer: Nastao je izlazni račun (IFA) od otpremnice (OTP) tada je u navedenom polju na Izlaznom računu upisan ID otpremnice.


 

Polje DokumentDijeteID će biti popunjeno ako je od više dokumenata kreiran jedan dokument.
 Primjer: Od više otpremnica je fakturiran jedan Izlazni račun u tom slučaju na otpremnice od kojih je kreiran račun u navedeno polje je upisan ID Izlaznog računa.

Ako se šalju klase dokumenata RAD, RNL ili RNU i dokument je nastao kopiranjem iz prethodnih godina, u tablici Dokuments se popunjavaju sljedeća polja:

Polje OriginalniDokId će biti popunjeno s ID-em originalnog dokumenta iz kojeg je dokument nastao.


 

Polje OriginalniBrojId će biti popunjeno s brojem originalnog dokumenta iz kojeg je dokument nastao.

Popunjavanje tablica Narudzbas i Kosaras

Oprez:
 Prilikom upisa u tablice, niti jedno numeričko polje (integer, decimal...) u tablicama [Narudbas] i [Kosaras] NE smiju imati vrijednost NULL (prazno).Ako ne želite poslati vrijednost upišite nulu (0).
Za ostala (ne numerička) polja možete ostaviti prazno, ako nisu obavezna.

U polju BrojNarudzbe može se upisati ID narudžbe. Program po polju BrojNarudzbe provjerava da li je ista već importirana u 4D Wand. Posebno napominjemo da polje BrojNarudzbe MORA biti u rastućem redoslijedu.
 U našoj aplikaciji BrojNarudzbe se kreira u formatu [yyMMdd-hhmmss-ms] (godina mjesec dan - sati minute sekunde - milisekunde) trenutka kompletiranja narudžbe i slanja obavijesti korisniku - znači da taj broj nastaje na kraju procesa obrade narudžbe kada je kupac gotov s naručivanjem i istu pošalje.


 

Polje "Poslano" treba biti popunjeno s "1" jer označava da je poslana obavijest kupcu i korisniku o novoj narudžbi s web-a, inače "0".


 

Polje "Rezervacija" treba biti popunjeno s "1" ako dokument ponude ili pretponude automatski rezervira količine odobravanjem, inače "0".


 

Polje "OIB" treba biti popunjeno s OIB-om tvrtke koja je odradila narudžbu. Ako se radi o maloprodajnom kupcu, polje treba ostaviti prazno.


 

Polje "DateCreated" u tablici Narudbas se MORA popuniti u formatu [yyyy-MM-dd hh:mm:ss.ms] i obavezno popuniti u trenutku kreiranja zapisa narudžbe.


 

U stavke košare ne trebaju se upisivati nikakvi iznosi, osim ako se koristi program vjernosti ili izračun Internet popusta. U tom slučaju potrebno je ispravno popuniti sva polja.
 Ako se upisuju iznosi na stavku košare, potrebno je upisati bruto veleprodajni iznos (BrutoIznos – VP iznos prije rabata), neto veleprodajni iznos (VPIznos – VP iznos nakon rabata) i maloprodajni iznos (MPIznos – MP iznos nakon rabata). Iznos rabata i postotak se računaju iz odnosa bruto i neto veleprodajnog iznosa.

oAko se radi o veleprodaji potrebno je upisati VP i Bruto iznos, dok će se ostali iznosi (MP, porez...) izračunati u 4D Wandu.

oAko se radi o maloprodaji potrebno je upisati barem MP iznos.

oAko se šalje narudžba u devizi potrebno je popuniti polje Valuta (međunarodna numerička oznaka valute 978, 840, 191,...) ili Oznaka valute (međunarodna troslovna oznaka valute EUR, USD, HRK,...). Preko kojih će se prepoznati Valuta u 4D Wand-u (u registru Valuta je potrebno imati ispravno definirane oznake ili šifre Valuta).- Da bi se iznosi ispravno importirali potrebno je u tablici [Kosaras] upisati iznose stavke u devizama u polja bruto iznos (VP iznos prije rabata), VP Iznos (VP iznos nakon rabata) i MP Iznos (MP iznos nakon rabata).- Ako se popuni polje Tečaj tada će se taj iznos koristiti za preračun prilikom importa, a ako se ostavi prazno tada će se za preračun prilikom imorta učitati iz tečajne liste upisane u 4D Wand-u.

Bitne napomene kod (ne)popunjavanja iznosa u bazama:

oDa bi se izbjegle ili smanjile greške u zaokruživanju, potrebno je znati kako se vrši obračun PDV-a nad dokumentima u 4D Wandu. Prilikom razvoja/testiranja najbolje je ručno napraviti u 4D Wandu dokument koji se želi poslati s 4D Wand IMC-a i uporediti/analizirati.

oAko se upiše samo količina, obaveza je korisnika da cijene budu identične i u 4D Wandu i na 4D Wand IMC-u.

oU web komponenti 4D Wand IMC-a se rabati izračunavaju na ukupni iznos: kolicina * cijena * (1 - rabat/100).

oPolje Narudzba->MPIznos je ukupni iznos narudžbe s porezom i može biti izmijenjen nakon obrade u 4D Wandu radi zaokruživanja ili načina obračuna poreza.

oPorezna tarifa na artiklu u 4D Wandu MORA odgovarati upisanoj tarifi u tablicu Kosaras.
 

Upozorenje: Cijene koje se upisuju na stavku moraju biti pozitivne, da bi se stavka ispravno učitala u 4D Wand.
 Ako se želi dobiti negativan iznos stavke u 4D Wandu, tad količina i iznosi (BrutoIznos, VPIznos, MPIznos) moraju biti poslani s negativnim predznakom.


 

Polje narudzbe "Skladiste" određuje na koje skladište se treba importirati narudžba. Ako se ne upiše, učitat će se skladište iz parametara programa ovisno o tipu (veleprodaja ili maloprodaja).
Ako se u parametrima programa u skladište VP upiše jedno skladište, a u MP drugo skladište tada 4D Wand prilikom importa narudžbe koje imaju upisana polja PartnerID i OsobaID u tablici [Narudzbas] učitava na skladište VP, a one koje nemaju upisana oba polja na skladište MP.


 

Polje narudžbe "KlasaDokumenta" određuje u koju klasu dokumenta će se importirati narudžba. Ako se ne upiše klasa dokumenta, učitat će se klasa iz parametara programa.
 Moguće klase dokumenta:

oULN (za ulazne narudžbe)

oPON (za pretponude)

oIZP (za ponude)

oOTP (za otpremnice)


 

Ako na Internet katalogu kojeg razvija treća strana postoji mogućnost registracije, potrebno je uvijek u tablici [Narudzbas] popunjavati polje OsobaPassword, kako bi se podatak mogao importirati u 4D Wand, a kasnije vratiti u tablici Osobas. U 4D Wand se uvijek importira sadržaj polja OsobaPassword iz tablice Narudzbas pa i u slučaju da je sadržaj polja prazan. Naglašavamo da se polje mora uvijek popunjavati važećim passwordom, a kada se on promjeni, potrebno je polje popunjavati novim passwordom.


 

Ako na Internet katalogu, kojeg razvija treća strana, postoji mogućnost odabira načina plaćanja, potrebno je koristiti načine plaćanja koji su poslani iz 4D Wand-a u, tablici [NaciniPlacanjas].
 Iz tablice [NaciniPlacanjas] je potrebno prepisati šifru u polje NacinPlacanja tablice [Narudzbas], kako bi se način plaćanja ispravno importirao u 4D Wand.
 Ako polje NacinPlacanja nije ispravno popunjeno, 4D Wand će način plaćanja preuzeti s komitenta ako je on na komitentu postavljen.
 Ako način plaćanja nije postavljen na komitentu, tada će način plaćanja preuzeti iz defaultnih parametara programa 4D Wanda.


 

Ako na Internet katalogu, kojeg razvija treća strana, postoji mogućnost odabira načina otpreme, moguće je koristiti isključivo one načine otpreme koji su poslani iz 4D Wand-a, tablica [NaciniOtpremas].
 Da bi se načini otpreme slali prema 4D Wand IMC-u, potrebno je na željenim načinima otpreme u 4D Wand-u uključiti opciju Način otpreme za web dućan.
 Iz tablice [NaciniOtpremas] potrebno je prepisati Šifru ili Naziv u polje NacinOtpreme u tablici [Narudzbas] kako bi se način otpreme ispravno importirao u 4D Wand.
 Ako polje NacinOtpreme, u tablici [Narudzbas], nije ispravno popunjeno, 4D Wand će način otpreme preuzeti s komitenta ako je on na komitentu popunjen.
 Ako način otpreme nije popunjen na komitentu, tada će import načina otpreme biti preuzet iz default vridnosti parametara programa 4D Wand.


 

Ako drugi web programeri nad 4D Wand IMC-om rade svoj Internet dućan, a žele koristiti uslugu dostave kao stavka košare, potrebno je definirati uslugu u 4D Wand-u s pripadajućim cijenama. Kada je odgovarajuća usluga definirana, pozovite formu izmjene takve usluge gdje u naslovu prozora u zagradi možete pročitati ID usluge. Pročitani ID usluge treba dati web programerima. Kada web programeri imaju navedenu informaciju, moraju u stavku košare popuniti barem sljedeće podatke: SifraKosare (poveznica stavke košare s narudžbom po polju BrojNarudzbe tablice Narudbas i u ovom polju mora biti upisana vrijednost polja BrojNarudzbe iz tablice Narudzbas), NarudzbaID (ID narudžbe), RobaID (ID ranije spomenute usluge dostave) i Kolicina (količinu treba popuniti vrijednošću 1) kako bi se importom narudžbe u 4D Wand ispravno učitala stavka prethodno definirane usluge.


 

Ako web komponenta 4D Wand IMC-a radi s uključenijm Programom vjernosti, potrebno je u skladu s mehanizmom kojeg korisnik koristi, popunjavati polja (uz pomoć metoda iz WandKatalog.dll):

oBrojOstvarenihBodovaProgramaVjernosti (u polje se upisuju bodovi koje je Osoba ostvarila kupovinom na Internet katalogu kojeg razvija treća strana, a popunjava se pomoću metode ObracunajBodoveProgramaVjernosti)

oBrojPotrosenihBodovaProgramaVjernosti (ako je potrebno polje se popunjava s vrijednosti potrošenih bodova u ovisnosti o mehanizmu)

oPostotakPopustaProgramaVjernosti (polje se koristi kada se ostvaruje popust na narudžbi Internet kataloga kojeg radi treća strana, a sadržaj polja se dobiva pomoću metode OsnovniPopustProgramaVjernost


 Ako se popust programa vjernosti obračunava na Internetu i 4D Wand-u se šalju gotove vrijednosti, obavezno je za svaku stavku u tablici [Kosaras] upisati sljedeće vrijednosti:

oKolicina – Odabrana kolicina

oBrutoIznos – VP iznos prije rabata (prije dodjeljenog popusta programa vjernosti)

oVPIznos – VP iznos nakon rabata (nakon dodjeljenog popusta programa vjernosti)

oMPIznos – MP iznos nakon rabata (nakon dodjeljenog popusta programa vjernosti)


 Zatim je obavezno u tablicu Narudzbas, u slučaju Programa vjernosti, upisati sljedeće vrijednosti opisane u prethodnom paragrafu:

oBrojOstvarenihBodovaProgramaVjernosti

oBrojPotrosenihBodovaProgramaVjernosti

oPostotakPopustaProgramaVjernosti


 Ako se koristi verzija obračunavanja Programa vjernosti na Internetu potrebno je obavezno u 4D Wand-u na skladištu na koje se importira narudžba isključiti opciju Omogućen program vjernosti kako se isti ne bi dva puta obračunao.


 

Ako se na web trgovini vrši prodaja dobara izvan Hrvatske, potrebno je popuniti polje [Drzava] u tablici [Narudzbas]. Polje [Drzava] u tablici [Narudzbas] se puni dvoslovnom oznakom države iz polja [MedunarodnaOznaka] koje se nalazi u tablici [Drzavas]. To znači da korisnik 4D Wanda, prethodno MORA pravilno u registrima 4D Wanda svakoj državi iz koje prima web narudžbe, upisati ispravnu međunarodnu dvoslovnu oznaku. Tek u tom slučaju će se ispravno popuniti tablica [Drzavas] iz koje se zatim uzima potrebno polje [MedunarodnaOznaka]. Sve prethodno navedeno je potrebno da bi se osoba i komitent na narudžbi pravilno importirali u 4D Wand. Npr. ako se u [PostBroj] upiše 21000, a kupac je iz Srbije, u polju [Drzava] u tablici [Narudzbas] mora pisati RS.

 Napomena: Ako polje [Drzava] nije popunjeno, prioritet pretrage poštanskih brojeva imaju mjesta iz Hrvatske.


 

U parametrima programa na kartici "Dodatne postavke IMC-a" obavezno je posetirati naziv metode za učitavanje sljedeće narudžbe.
Moguće je koristiti predefiniranu metodu "/Narudzba/SlijedecaNarudzbaJson" koja učitava narudžbe sukcesivno po broju narudžbe.

https://katalog.4d.hr/Narudzba/SlijedecaNarudzbaJson?s=<4D Wand IMC šifra>šifra&z=130707-123433-5000

Također, moguće je uključiti i koristiti učitavanje web narudžbi po ID-u "/Narudzba/SlijedecaNarudzbaID", ako se želi omogućiti sukcesivno učitavanje narudžbi po ID-u.

https://katalog.4d.hr/Narudzba/SlijedecaNarudzbaID?s=<4D Wand IMC šifra>šifra&z=167

Sukcesivnim pozivom metode učitavaju se jedna po jedna narudžba, ovisno o broju narudžbe ili ID-u, sve dok web aplikacija ne vrati prazan objekt.

Važno: Tablice [Narudbas] i [Kosaras] su relacijski povezane poljima BrojNarudzbe/SifraKosare i NarudzbaID/NarudzbaID. Spomenutih polja definiraju vezu narudžbe i njenih stavki, neovisno o načinu učitavanja narudžbi u 4D Wand-u.

Relacijska polja su:

NarudzbaID - u tablici Narudbas primarni ključ, dok je u [Kosaras] strani ključ
BrojNarudzbe i SifraKosare - BrojNarudzbe(Narudbas) je ekvivalent SifraKosare(Kosaras)

U parametrima programa na kartici "Dodatne postavke IMC-a" može se omogućiti dodavanje novog komitenta prilikom importa. Ako program ne pronađe komitenta po OIB-u dodaje se novi komitent (moguće greške su radi dupliranja polja naziv+adresa, na što treba paziti).
U parametrima programa na kartici "Ostale postavke" može se omogućiti dodavanje nove osobe prilikom importa. Ako za učitanog komitenta (bilo da je komitent pronađen ili je dodan novi komitent) ne postoji definirana osoba po imenu i prezimenu, ista će biti dodana.
Za učitavanje novih dokumenata poziva se GET metoda koja vraća narudžbu i stavke u JSON formatu.
Radi testiranja moguće je JSON sadržaj kopirati u međumemoriju i pozvati pojedinačni import narudžbi u 4D Wand - tipka "Pojedinačno učitavanje narudžbe" u modulu "Internet" s glavnog prozora 4D Wanda. Naravno, prethodno je potrebno da korisnik posetira parametre programa: skladište na koje želi importirati dokument, tip dokumenta koji se importira, osnovnog komitenta, itd.


 

Prodaja na daljinu

Izmjenama Zakona o PDV-u od 01.07.2021. uvode se promjene u oporezivanju prilikom isporuka usluga i dobara na daljinu osobama koje nisu porezni obveznici unutar EU (fizičke osobe i pravne osobe koje nisu u sustavu PDV-a). U 4D Wand IMC smo dodali nove sadržaje u razmjeni podataka za treće strane koje korisnicima implementiraju web dućane s mogućnošću prodaje roba i usluga u inozemstvu. Svi podaci se i dalje pripremaju u 4D Wand-u i tako pripremljeni šalju prema 4D Wand IMC u standardnoj razmjeni podataka.

Novi podaci se nalaze u slijedećim tablicama:

tablica Drzavas registar država s dvoslovnim međunarodnim oznakama (Standard: ISO 3166 - Alpha-2 code) i troznamenkastim šiframa državama (Standard: ISO 3166 - Numeric code)

tablica RobaDrzavaTarifas - veze između roba, država i odgovarajućih poreznih stopa

Primjenjujući podatke koje je korisnik poslao iz 4D Wand-a, na web stranici je nužno postaviti upit za državu isporuke i izračunavajući porez sukladno učitanim podacima i državi u koju se radi isporuka dobara ili usluga.
 Budući da 4D Wand NE izračunava iznose narudžbe i stavki, koje spadaju u kategoriju prodaje na daljinu fizičkim osobama koje nisu porezni obveznici. Stoga je potrebno popuniti sve iznose na stavkama u [Kosaras] te iznose same narudžbe u [Narudzbas]
 Prema 4D Wand-u, uz gore navedene podatke, potrebno je još popuniti:

[OznakaDrzavePoreza] - u [Narudzbas] dvoslovna međunarodna oznaka države (Standard: ISO 3166 - Alpha-2 code)

[StopaPDV] - u [Kosaras] vrijednost stope po kojoj je obračunat PDV

Jedino na ovaj način se naružba može ispravno importirati, obraditi, odobriti i knjižiti sukladno važećim propisima.

Napomena: Podatke [OznakaDrzavePoreza] i [StopaPDV] je NUŽNO dodati u slučaju kada se radi o prodaji na daljinu osobama iz zemalja Europske unije koje nisu porezni obveznici, inače ih se ne smije popunjavati.


 

Popunjavanje tablice AdreseDostaves

Prilikom kreiranja narudžbi moguće je uz svaku narudžbu definirati adresu dostave. Navedeno se može odraditi dadavanjem zapisa u tablicu AdreseDostaves.
 Niže su navedena i opisana sva moguća polja tablice AdreseDostaves i raspoređena u dvije kategorije, Obavezna i Opcionalna.
 Sva polja, osim numeričkih, ograničena su na 80 znakova.
 

Obavezna polja:

AdresaID - primarni ključ auto-increment

NarudzbaID - Upisati ID narudžbe uz koju je vezana adresa dostave

GUID - Upisati BROJ narudžbe uz koju je vezana adresa dostave

NazivPrimatelja1 - Upisati naziv primatelja (Ime i Prezime, Naziv firme...)

AdresaPrimatelja1 - Upisati adresu dostave

Grad - Upisati grad adrese dostave

PostanskiBroj - Upisati poštanski broj grada dostave

Opcionalna polja:

NazivPrimatelja2 - Dodatno polje za naziv primatelja

AdresaPrimatelja2 - Dodatno polje za adresu primatelja

Drzava - Polje za unos naziva države adrese dostave

KontaktTelefon - Ako postoji kontakt telefon vezan uz adresu dostave

KontaktEmail - Ako postoji kontakt e-mail vezan uz adresu dostave

Ako su ispravno popunjeni podaci za adresu dostave, prilikom učitavanja narudžbe vezat će se objekt adrese dostave uz pripadajuću narudžbu te učitati u 4D Wand.


 

Dodatne napomene za web

Zbog potrebe za dodatnim napomenama na artiklima koji se šalju na web (npr. zbog više jezika), u 4D Wandu je moguće upisivati dodatne napomene i slati ih na 4D Wand IMC. Više o definiranju samih dodatnih napomena u 4D Wandu je dostupno na sljedećoj poveznici.

 Nakon definiranih dodatnih napomena koje su uspješno poslane na 4D Wand IMC, u bazi 4D Wand IMC-a će se pojaviti tablica DodatnaNapomenas čija je struktura objašnjena u poglavlju Struktura tablica. Da bi se dodatna napomena prikazala na baznom webu 4D Wand IMC-a, u detalj artikla je potrebno postaviti sljedeći kod:
 

@foreach (string napomena in Page.RobaViewModel.DodatneNapomene)
{
    @HtmlHelpers.RedDetalja("Napomena", napomena);
}
                   

Što se tiče trećih strana, oni mogu dohvatiti podatke iz tablice DodatnaNapomenas te ih vizualizirati na proizvoljan način.


 

Metode dostupne kroz WandKatalog DLL

Metode pomoću kojih se može doći do pojedinih informacije, a moguće ih je pozvati iz WandKatalog.dll. Metode se nalaze u WandCatalog.Models.API namespace-u, a sama pojašnjenja istih se nalaze ispod (primjeri u MS Visual Basicu).

                   
    Dim wandAPI As New WandCatalog.Models.API ' klasa gdje se nalaze metode

    Dim Rez As WandCatalog.Models.Rezultat ' klasa gdje se nalaze greške

                   
                    /// <summary>
 /// Za poslani iznos izračunavaju se bodovi programa vjernosti po zadanim parametrima programa vjernosti
 /// </summary>
 /// <param name="ukupno">Ukupan iznos narudžbe</param>
 /// <param name="brojBodova">Izračunati broj bodova programa vjernosti</param>
 /// <returns>enum rezultati</returns>
                         
 wandAPI.ObracunajBodoveProgramaVjernosti(decimal ukupno, ref int brojBodova)
 
 /// <summary>

       /// Za poslani ID osobe vraća se ostvareni popust po programu vjernosti, ako osoba ne postoji vraća se osnovni postotak popusta ako je definiran

       /// </summary>
 /// <param name="opsobaID">ID osobe</param>
 /// <param name="postotakPopusta">Vraćeni ostvareni popust programa vjernosti</param>
 /// <returns>enum rezultati</returns>
                         
 wandAPI.PopustProgramaVjernosti(int osobaID, ref int postotakPopusta)
 
 /// <summary>
 /// učitava postotak rabata za poslani ID robe i ID osobe
 /// </summary>
 /// <param name="robaID">ID robe iz "Robas"</param>
 /// <param name="osobaID">ID osobe iz "Osobas"</param>
 /// <param name="postotakRabata">učitani postotak rabata</param>
 /// <param name="VPCijena"> učitana osnovna VPCijena</param>
 /// <param name="MPCijena">učitana osnovna MPCijena</param>
 /// <param name="naAkciji">učitan podatak da li je artikl na akciji</param>
 /// <returns>enum rezultati</returns>
                         
 wandAPI.UcitajRabatPoID(int robaID, int osobaID, ref decimal postotakRabata, ref decimal VPCijena, ref decimal MPCIjena, ref bool naAkciji)
                   

Napomena: Tablica Parameters dodana je za potrebe metoda ObracunajBodoveProgramaVjernosti i OsnovniPopustProgramaVjernosti kaklo bi iste na temelju parametara "ProgramVjernostiMehanizam", "ProgramVjernostiSakupljanjeFaktor" i "ProgramVjernostiOsnovniRabat" mogle raditi.
Tablica Parameters nadograđena je s parametrom "RabatnaPoKomitentuNaKojegIdeRacun" za kako bi api UcitajRabatPoID i sam 4D Wand Internet katalog znali učitavati rabat po PartnerID ili PartnercentralaID logirane osobe.
Metode možete koristiti na slijedeći način:

 
 
 Dim wandAPI As New WandCatalog.Models.API
 
 Dim Rez As WandCatalog.Models.Rezultat
 Dim postotakRabata As Decimal
 Dim VPCijena As Decimal
 Dim MPCijena As Decimal
 Dim naAkciji As Boolean
 Dim iznos As Decimal
 Dim brojBodova As Integer
 Dim postotakPopusta As Integer
 Dim osobaID As Integer
 
 
 Rez = wandAPI.UcitajRabatPoID(5942, 0, postotakRabata, VPCijena, MPCijena, naAkciji)
 
 
                        ' kosara.Rabat = postotakRabata
 ' kosara.VPCijena = Math.Round(VPCijena * (1 - postotakRabata / 100), 2)
 ' kosara.MPCijena = Math.Round(MPCijena * (1 - postotakRabata / 100), 2)
 ' kosara.VPIznos = Math.Round(kolicina * VPCijena * (1 - postotakRabata / 100), 2)
 ' kosara.MPIznos = Math.Round(kolicina * MPCijena * (1 - postotakRabata / 100), 2)
 ' kosara.BrutoIznos = kolicina * VPCijena
 ' kosara.NaAkciji = naAkciji
                         
 
 MsgBox("rabati i cijene = " + postotakRabata.ToString() + " " + VPCijena.ToString() + " " + MPCijena.ToString() + " " + naAkciji.ToString() + " Rez = " + Rez.ToString(), MsgBoxStyle.Information, "postotakRabata")
 
 osobaID = 15
 Rez = wandAPI.PopustProgramaVjernosti(osobaID, postotakPopusta)
 
 
                        ' Mi popust programa vjernosti obračunavamo na kraju tako što na ukupni iznos primijenimo postotak loyalty popusta, te dobiveni iznos proporcionalno po vrijednosti rasporedimo po stavkama.
 ' Time dolazi do najmanjih grešaka prilikom obračuna, jer bi se primjenom postotka loyalty popusta po pojedinim stavkama generirala značajna greška u zaokruživanjima. Mi u našoj web aplikaciji ne obrađujemo loyalty
 ' tako da niti nemamo nikakve api-e za izračun loyalty-a.
                         
 
 MsgBox("postotakPopusta = " + postotakPopusta.ToString() + " Rez = " + Rez.ToString(), MsgBoxStyle.Information, "postotakPopusta")
 
 iznos = 200
 Rez = wandAPI.ObracunajBodoveProgramaVjernosti(iznos, brojBodova)
 
 MsgBox("brojBodova = " + brojBodova.ToString() + " Rez = " + Rez.ToString(), MsgBoxStyle.Information, "brojBodova")                                       
 
                   

Potvrda učitavanja narudžbe u 4D Wand

Nakon učitavanja svake pojedinačne narudžbe program poziva metodu /Narudzba/NarudzbaUcitana. Metodi se šalju šifra (s - polje <4D Wand IMC šifra>) i broj narudžbe koja je učitana (z):

https://katalog.4d.hr/Narudzba/NarudzbaUcitana?s=<4D Wand IMC šifra>&z=110513-120317-6514

koja upisuje status [Ucitana] u tablicu narudžbi. Metoda nije obavezna.

Ažuriranje zaliha

Napomena: Ako je upogonjen 4D Komunikator, moguće je koristiti API za dohvat željenih artikla direktno iz 4D Wand-a.

Postoje dvije metode pomoću kojih 4D Wand može Ažurirati zalihe u web aplikaciji:

VAŽNO: 4D Wand prepoznaje POST metodu ako naziv metode sadrži tekst "JSON" inače se šalje kao GET metoda.

GET (/Update/UpdateZaliha)

Za sve artikle kojima se promijenila količina program može pozvati GET metodu /Update/UpdateZaliha. Metoda će ažurirati stanje zaliha po artiklima.
 Parametri koji se šalju su šifra (s - polje <4D Wand IMC šifra>), id artikla (id), raspoloživa količina (ras) i rezervirana količina (rez):

https://katalog.4d.hr/Update/UpdateZaliha?s=<4D Wand IMC šifra>&id=2016&ras=23.00&rez=2.00

Metoda upisuje količinu Zaliha u polje [Zaliha] koju izračunava iz sume količina Rezervirano i Raspoloživo, količinu Rezervirano u polje [Rezervirano] i količinu Raspoloživo u polje [Raspolozivo] u bazi Robas.

POST (/Update/UpdateZalihaJSON)

Za sve artikle kojima se promijenila količina program može pozvati POST metodu /Update/UpdateZalihaJSON. Metoda će ažurirati stanje zaliha po artiklima i stanja po pojedinim skladištima.
 Za parametare se jedino šalje šifra(s - polje <4D Wand IMC šifra>):

https://katalog.4d.hr/Update/UpdateZalihaJSON?s=<4D Wand IMC šifra>

U sadržaj (eng. Body) zahtjeva se šalje Json objekt s podacima o stanjima zaliha artikala.

Primjer Json objekta:

[
    {
        "RobaId": 6338,
        "Raspolozivo": 99,
        "Rezervirano": 11,
        "Stanja": [
            {
                "StanjeID": 79,
                "RobaID": 6338,
                "SkladisteID": 4604,
                "Skladiste": "0000101",
                "Zaliha": 33,
                "Rezervirano": 4,
                "Raspolozivo": 29,
                "SkladisnoMjesto": "X12",
                "KolicinaMin": 1,
                "KolicinaMax": 5,
                "KolicinaOpt": 3
            },
            {
                "StanjeID": 80,
                "RobaID": 6338,
                "SkladisteID": 5215,
                "Skladiste": "0000110",
                "Zaliha": 77,
                "Rezervirano": 7,
                "Raspolozivo": 70,
                "SkladisnoMjesto": null,
                "KolicinaMin": 0,
                "KolicinaMax": 0,
                "KolicinaOpt": 0
            }
        ]
    },
    {
        "RobaId": 1968,
        "Raspolozivo": 223,
        "Rezervirano": 10,
        "Stanja": [
            {
                "StanjeID": 2,
                "RobaID": 1968,
                "SkladisteID": 4604,
                "Skladiste": "0000101",
                "Zaliha": 200,
                "Rezervirano": 4,
                "Raspolozivo": 196,
                "SkladisnoMjesto": "bup",
                "KolicinaMin": 0,
                "KolicinaMax": 0,
                "KolicinaOpt": 0
            },
            {
                "StanjeID": 21,
                "RobaID": 1968,
                "SkladisteID": 5215,
                "Skladiste": "0000110",
                "Zaliha": 33,
                "Rezervirano": 6,
                "Raspolozivo": 27,
                "SkladisnoMjesto": "Bip",
                "KolicinaMin": 0,
                "KolicinaMax": 0,
                "KolicinaOpt": 0
            }
        ]
    },
    ...
]
                                   

Struktura tablica

Tablice koje kreira 4D Wand Internet katalog.

CREATE TABLE [dbo].[Robas](
    [RobaID] [int] NOT NULL,                                      (ID artikla)
    [Vrsta] [tinyint] NULL,                                       (Vrsta artikla: 0 - Artikli; 2 - Usluge)
    [Tip] [tinyint] NULL,                                         (Tip artikla: 0 - Roba; 1 - Proizvod; 2 - Uslugu; 3 - Vozilo; 4 - Objekt)
    [Ident] [varchar](80) COLLATE Croatian_CI_AS NULL,            (Identifikacija artikla iz parametara programa (ID, bar kod, kataloški broj ili šifra))
    [Sifra] [varchar](20) COLLATE Croatian_CI_AS NULL,            (Potpuna šifra artikla)
    [GrupaID] [int] NULL,                                         (Grupa klasifikacije kojoj artikl pripada – ID grupe)
    [HomePage] [tinyint] NULL,                                    (Oznaka da se artikl prikazuje na početnoj stranici)
    [KatBroj] [varchar](30) COLLATE Croatian_CI_AS NULL,          (Kataloški broj artikla)
    [Naziv] [varchar](80) COLLATE Croatian_CI_AS NULL,            (Naziv artikla)
    [Naziv1] [varchar](80) COLLATE Croatian_CI_AS NULL,           (Drugi naziv artikla)
    [Naziv2] [varchar](80) COLLATE Croatian_CI_AS NULL,           (Treći naziv artikla)
    [JM] [varchar](6) COLLATE Croatian_CI_AS NULL,                (Jedinica mjere)
    [OblPoPak] [decimal](11, 4) NULL,                             (Osnovno pakiranje)
    [TezinaPak] [decimal](11, 4) NULL,                            (Težina po jedinici mjere)
    [JMTezine] [varchar](2) COLLATE Croatian_CI_AS NULL,          (Jedinici mjere težine (g, kg ili t))
    [Oblik] [varchar](6) COLLATE Croatian_CI_AS NULL,             (Druga jedinica mjere)
    [FaktorOblika] [decimal](11, 4) NULL,                         (Međuodnos jedinica mjera)
    [Doza] [varchar](20) COLLATE Croatian_CI_AS NULL,             (Vanjske dimenzije artikla - opisno polje)
    [Volumen] [decimal](11, 4) NULL,                              (Zapremina artikla)
    [ProizvodjacID] [int] NULL,                                   (ID komitenta koji je proizvođač artikla)
    [Proizvodjac] [varchar](80) COLLATE Croatian_CI_AS NULL,      (Naziv komitenta koji je proizvođač artikla)
    [A1] [varchar](80) COLLATE Croatian_CI_AS NULL,               (Atribut 1 artikla)
    [A2] [varchar](80) COLLATE Croatian_CI_AS NULL,               (Atribut 2 artikla)
    [A3] [varchar](80) COLLATE Croatian_CI_AS NULL,               (Atribut 3 artikla)
    [A4] [varchar](80) COLLATE Croatian_CI_AS NULL,               (Atribut 4 artikla)
    [Ambalaza] [decimal](11, 4) NULL,                             (Iznos povratne naknade po jedinici mjere)
    [GrupaStavki] [varchar](6) COLLATE Croatian_CI_AS NULL,       (šifra defaultne grupe stavki)
    [Tarifa] [varchar](10) COLLATE Croatian_CI_AS NULL,           (šifra tarifnog broja PDV-a iz 4D Wand-a)
    [ZemljaPodrijetla] [varchar](30) COLLATE Croatian_CI_AS NULL, (Zemlja podrijetla artikla)
    [AtestBroj] [varchar](50) COLLATE Croatian_CI_AS NULL,        (Atestni broj artikla)
    [AtestDatum] [varchar](50) COLLATE Croatian_CI_AS NULL,       (Datum atesta artikla)
    [Jamstvo] [varchar](50) COLLATE Croatian_CI_AS NULL,          (Jamstvo artikla)
    [BarKod] [varchar](13) COLLATE Croatian_CI_AS NULL,           (Barkod artikla)
    [Kolicina] [decimal](13, 3) NULL,                             (Ne koristi se)
    [Zaliha] [decimal](13, 3) NULL,                               (Zaliha artikla zbrojena na posebno odabranim skladištima 4D Wand-a)
    [Rezervirano] [decimal](13, 3) NULL,                          (Rezervirana količina artikla zbrojena na odabranim skladištima 4D Wand-a)
    [Raspolozivo] [decimal](13, 3) NULL,                          (Dostupna količina (zaliha - rezervirano) artikla zbrojena na odabranim skladištima 4D Wand-a)
    [PDV] [decimal](11, 2) NULL,                                  (Stopa PDV-a)
    [Trosarina] [decimal](11, 2) NULL,                            (Ne koristi se)
    [VPCijena] [decimal](11, 2) NULL,                             ([WEB VPC]- Web VP cijena iz planskog cjenika, ako ista nije upisana ili je 0 tada se prepisuje vrijednost VP cijene artikla [VPC-PDV])
    [MPCijena] [decimal](11, 2) NULL,                             ([WEB MPC]- Web MP cijena iz planskog cjenika, ako ista nije upisana ili je 0 tada se prepisuje vrijednost MP cijene artikla [MPC+PDV])
    [OriginalnaVPCijena] [decimal](11, 2) NULL,                   ([VPC-PDV]- VP cijena artikla u 4D Wand-u)
    [OriginalnaMPCijena] [decimal](11, 2) NULL,                   ([MPC+PDV]- MP cijena artikla u 4D Wand-u)
    [WWW] [varchar](250) COLLATE Croatian_CI_AS NULL,             (WWW adresa artikla)
    [DatumUnosa] [datetime] NULL,                                 (Datum unosa artikla)
    [Slika] [varchar](250) COLLATE Croatian_CI_AS NULL,           (Naziv datoteke s prvom slikom artikla)
    [Slika2] [varchar](250) COLLATE Croatian_CI_AS NULL,          (Naziv datoteke s drugom slikom artikla)
    [Slika3] [varchar](250) COLLATE Croatian_CI_AS NULL,          (Naziv datoteke s trećom slikom artikla)
    [Slika4] [varchar](250) COLLATE Croatian_CI_AS NULL,          (Naziv datoteke s četvrtom slikom artikla)
    [Slika5] [varchar](250) COLLATE Croatian_CI_AS NULL,          (Naziv datoteke s petom slikom artikla)
    [Slika6] [varchar](250) COLLATE Croatian_CI_AS NULL,          (Naziv datoteke sa šestom slikom artikla)
    [BrojSlika] [int] NULL,                                       (Ukupan broj slika na artiklu)
    [Cjenik1] [tinyint] NULL,                                     (Kolona cjenika broj 1 u planskom cjeniku)
    [Cjenik2] [tinyint] NULL,                                     (Kolona cjenika broj 2 u planskom cjeniku)
    [Cjenik3] [tinyint] NULL,                                     (Kolona cjenika broj 3 u planskom cjeniku)
    [Cjenik4] [tinyint] NULL,                                     (Kolona cjenika broj 4 u planskom cjeniku)
    [Cjenik5] [tinyint] NULL,                                     (Kolona cjenika broj 5 u planskom cjeniku)
    [Cjenik6] [tinyint] NULL,                                     (Kolona cjenika broj 6 u planskom cjeniku)
    [Cjenik7] [tinyint] NULL,                                     (Kolona cjenika broj 7 u planskom cjeniku)
    [Cjenik8] [tinyint] NULL,                                     (Kolona cjenika broj 8 u planskom cjeniku)
    [SkladisnoMjesto] [varchar](30) COLLATE Croatian_CI_AS NULL,  (skladišno mjesto upisano na artiklu)
    [KolicinaMin] [decimal](13, 3) NULL,                          (Minimalna količina upisana na artiklu)
    [KolicinaOpt] [decimal](13, 3) NULL,                          (Optimalna količina upisana na artiklu)
    [KolicinaMax] [decimal](13, 3) NULL,                          (Maksimalna količina  upisana na artiklu)
    [Opis] [varchar](6400) COLLATE Croatian_CI_AS NULL            (Opis artikla (napomena))

CREATE TABLE [dbo].[Grupas](
    [GrupaID] [int] NOT NULL,                                     (ID registra klasifikacije)
    [Roditelj] [int] NULL,                                        (Roditelj klasifikacije)
    [Nivo] [int] NULL,                                            (Nivo klasifikacije)
    [Zadnji] [int] NULL,                                          (Oznaka da li je odabrani nivo zadnji u klasifikaciji)
    [Artikala] [int] NULL,                                        (Broj artikala u klasifikaciji)
    [Sifra] [varchar](20) COLLATE Croatian_CI_AS NULL,            (šifra klasifikacije)
    [Naziv] [varchar](80) COLLATE Croatian_CI_AS NULL,            (Naziv klasifikacije)
    [Opis] [varchar](80) COLLATE Croatian_CI_AS NULL              (Opis klasifikacije)

CREATE TABLE [dbo].[Rabats](
    [RabatID] [int] NOT NULL,                                     (ID stavke rabatne politike)
    [PartnerID] [int] NULL,                                       (ID komitenta Kupca za kojeg je dodijeljena rabatna politika)
    [ProizvodjacID] [int] NULL,                                   (ID komitenta Proizvođača po kojem je dodijeljena rabatna politika)
    [RobaID] [int] NULL,                                          (ID artikla za koji je dodijeljena rabatna politika)
    [PartnerGrupa] [varchar](20) COLLATE Croatian_CI_AS NULL,     (šifra grupe komitenata za koju je dodijeljena rabatna politika)
    [Klasifikacija] [varchar](20) COLLATE Croatian_CI_AS NULL,    (šifra klasifikacije za koju je dodijeljena rabatna politika)
    [Postotak] [decimal](11, 2) NULL,                             (Upisani postotak u rabatnoj politici)
    [Cijena] [decimal](11, 2) NULL,                               (Upisana cijena u rabatnoj politici)
    [DatumStart] [int] NULL,                                      (Datum od kada vrijedi definirana stavka rabatne politike)
    [DatumEnd] [int] NULL                                         (Datum do kada vrijedi definirana stavka rabatne politike)

CREATE TABLE [dbo].[Osobas](
    [OsobaID] [int] NOT NULL,                                     (ID osobe)
    [PartnerID] [int] NULL,                                       (ID komitenta na kojeg je osoba vezana)
    [PartnerCentralaID] [int] NULL,                               (ID centrale komitenta)
    [Lozinka] [varchar](30) COLLATE Croatian_CI_AS NULL,          (Lozinka osobe za pristup web komponenti 4D Wand IMC-a)
    [PartnerGrupa] [varchar](20) COLLATE Croatian_CI_AS NULL,     (Grupa komitenata)
    [Ime] [varchar](30) COLLATE Croatian_CI_AS NULL,              (Ime osobe)
    [Prezime] [varchar](30) COLLATE Croatian_CI_AS NULL,          (Prezime osobe)
    [PartnerNaziv] [varchar](80) COLLATE Croatian_CI_AS NULL,     (Naziv komitenta na kojeg je osoba vezana)
    [Adresa] [varchar](80) COLLATE Croatian_CI_AS NULL,           (Adresa osobe)
    [PostBroj] [varchar](80) COLLATE Croatian_CI_AS NULL,         (Poštanski broj prebivališta osobe)
    [Mjesto] [varchar](80) COLLATE Croatian_CI_AS NULL,           (Naziv grada prebivališta osobe)
    [Drzava] [varchar](80) COLLATE Croatian_CI_AS NULL,           (Naziv države prebivališta osobe)
    [Telefon] [varchar](80) COLLATE Croatian_CI_AS NULL,          (Broj telefona)
    [Fax] [varchar](80) COLLATE Croatian_CI_AS NULL,              (Broj tax-a)
    [eMail] [varchar](80) COLLATE Croatian_CI_AS NULL,            (E-mail adresa osobe)
    [OIB] [varchar](80) COLLATE Croatian_CI_AS NULL,              (OIB osobe)
    [NacinOtpreme] [varchar](80) COLLATE Croatian_CI_AS NULL,     (Način otpreme odabran na komitentu)
    [Rabat] [decimal](11, 2) NULL,                                (Rabat kupca definiran na komitentu)
    [ZanemariAkciju] [int] NULL,                                  (Indikator da se za komitenta treba zanemariti akcija iz rabatne politike)
    [ZanemariRabatnu] [int] NULL,                                 (Indikator da se za komitenta treba zanemariti rabatna politika)
    [LoyaltyKartica] [varchar](40) COLLATE Croatian_CI_AS NULL,   (Broj kartice programa vjernosti)
    [BodoviStanje] [int] NULL,                                    (Stanje bodova programa vjernosti)
    [PostotakLoyaltyPopusta] [int] NULL,                          (Postotak popusta ostvaren u programu vjernosti)
    [Prioritet] [varchar](80) COLLATE Croatian_CI_AS NULL,        (Naziv registra prioriteta vezanog na osobu)
    [WandUserID] [int] NOT NULL DEFAULT (0)                       (ID usera 4D Wand-a vezanog na osobu)

CREATE TABLE [dbo].[Kosaras](
    [KosaraID] [int] IDENTITY(1,1) NOT NULL,                      (ID košare)
    [SifraKosare] [varchar](50) NULL,                             (Poveznica stavke košare i narudžbe po polju BrojNarudzbe iz tablice Narudbas)
    [NarudzbaID] [int] NOT NULL DEFAULT (0),                      (Poveznica stavke košare i narudžbe po polju NarudzbaID iz tablice Narudbas)
    [RobaID] [int] NOT NULL DEFAULT (0),                          (ID Artikla)
    [Ident] [varchar](50) NULL,                                   (Identifikacija robe iz parametara programa (ID, bar kod, kataloški broj ili šifra))
    [Naziv] [varchar](200) NULL,                                  (Naziv robe)
    [JM] [varchar](10) NULL,                                      (Jedinica mjere)
    [VPCijena] [decimal](20, 2) NOT NULL,                         (VP Cijena)
    [MPCijena] [decimal](20, 2) NOT NULL,                         (MP Cijena)
    [Kolicina] [decimal](20, 3) NOT NULL,                         (Količina stavke)
    [BrutoIznos] [decimal](20, 2) NOT NULL,                       (Bruto iznos stavke)
    [Rabat] [decimal](20, 2) NOT NULL,                            (Rabat)
    [IznosRabata] [decimal](20, 2) NOT NULL,                      (Iznos rabata)
    [VPIznos] [decimal](20, 2) NOT NULL,                          (VP Iznos)
    [IznosPDV] [decimal](20, 2) NOT NULL,                         (Iznos PDV-a)
    [Ambalaza] [decimal](20, 2) NOT NULL,                         (Iznos povratne naknade za ambalažu)
    [Trosarina] [decimal](20, 2) NOT NULL,                        (Iznos trošarine)
    [MPIznos] [decimal](20, 2) NOT NULL,                          (MP Iznos)
    [Izvor] [int] NOT NULL DEFAULT (0),                           (Izvor stavke (0 - Dodano kroz web komponentu 4D Wand IMC-a; 1 - skenirani bar kod - mobilna aplikacija; 2 - ručno unešeno - mobilna aplikacija))
    [PartnerID] [int] NOT NULL DEFAULT (0),                       (ID komitenta)
    [Napomena] [varchar](1000) NULL,                              (Napomena stavke košare)
    [DateCreated] [datetime] NULL,                                (Datum kreiranja)
    [StopaPDV] [varchar](80) NULL)                                (Stopa po kojoj je izračunat iznos PDV-a)

CREATE TABLE [dbo].[Narudzbas](
    [NarudzbaID] [int] IDENTITY(1,1) NOT NULL,                    (ID narudžbe)
    [BrojNarudzbe] [varchar](80) NULL,                            (Broj narudžbe)
    [Partner] [int] NOT NULL DEFAULT (0),                         (ID komitenta)
    [OsobaID] [int] NOT NULL DEFAULT (0),                         (ID osobe)
    [BrojStavki] [int] NOT NULL DEFAULT (0),                      (Ukupan broj stavki u narudžbi)
    [Kolicina] [decimal](20, 3) NOT NULL,                         (Ukupna količina stavki u narudžbi)
    [DOK_Dokument] [int] NOT NULL DEFAULT (0),                    (Ne koristi se)
    [DOK_Status] [int] NOT NULL DEFAULT (0),                      (Ne koristi se)
    [Poslana] [tinyint] NOT NULL DEFAULT (0),                     (Oznaka da je narudžba poslana)
    [Ucitana] [tinyint] NOT NULL DEFAULT (0),                     (Oznaka da je narudžba učitana)
    [Placena] [tinyint] NOT NULL DEFAULT (0),                     (Oznaka da je narudžba plaćena)
    [Rezervacija] [tinyint] NOT NULL DEFAULT (0),                 (Oznaka da dokument pretponude/ponude rezervira količinu u 4D Wand-u)
    [Firma] [varchar](80) NULL,                                   (Naziv tvrtke koja je obradila narudžbu)
    [Osoba] [varchar](80) NULL,                                   (Ime prezime osobe koja je obradila narudžbu)
    [OIB] [varchar](11) NULL,                                     (OIB tvrtke koja je obradila narudžbu)
    [Email] [varchar](80) NULL,                                   (e-Mail na koji je poslana narudžba)
    [Telefon] [varchar](80) NULL,                                 (Telefon upisan na formi narudžbe)
    [Fax] [varchar](80) NULL,                                     (Fax upisan na formi narudžbe)
    [Adresa] [varchar](80) NULL,                                  (Adresa tvrtke/osobe upisane na formi narudžbe)
    [PostBroj] [varchar](80) NULL,                                (Poštanski broj tvrtke/osobe upisan na formi narudžbe)
    [Mjesto] [varchar](80) NULL,                                  (Mjesto u kojoj se tvrtka/osoba nalazi upisan na formi narudžbe)
    [Drzava] [varchar](2) NULL),                                  (Dvoslovna međunarodna oznaka države (Standard: ISO 3166 - Alpha-2 code))
    [NacinOtpreme] [varchar](80) NULL,                            (šifra ili naziv načina otpreme iz tablice [NaciniOtpremas])
    [Napomena] [varchar](1000) NULL,                              (Napomena upisana na formi narudžbe)
    [KlasaDokumenta] [varchar](3) NULL,                           (Troslovna oznaka klase dokumenta u koji se importira narudžba)
    [Skladiste] [varchar](10) NULL,                               (skladište na koje se importira narudžba)
    [Valuta] [int] NULL,                                          (Valuta koja se importira na narudžbu u 4D Wand (međunarodna numerička oznaka valute 978, 840, 191,...) koja mora biti upisana u 4D Wand-u, u registru Valuta)
    [OznakaValute] [varchar](3) NULL,                             (Valuta koja se importira na narudžbu u 4D Wand(međunarodna troslovna oznaka valute EUR, USD, HRK,...) koja mora biti upisana u 4D Wand-u, u registru Valuta)
    [Tecaj] [decimal](20, 6) NULL,                                (Tecaj koji je primjenjen na 4D Wand IMC-u ako se ne pošalje uzima se tečaj upisan u 4D Wand-u)
    [BrutoIznos] [decimal](20, 2) NOT NULL,                       (Bruto iznos narudžbe)
    [VPIznos] [decimal](20, 2) NOT NULL,                          (VP iznos narudžbe)
    [MPIznos] [decimal](20, 2) NOT NULL,                          (MP iznos narudžbe)
    [BrojOstvarenihBodovaProgramaVjernosti] [int] NOT NULL,       (Broj ostvarenih bodova programa vjernosti po narudžbi)
    [BrojPotrosenihBodovaProgramaVjernosti] [int] NOT NULL,       (Broj potrošenih bodova programa vjernosti po narudžbi)
    [PostotakPopustaProgramaVjernosti] [int] NOT NULL,            (Postotak popusta programa vjernosti)
    [OsobaPassword] [varchar](20) NULL,                           (Lozinka osobe definirana na WEB-u)
    [NacinPlacanja] [varchar](6) NULL,                            (šifra načina plaćanja iz registra načina plaćanja)
    [DateCreated] [datetime] NULL,                                (Datum kreiranja narudžbe)
    [PozivNaBroj] [varchar](30) NULL,                             (Poziv na broj odobrenja)
    [OznakaDrzavePoreza] [varchar](2) NULL)                       (Dvoslovna međunarodna oznaka države (Standard: ISO 3166 - Alpha-2 code) za plaćanje poreza u prodaji na daljinu)

CREATE TABLE [dbo].[Skladistas](
    [SkladisteID] [int] NOT NULL,                                 (ID skladišta)
    [Skladiste] [varchar](10) COLLATE Croatian_CI_AS NULL,        (šifra skladišta)
    [Naziv] [varchar](80) COLLATE Croatian_CI_AS NULL,            (Naziv skladišta)
    [Adresa] [varchar](200) COLLATE Croatian_CI_AS NULL)          (Adresa skladišta)

CREATE TABLE [dbo].[Stanjas](
    [StanjeID] [int] NOT NULL,                                    (ID stanja)
    [RobaID] [int] NULL,                                          (ID artikla)
    [SkladisteID] [int] NULL,                                     (ID skladišta)
    [Skladiste] [varchar](10) COLLATE Croatian_CI_AS NULL,        (šifra skladišta)
    [Zaliha] [decimal](13, 3) NULL,                               (Zaliha na skladištu)
    [Rezervirano] [decimal](13, 3) NULL                           (Rezervirana količina artikla na skladištu)
    [Raspolozivo] [decimal](13, 3) NULL                           (Dostupna količina (zaliha - rezervirano) artikla na skladištu)
    [SkladisnoMjesto] [varchar](30) COLLATE Croatian_CI_AS NULL   (skladišno mjesto upisano na skladištu)
    [KolicinaMin] [decimal](13, 3) NULL,                          (Minimalna količina upisana na skladištu)
    [KolicinaOpt] [decimal](13, 3) NULL,                          (Optimalna količina upisana na skladištu)
    [KolicinaMax] [decimal](13, 3) NULL)                          (Maksimalna količina upisana na skladištu)

CREATE TABLE [dbo].[Atributs](
    [AtributID] [int] NOT NULL,                                   (ID atributa)
    [AtributVrstaID] [int] NULL,                                  (ID vrste atributa)
    [Razina] [int] NULL,                                          (Razina atributa)
    [Disabled] [int] NULL,                                        (Onemogućavanje vrste atributa: 1 - onemogućen/0 - omogućen)
    [Redoslijed] [int] NULL)                                      (Redoslijed prikaza atributa)

CREATE TABLE [dbo].[AtributVrijednosts](
    [AtributVrijednostID] [int] NOT NULL,                         (ID atributa vrijednosti)
    [AtributID] [int] NULL,                                       (ID atributa)
    [AtributJezikID] [int] NULL,                                  (ID jezika atributa)
    [Opis] [varchar](500) COLLATE Croatian_CI_AS NULL)            (Opis atributa)

CREATE TABLE [dbo].[AtributVrstas](
    [AtributVrstaID] [int] NOT NULL,                              (ID vrste atributa)
    [Opis] [varchar](30) COLLATE Croatian_CI_AS NULL,             (Opis vrste atributa)
    [TipAtributa] [int] NULL,                                     (Tip vrste atributa: 1 - Lista; 2 - CheckBox; 3 - Text)
    [Redoslijed] [int] NULL,                                      (Redoslijed vrste atributa)
    [Disabled] [int] NULL)                                        (Onemogućavanje vrste atributa: 1 - onemogućen/0 - omogućen)

CREATE TABLE [dbo].[RobeAtributs](
    [RobaAtributID] [int] NOT NULL,                               (ID roba atributa)
    [RobaID] [int] NULL,                                          (ID artikala)
    [AtributID] [int] NULL)                                         (ID Atributa)

CREATE TABLE [dbo].[AtributJeziks](
    [AtributJezikID] [int] NOT NULL,                              (ID jezika atribut)
    [Oznaka] [varchar](3) COLLATE Croatian_CI_AS NULL,            (Oznaka jezika atributa)
    [Naziv] [varchar](80) COLLATE Croatian_CI_AS NULL)            (Naziv jezika atributa)

CREATE TABLE [dbo].[AtributTemplates](
    [AtributTemplateID] [int] NOT NULL,                           (ID atribut template-a)
    [AtributVrstaID] [int] NULL,                                  (ID vrste atributa)
    [Klasifikacija [varchar](20) COLLATE Croatian_CI_AS NULL)     (šifra klasifikacije za koju vrijedi template)

CREATE TABLE [dbo].[Parameters](
    [ParameterID] [int] NOT NULL,                                 (ID parametra)
    [Name] [varchar](80) COLLATE Croatian_CI_AS NULL,             (Naziv parametra)
    [Value] [varchar](2000) COLLATE Croatian_CI_AS NULL           (Vrijednost parametra)

CREATE TABLE [dbo].[NaciniPlacanjas](
    [NacinPlacanjaID] [int] NOT NULL,                             (ID registra načina plaćanja)
    [Sifra] [varchar](20) COLLATE Croatian_CI_AS NULL,            (šifra registra načina plaćanja)
    [Naziv] [varchar](80) COLLATE Croatian_CI_AS NULL,            (Naziv registra načina plaćanja)
    [RabatPoNacinuPlacanja] [decimal](11, 2) NULL                 (Rabat po načinu plaćanja)

CREATE TABLE [dbo].[NaciniOtpremas](
    [NacinOtpremeID] [int] NOT NULL,                              (ID registra načina otpreme)
    [Sifra] [varchar](20) COLLATE Croatian_CI_AS NULL,            (šifra registra načina otpreme)
    [Naziv] [varchar](80) COLLATE Croatian_CI_AS NULL,            (Naziv registra načina otpreme)
    [RabatPoNacinuPlacanja] [decimal](11, 2) NULL                 (Rabat po načinu otpreme)

CREATE TABLE [dbo].[RobDocs]
    [DocID] [int] NOT NULL,                                       (ID veze datoteke na artikl)
    [RobaID] [int] NOT NULL,                                      (ID artikla)
    [Vrsta] [varchar](6) COLLATE Croatian_CI_AS NULL,             (šifra registra vrste datoteke vezane na artikl)
    [Link] [varchar](256) COLLATE Croatian_CI_AS NULL,            (Naziv datoteke vezane na artikl ili link na web stranicu sadržaja...)
    [Folder] [varchar](256) COLLATE Croatian_CI_AS NULL,          (Folder u kojem se nalazi datoteka vezana na artikl)
    [Datum] [datetime] NULL                                       (Datum kreiranja)

CREATE TABLE [dbo].[Dokuments]
    [DokumentID] [int] NOT NULL,                                  (ID Dokumenta)
    [DokumentRoditeljID] [int] NOT NULL,                          (ID roditeljskog (prethodnog) dokumenta u stablu)
    [DokumentDijeteID] [int] NOT NULL,                            (ID djeteta (sljedećeg) dokumenta u stablu)
    [Tip] [int] NOT NULL,                                         (Tip dokumenta definiran u pregledu klasa i tipova dokumenata)
    [Klasa] [varchar](5) COLLATE Croatian_CI_AS NULL,             (Klasa dokumenta definirana u pregledu klasa i tipova dokumenata)
    [Broj] [int] NULL,                                            (Broj dokumenta)
    [Datum] [datetime] NULL,                                      (Datum dokumenta)
    [Skladiste] [varchar](10) COLLATE Croatian_CI_AS NULL,        (skladište na kojem je otvoren dokument)
    [WebNarudzbaID] [int] NULL,                                   (ID narudžbe na koju je vezan dokument)
    [WebNarudzba] [varchar](80) COLLATE Croatian_CI_AS NULL,      (Broj narudžbe na koju je vezan dokument)
    [PartnerID] [int] NULL,                                       (ID komitenta tablice DokPartners)
    [OsobaID] [int] NULL,                                         (ID osobe tablice DokOsobass)
    [RadniStatus] [int] NULL,                                     (Radni status dokumenta 0 - Neodobren; 1 - Odobren)
    [KorisnickiStatus] [varchar](80) COLLATE Croatian_CI_AS NULL, (Status dokumenta definiran od strane korisnika na dokumentu Radnih naloga)
    [DatumIVrijemeOdobravanja] [datetime] NULL,                   (Datum i vrijeme odobravanja dokumenta)
    [OriginalniDokId] [int] NULL,                                 (Id originalnog dokumenta)
    [OriginalniDokBroj] [int] NULL                                (Broj originalnog dokumenta)

CREATE TABLE [dbo].[DokStavkas]
    [StavkaID] [int] NOT NULL,                                    (ID stavke dokumenta)
    [DokumentID] [int] NOT NULL,                                  (ID dokumenta iz tablice Dokuments)
    [StavkaRoditeljID] [int] NOT NULL,                            (ID roditeljske stavke)
    [RobaID] [int] NOT NULL,                                      (ID artikla iz tablice DokRobas)
    [Kolicina] [decimal](13, 3) NULL,                             (Količina na stavci)
    [VPIznos] [decimal](20, 2) NULL,                              (VP iznos stavke)
    [MPIznos] [decimal](20, 2) NULL,                              (MP Iznos stavke)
    [Datum1] [datetime] NULL,                                     (Datum dolaska na narudžbama dobavljača (NAR))
    [Datum2] [datetime] NULL,                                     (Datum dolaska na narudžbama od kupca (ULN))
    [InfoKolicina1] [decimal](13, 3) NULL,                        (Količina: NAR - U dolasku,   ULN - Naručeno)
    [InfoKolicina2] [decimal](13, 3) NULL,                        (Količina: NAR - Zaprimljeno, ULN - Odobreno)
    [InfoKolicina3] [decimal](13, 3) NULL,                        (Količina: NAR - Preostalo,   ULN - Isporučeno)
    [InfoKolicina4] [decimal](13, 3) NULL,                        (Količina: NAR - Potvrđeno,   ULN - Izuzeto)
    [InfoKolicina5] [decimal](13, 3) NULL,                        (Količina: NAR - Nepotvrđeno, ULN - Otkazano)
    [InfoKolicina6] [decimal](13, 3) NULL,                        (Količina: NAR - Otkazano,    ULN - Preostalo)

CREATE TABLE [dbo].[DokPartners]
    [PartnerID] [int] NOT NULL,                                   (ID komitenta)
    [CentralaID] [int] NOT NULL,                                  (ID centrale komitenta)
    [Naziv] [varchar](80) COLLATE Croatian_CI_AS NULL,            (Naziv komitenta)
    [Adresa] [varchar](80) COLLATE Croatian_CI_AS NULL,           (Adresa komitenta)
    [PostBroj] [varchar](80) COLLATE Croatian_CI_AS NULL,         (Poštanski broj komitenta)
    [Mjesto] [varchar](80) COLLATE Croatian_CI_AS NULL            (Mjesto/Grad komitenta)

CREATE TABLE [dbo].[DokRobas]
    [RobaID] [int] NOT NULL,                                      (ID artikla vezanog na stavke dokumenata)
    [Vrsta] [tinyint] NULL,                                       (Vrsta artikla: 0 - Artikl; 2 - Usluga)
    [Tip] [tinyint] NULL,                                         (Tip artikla : 0 - Roba; 1 - Proizvod; 2 - Uslugu; 3 - Vozilo; 4 - Objekt)
    [Sifra] [varchar](20) COLLATE Croatian_CI_AS NULL,            (šifra artikla)
    [KatBroj] [varchar](30) COLLATE Croatian_CI_AS NULL,          (Kataloški broj artikla)
    [Naziv] [varchar](80) COLLATE Croatian_CI_AS NULL,            (Naziv artikla)
    [JM] [varchar](6) COLLATE Croatian_CI_AS NULL                 (Jedinica mjere)

CREATE TABLE [dbo].[DokOsobas]
    [OsobaID] [int] NOT NULL,                                     (ID osobe vezane na dokument)
    [PartnerID] [int] NULL,                                       (ID komitenta vezanog na dokument)
    [Ime] [varchar](30) COLLATE Croatian_CI_AS NULL,              (Ime osobe)
    [Prezime] [varchar](30) COLLATE Croatian_CI_AS NULL,          (Prezime osobe)
    [eMail] [varchar](80) COLLATE Croatian_CI_AS NULL,            (e-Mail osobe)
    [Lozinka] [varchar](30) COLLATE Croatian_CI_AS NULL           (Lozinka osobe za pristup Web-u)

CREATE TABLE [dbo].[BannerDocs]
    [DocID] [int] NOT NULL,                                       (ID datoteka vezanih uz banner-e)
    [Vrsta] [varchar](6) COLLATE Croatian_CI_AS NULL,             (Vrsta bannera)
    [LinkSlika] [varchar](256) COLLATE Croatian_CI_AS NULL,       (Naziv datoteke vezane na artikl ili link na web stranicu sadržaja...)
    [Folder] [varchar](256) COLLATE Croatian_CI_AS NULL,          (Folder u kojem se nalazi datoteka vezana na artikl)
    [Text] [varchar](256) COLLATE Croatian_CI_AS NULL,            (Tekst koji se prikazuje u banner-u)
    [Datum] [datetime] NULL                                       (Datum kreiranja)

CREATE TABLE [dbo].[Sastavnicas]
    [SastavnicaID] [int] NOT NULL,                                (ID sastavnice)
    [Proizvod] [int] NULL,                                        (ID artikla koji je definiran kao proizvod)
    [RedniBroj] [int] NULL,                                       (Redni broj komponente)
    [Grupa] [int] NULL,                                           (šifra klasifikacije artikla vezanog kao komponenta)
    [RobaID] [int] NOT NULL,                                      (ID artikla komponente)
    [Naziv] [varchar](80) COLLATE Croatian_CI_AS NULL,            (Naziv artikla komponente)
    [Kolicina] [decimal](13, 3) NULL,                             (Količina komponente u proizvodu)
    [FiksnaKolicina] [decimal](11, 2) NULL,                       (Količina fiksne komponente u proizvodnji)
    [FiksniPostotak] [decimal](11, 2) NULL,                       (Fiksni postotak komponente)
    [PostotakKala] [decimal](11, 2) NULL                          (Postotak kala komponente)

CREATE TABLE [dbo].[OsobaPartnerVezas]
    [OsobaPartnerVezaID] [int] NOT NULL,                          (ID tablice OsobaPartnerVezas)
    [OsobaID] [int] NOT NULL,                                     (ID osobe)
    [PartnerID] [int] NULL,                                       (ID komitenta na kojeg je osoba vezana)
    [PartnerCentralaID] [int] NULL,                               (ID centrale komitenta)
    [PartnerGrupa] [varchar](20) COLLATE Croatian_CI_AS NULL,     (Grupa komitenata)
    [PartnerNaziv] [varchar](80) COLLATE Croatian_CI_AS NULL,     (Naziv komitenta na kojeg je osoba vezana)
    [Adresa] [varchar](80) COLLATE Croatian_CI_AS NULL,           (Adresa osobe)
    [PostBroj] [varchar](80) COLLATE Croatian_CI_AS NULL,         (Poštanski broj prebivališta osobe)
    [Mjesto] [varchar](80) COLLATE Croatian_CI_AS NULL,           (Naziv grada prebivališta osobe)
    [Drzava] [varchar](80) COLLATE Croatian_CI_AS NULL,           (Naziv države prebivališta osobe)
    [Telefon] [varchar](80) COLLATE Croatian_CI_AS NULL,          (Broj telefona)
    [Fax] [varchar](80) COLLATE Croatian_CI_AS NULL,              (Broj tax-a)
    [eMail] [varchar](80) COLLATE Croatian_CI_AS NULL,            (E-mail adresa osobe)
    [OIB] [varchar](80) COLLATE Croatian_CI_AS NULL,              (OIB osobe)
    [NacinOtpreme] [varchar](80) COLLATE Croatian_CI_AS NULL,     (Način otpreme odabran na komitentu)
    [Rabat] [decimal](11, 2) NULL,                                (Rabat kupca definiran na komitentu)
    [ZanemariAkciju] [int] NULL,                                  (Indikator da se za komitenta treba zanemariti akcija iz rabatne politike)
    [ZanemariRabatnu] [int] NULL,                                 (Indikator da se za komitenta treba zanemariti rabatna politika)
    [LoyaltyKartica] [varchar](40) COLLATE Croatian_CI_AS NULL,   (Broj kartice programa vjernosti)
    [BodoviStanje] [int] NULL,                                    (Stanje bodova programa vjernosti)
    [PostotakLoyaltyPopusta] [int] NULL,                          (Postotak popusta ostvaren u programu vjernosti)
    [Prioritet]] [varchar](80) COLLATE Croatian_CI_AS NULL        (Naziv registra prioriteta vezanog na osobu)

CREATE TABLE [dbo].[SkladistaInventuras]
    [SkladistaInventuraID] [int] NOT NULL,                        (ID tablice SkladistaInventuras)
    [Skladiste] [varchar](10) COLLATE Croatian_CI_AS NULL,        (šifra skladišta)
    [Naziv] [varchar](80) COLLATE Croatian_CI_AS NULL,            (Naziv skladišta)
    [Adresa] [varchar](200) COLLATE Croatian_CI_AS NULL           (Adresa skladišta)

CREATE TABLE [dbo].[RobeVezas]
    [RobaVezaID] [int] NOT NULL,                                  (ID tablice RobeVezas)
    [Roditelj] [int] NULL,                                        (ID robe za koju se definira zamjenski artikl)
    [Veza] [int] NULL,                                            (ID robe koja je zamjenski artikl)

CREATE TABLE [dbo].[Barcodes]
    [BarcodeID] [int] NOT NULL,                                   (ID tablice Barcodes)
    [Roba] [int] NOT NULL,                                        (ID robe za koju vrijedi dodatna šifra)
    [Partner] [int] NOT NULL,                                     (ID partnera za koju vrijedi dodatna šifra)
    [BarCode] [varchar](50) COLLATE Croatian_CI_AS NULL,          (Vrijednost dodatne šifre)
    [Naziv] [varchar](80) COLLATE Croatian_CI_AS NULL,            (Naziv dodatne šifre)
    [Naziv1] [varchar](80) COLLATE Croatian_CI_AS NULL,           (Naziv1 dodatne šifre)
    [Kolicina] [decimal](12, 3) NULL,                             (Količina robe za dodatnu šifru)
 

CREATE TABLE [dbo].[AdreseDostaves]
    [AdresaID] [int] IDENTITY(1,1) NOT NULL,                      (ID tablice AdresaID)
    [NarudzbaID] [int] NOT NULL DEFAULT (0),                      (ID Narudžbe)
    [GUID] [varchar](80) NULL,                                    (Univerzalni identifikator)
    [NazivPrimatelja1] [varchar](80) NULL,                        (Naziv kupca)
    [NazivPrimatelja2] [varchar](80) NULL,                        (Dodatni red za naziv kupca)
    [AdresaPrimatelja1] [varchar](80) NULL,                       (Adresa dostave)
    [AdresaPrimatelja2] [varchar](80) NULL,                       (Dodatni red adrese dostave)
    [Grad] [varchar](80) NULL,                                    (Mjesto, Grad ili Oblast)
    [PostanskiBroj] [varchar](20) NULL,                           (Poštanski broj)
    [Drzava] [varchar](80) NULL,                                  (Država)
    [KontaktTelefon] [varchar](80) NULL,                          (Broj telefona kupca)
    [KontaktEmail] [varchar](80) NULL,                            (Email adresa kupca)
 

CREATE TABLE [dbo].[Partners]
    [PartnerID] [int] NOT NULL,                                   (ID komitenta)
    [CentralaID] [int] NOT NULL,                                  (ID centrale komitenta)
    [PartnerGrupa] [varchar](20) COLLATE Croatian_CI_AS NULL,     (Grupa komitenata)
    [Naziv] [varchar](80) COLLATE Croatian_CI_AS NULL,            (Naziv komitenta)
    [Opis] [varchar](200) COLLATE Croatian_CI_AS NULL,            (Opis1 i Opis2 s komitenta)
    [Adresa] [varchar](200) COLLATE Croatian_CI_AS NULL,          (Adresa komitenta)
    [PostBroj] [varchar](80) COLLATE Croatian_CI_AS NULL,         (Poštanski broj adrese komitenta)
    [Mjesto] [varchar](80) COLLATE Croatian_CI_AS NULL,           (Naziv grada adrese komitenta)
    [Drzava] [varchar](80) COLLATE Croatian_CI_AS NULL,           (Naziv države adrese komitenta)
    [Telefon] [varchar](80) COLLATE Croatian_CI_AS NULL,          (Broj telefona komitenta)
    [Fax] [varchar](80) COLLATE Croatian_CI_AS NULL,              (Broj fax-a komitenta)
    [eMail] [varchar](80) COLLATE Croatian_CI_AS NULL,            (E-mail adresa komitenta)
    [OIB] [varchar](80) COLLATE Croatian_CI_AS NULL,              (OIB komitenta)
    [NacinOtpreme] [varchar](80) COLLATE Croatian_CI_AS NULL,     (Način otpreme odabran na komitentu)
    [Rabat] [decimal](11, 2) NULL,                                (Rabat kupca definiran na komitentu)
    [ZanemariAkciju] [int] NULL,                                  (Indikator da se za komitenta treba zanemariti akcija iz rabatne politike)
    [ZanemariRabatnu] [int] NULL,')                               (Indikator da se za komitenta treba zanemariti rabatna politika)
   

CREATE TABLE [dbo].[Drzavas](
    [MedunarodnaSifra] [int] NOT NULL,                            (Troznamenkasta šifra države (Standard: ISO 3166 - Numeric code))
    [MedunarodnaOznaka] [varchar](2) COLLATE Croatian_CI_AS NULL, (Dvoslovna međunarodna oznaka države (Standard: ISO 3166 - Alpha-2 code))
    [Naziv] [varchar](80) COLLATE Croatian_CI_AS NULL             (Naziv države)
   

CREATE TABLE [dbo].[RobaDrzavaTarifas](
    [RobaID] [int] NOT NULL,                                      (ID artikla)
    [MedunarodnaSifra] [int] NOT NULL,                            (Troznamenkasta šifra države (Standard: ISO 3166 - Numeric code) za koju vrijedi stopa)
    [MedunarodnaOznaka] [varchar](2) COLLATE Croatian_CI_AS NULL, (Dvoslovna međunarodna oznaka države (Standard: ISO 3166 - Alpha-2 code) za koju vrijedi stopa)
    [VrstaStopePDV] [int] NOT NULL                                (Vrsta stope (1-Standardna stopa, 2-Međustopa(parking stopa), 3-Smanjena stopa, 4-Super smanjena stopa)
    [StopaPDV] [decimal](11, 2) NOT NULL                          (Stopa PDV-a koja vrijedi za taj artikl)
   

CREATE TABLE [dbo].[DodatnaNapomenas](
    [RobaID] [int] NOT NULL,                                      (ID robe - ovaj ID se nalazi u tablici Robas)
    [AtributJezikID] [int] NOT NULL,                              (ID jezika - ovaj ID se nalazi u tablici AtributJeziks)
    [DodNapomenaVrstaID] [int] NOT NULL,                          (ID vrste dodatne napomene - trenutno moguća samo vrijednost 1)
    [Napomena] [text] NOT NULL)                                   (Sadržaj web dodatne napomene)
   

Niže navedene tablice se kreiraju samo jednom i služe isključivo za rad 4D Wand IMC web komponente i nemaju dodirnih točki s 4D Wand-om. (Favoriti, Plaćanje, itd.)

    [dbo].[Favorites]
    [dbo].[Placanjes]
    [dbo].[PlacanjeParameters]
    [dbo].[KeyValues]
    [dbo].[RobaCijenaDatums]
   

Napomene

Tablice (osim Kosaras, Narudzbas, Favorites, Placanjes, KeyValues i RobaCijenaDatums) se periodično dropaju.
Način rada rabatne politike u 4D Wandu je opisan u uputama pod Pojašnjenje pojedinih polja u sustavu 4D Wand.


*** Napomena - upute se mogu razlikovati u slikama i tekstu od sadržaja koji se nalazi na vašem računalu, ovisno o inačici 4D Wanda koju trenutno koristite. Posljedica je to stalnog razvoja i nadogradnje 4D Wanda, a koji iz objektivnih razloga dinamikom ne prati i nadogradnja modula Upute. Posebno se to odnosi na zamjenu službene valute RH kuna (kn) u euro (€) i njen prikaz u uputama.