AVIS – základní scénář užití
Pro snadnější orientaci při práci s AVIS jsme připravili scénář s použitím nejpoužívanějších metod, který řeší obvykle eshopy.
Scénář zahrnuje následující body:
1. Založení kontaktu a kontrola existence kontaktu.
1.1 Pokud kontakt neexistuje, vytvoření nového.
1.2 Pokud kontakt existuje, aktualizace kontaktu.
2. Založení dokladu Zakázka s tímto kontaktem.
2.1 Vytvoření hlavičky dokladu.
2.2 Vložení identifikátoru nově založeného / aktualizovaného kontaktu do dokladu.
2.3 Založení pěti vzorových položek s různým množstvím a cenami – v cyklu.
2.4 Provedení součtu dokladu.
2.5 Změna stavu položek z konceptu na Dodat.
2.6 Provedení rezervace položek.
Komplexnější způsob použití AVIS je k dispozici ve vzorovém projektu, který lze stáhnout ze stránky Stažení software.
Příklad
class ZakladniPriklad
{
public static void ZalozitKontaktAVytvoritZakazku()
{
KontaktyReference.KontaktContract kontakt;
kontakt = ZakladniPriklad.NovyKontakt();
ZakladniPriklad.VytvoritARezerovatZakazku(kontakt);
}
public static KontaktyReference.KontaktContract NovyKontakt()
{
KontaktyReference.KontaktContract kontakt;
bool KontaktNeexistuje = false;
var sc = KontaktyService();
//kontrolujeme existenci kontaktu v systému, abychom se rozhodli, zda budeme
//provádět vložení nového nebo aktualizaci stávajícího kontaktu
try
{
kontakt = sc.NacistKontakt("Altus Software Test");
}
catch
{
kontakt = new KontaktyReference.KontaktContract();
KontaktNeexistuje = true;
}
kontakt.Firma = "Altus Software Test"; //identifikátor systému Altus Vario string(30)
kontakt.NazevFirmy = "Altus Software s.r.o.";
kontakt.TypKontaktu = "Organizace";
kontakt.Kniha = "Adresář";
kontakt.Email = "email@altus.cz";
kontakt.Telefon = "236 190 190";
kontakt.IC = "61681202";
kontakt.FakturacniAdresa = new KontaktyReference.AdresaContract
{
Ulice = "Rubeška 215/1",
Obec = "Praha 9",
Okres = "Hlavní město Praha",
PSC = "19000"
};
kontakt.DorucovaciAdresa = new KontaktyReference.AdresaContract
{
Ulice = "Drobného 555/49",
Obec = "Brno",
PSC = "60200"
};
if (KontaktNeexistuje)
{
//vložením získáme rowguid, který přidělilo Vario
kontakt.rowguid = sc.VlozitKontakt(kontakt);
//opětovým načtením získáme kontakt, který je doplněný o hodnoty šablony v systému Vario
kontakt = sc.NacistKontaktPodleId(kontakt.rowguid);
}
else
{
sc.AktualizovatKontakt(kontakt);
}
return kontakt;
}
public static void VytvoritARezerovatZakazku(KontaktyReference.KontaktContract kontakt)
{
//vytvoříme doklad
var doklad = ZakladniPriklad.VytvoritDokladSVicePolozkami(kontakt);
var sc = DokladyService();
//založíme doklad do Varia a získáme jeho rowguid
doklad.rowguid = sc.VlozitNovyDoklad(doklad);
//znovu načteme doklad s doplněnými údaji
doklad = sc.NacistDokladRG(doklad.rowguid);
//zarezervujeme polozky
var sklad = SkladService();
foreach (var polozka in doklad.Polozky)
{
//nejprve nastavíme stav 'DODAT', tím dojde ke zrušení stavu 'koncept' položky
sc.DodatPolozkuDokladu(polozka.rowguid);
//potom provedeme vlastní operaci rezervování
sklad.Blokovat(polozka.rowguid.ToString(), false, true, true);
}
}
public static DokladyReference.DokladContract VytvoritDokladSVicePolozkami(KontaktyReference.KontaktContract kontakt)
{
var doklad = new DokladyReference.DokladContract();
doklad.Kniha = "Zakázky";
doklad.TypZaznamu = "ZZ";
doklad.Poznamka = "Demo AVIS";
doklad.Mena = "EUR";
doklad.Firma = kontakt.Firma; //zadáním identifikátoru firmy dojde k vložení firmy do dokladu
//včetně údajů, předaných při vytváření nového kontaktu
doklad.Datum = DateTime.Today;
doklad.DatumZdanitelnehoPlneni = DateTime.Today;
doklad.FakturacniAdresa = kontakt.FakturacniAdresa.NaAdresuDokladu();
doklad.DorucovaciAdresa = kontakt.DorucovaciAdresa.NaAdresuDokladu();
//pro založení položek použijeme iteraci kolekce s produkty ze vzorových testovacích dat
List<string> produktyNaPolozky = new List<string>();
produktyNaPolozky.Add("Autoatlas mini");
produktyNaPolozky.Add("eKompas GPS");
produktyNaPolozky.Add("Mapa ČR M 335000");
produktyNaPolozky.Add("Nůž SPIRIT Multifunkční");
produktyNaPolozky.Add("Zámek LOCK");
var polozky = new List<DokladyReference.DokladPolozkaContract>();
int i = 0;
foreach (var produkt in produktyNaPolozky)
{
i++;
var polozka = new DokladyReference.DokladPolozkaContract();
polozka.Produkt = produkt;
polozka.MnozstviJednotek = i;
polozka.SazbaDPH = 21m;
polozka.CenaCelkemBezDPH = polozka.MnozstviJednotek * 100m;
polozka.CelkemDPH = polozka.CenaCelkemBezDPH * polozka.SazbaDPH / 100;
polozka.CenaCelkemVcetneDPH = polozka.CenaCelkemBezDPH * (100 + polozka.SazbaDPH) / 100;
polozky.Add(polozka);
}
//položky na výsledném dokladu je nutné sečíst, inegrační služby AVIS tento součet kontrolují
doklad.Polozky = polozky.ToArray();
doklad.CelkemVcetneDPH = doklad.Polozky.Select(p => p.CenaCelkemVcetneDPH).Sum();
doklad.CelkemBezDPH = doklad.Polozky.Select(p => p.CenaCelkemBezDPH).Sum();
doklad.ZaokrouhlovatSoucet = 0.01m;
return doklad;
}
static KontaktyReference.KontaktyClient KontaktyService()
{
var kontakty = new KontaktyReference.KontaktyClient();
kontakty.ClientCredentials.UserName.UserName = "Altus";
kontakty.ClientCredentials.UserName.Password = "";
return kontakty;
}
static DokladyReference.DokladyClient DokladyService()
{
var sc = new DokladyReference.DokladyClient();
sc.ClientCredentials.UserName.UserName = "Altus";
sc.ClientCredentials.UserName.Password = "";
return sc;
}
static SkladReference.SkladClient SkladService()
{
var sklad = new SkladReference.SkladClient();
sklad.ClientCredentials.UserName.UserName = "Altus";
sklad.ClientCredentials.UserName.Password = "";
return sklad;
}
}