Objekt TKAPOrder: Porovnání verzí

Z K.A.P.
Skočit na navigaciSkočit na vyhledávání
m
 
(Není zobrazeno 17 mezilehlých verzí od stejného uživatele.)
Řádek 1: Řádek 1:
Pomocí objektu TKAPOrder lze pracovat s požadavky (čili objednávkami zákazníků). Objekt je dostupný pouze ve skladovém programu. Při vytvoření nové instance objektu se otevřou tabulky SKLADKAR, SKLADZAS a MEMO a pomocí těchto tabulek pak program zjišťuje požadované informace. Doporučujeme proto nevytvářet současně mnoho instancí třídy TKAPOrder a v případě, že se objekty již nevyužívají, tak je uvolnit.
+
Pomocí objektu TKAPOrder lze ve [[Skriptovací programovací jazyk|skriptovacím programovacím jazyku]] pracovat s požadavky (čili objednávkami zákazníků). Objekt je dostupný pouze ve skladovém programu. Při vytvoření nové instance objektu se otevřou tabulky SKLADKAR, SKLADZAS a MEMO a pomocí těchto tabulek pak program zjišťuje požadované informace. Doporučujeme proto nevytvářet současně mnoho instancí třídy TKAPOrder a v případě, že se objekty již nevyužívají, tak je uvolnit.
  
 
===Objekt TKAPOrder ===
 
===Objekt TKAPOrder ===
Řádek 27: Řádek 27:
 
     property Vystavil: String;
 
     property Vystavil: String;
 
     property CelkemBezDPH: Double;
 
     property CelkemBezDPH: Double;
     property CelkemSDPH : Double;
+
     property CelkemSDPH: Double;
     property ProcVykrKc   : Double;
+
     property ProcVykrKc: Double;
     property ProcVykrytiMj : Double;
+
     property ProcVykrytiMj: Double;
     property Sleva         : Double;
+
     property Sleva: Double;
 
     property MaxDatumDodani: TDateTime;
 
     property MaxDatumDodani: TDateTime;
     property PocetPalet   : Double;
+
     property PocetPalet: Double;
     property CelkHmotnost : Double;
+
     property CelkHmotnost: Double;
     property ExtCisloObj   : String;
+
     property ExtCisloObj: String;
     property CasDodani     : String;
+
     property CasDodani: String;
     property TypDokladuSkl : byte;
+
     property TypDokladuSkl: byte;
     property PASIdObj     : longint;
+
     property PASIdObj: longint;
     property IndivCena     : String;
+
     property IndivCena: String;
     property PocetTisku   : byte;
+
     property PocetTisku: byte;
     property PocetOprav   : byte;
+
     property PocetOprav: byte;
     property Priznaky     : byte;
+
     property Priznaky: byte;
     property Mena         : String;
+
     property Mena: String;
     property Kurz         : Double;
+
     property Kurz: Double;
     property Priznaky2     : byte;
+
     property Priznaky2: byte;
     property Priznaky3     : byte;
+
     property Priznaky3: byte;
     property MemoA         : TStringList;
+
     property MemoA: TStringList;
     property MemoB         : TStringList;
+
     property MemoB: TStringList;
     property MemoI         : TStringList;
+
     property MemoI: TStringList;
     property LastError: String;
+
     property LastError: String;  {obsahuje popis poslední nahlášené chyby}
     constructor Create(AktualizaceCen: Boolean);
+
    property RaiseExcept: Boolean; {true=při výskytu chyby se vyvolá výjimka; false=chyby se zapisují jen do LastError (výchozí) }
 +
    property UpdatePrices: Boolean; {povoluje nebo zakazuje automatickou aktualizaci cen přidávaných pomocí AddorderItem}
 +
    property AutoNumber: Boolean; {povoluje nebo zakazuje automatické číslování objednávky}
 +
    property Items(Index: integer): TKAPOrderItem;
 +
     constructor Create(UpdatePrices: Boolean);
 
     destructor Destroy;
 
     destructor Destroy;
 +
    procedure InitNewOrder;
 +
    procedure ClearLastError;
 
     function SetCustomer(ICO: String): Boolean;
 
     function SetCustomer(ICO: String): Boolean;
 
     function LoadOrderHeaderFromDataset(Dataset: TDataset): Boolean;
 
     function LoadOrderHeaderFromDataset(Dataset: TDataset): Boolean;
 
     function LoadOrderItemsFromDataset(Dataset: TDataset; var ChybaNaRadku: longint): Boolean;
 
     function LoadOrderItemsFromDataset(Dataset: TDataset; var ChybaNaRadku: longint): Boolean;
 
     procedure ClearItems;
 
     procedure ClearItems;
 +
    procedure DeleteItem(Index: integer);
 +
    function ItemsCount: integer;
 
     function AddOrderItem(Kod: String; Pocet, PocetBal: Double; AutoPocetBal: Boolean; Cena: Double; Identifikace: String): Boolean;
 
     function AddOrderItem(Kod: String; Pocet, PocetBal: Double; AutoPocetBal: Boolean; Cena: Double; Identifikace: String): Boolean;
     function SaveNewOrder: Boolean;
+
     function LoadOrderByOrderNo(Sklad: word; Prijem: Boolean; CisloObjednavky: longint; LoadItems: Boolean): Boolean;
 +
    function LoadOrderByGUID(GUID: AnsiString; LoadItems: Boolean): Boolean;
 +
    function LoadOrderByID91(ID91: AnsiString; LoadItems: Boolean): Boolean;
 +
    function SaveOrder: Boolean;
 +
    function LogText(TextValue, TextDescription, ItemName : AnsiString): Boolean;
 
  end;
 
  end;
  
Řádek 64: Řádek 76:
 
! Funkce !! Popis  
 
! Funkce !! Popis  
 
|-valign=top
 
|-valign=top
|''constructor Create'' ||vytvořené objekty nezapomeňte uvolnit pomocí metody Free  
+
|''constructor Create(UpdatePrices: Boolean)'' ||Parametr UpdatePrices určuje, zda mají být ceny v objednávce počítány automaticky se zohledněním individuálních cen odběratele nebo budou určeny skriptem při přidávání jednotlivých položek. Vytvořené objekty nezapomeňte uvolnit pomocí metody Free.
 
|-valign=top
 
|-valign=top
|''function IndividualniCena(CenSkupina, AltCenSkupina, KodKarty: String; TypCeny, TypDokladu: Byte; Datum: TDateTime; PocetMJ: Double; var Cena: Double; var CenaSDPH: Double): Boolean'' ||Načte skladovou kartu dle KodKarty z tabulek SKLADKAR a SKLADZAS a vyhodnotí individuální cenu CenSkupina dle zadaných podmínek. TypCeny odpovídá definici cenových pásem ve skladovém programu a používá se pro určení, zda individuální cena je platná pro dané cenové pásmo. Typ dokladu je číslo typu dokladu. Pokud má hodnotu 0, tak se uplatní jen individuální ceny, které nejsou závislé na typu dokladu. Pokud parametr Datum nastavíte na hodnotu 0 nebo v systému nemáte zapnuté sledování individuálních cen na základě data dokladu, tak se použije dnešní datum. Parametr PocetMJ se uplatňuje jen u individuálních cen, které jsou závislé na množství. Parametr Cena musí být před voláním funkce inicializován, protože Cena zároveň funguje jako vstupní parametr (použije se pro individuální ceny typu "běžná cena"). Parametr CenaSDPH je nastaven i v případě, že individuální cena není vyhodnocena (čili výsledek funkce je false).
+
|''procedure InitNewOrder'' ||Reinicializuje objekt pro zpracování nové objednávky (tj. vynuluje se objednávka, smažou se položky i poznámky k objednávce). Tato metoda se volá automaticky v rámci vytvoření objektu TKAPOrder.
 
|-valign=top
 
|-valign=top
|''function PasmoPCNaTypCeny(PasmoPC: byte): byte'' ||Funkce vrací hodnotu typu ceny pro prodejní cenová pásma (prodejní ceny 1 až 40). Typ ceny má tyto hodnoty: 0,1:PC1, 2:PC2, 3:PC3, 4:PC4, 5:PC5, 6:PC6, 7:NC, 8:Doh.NC, 9:Prům.NC, 10 až 18:PC7 až PC15, 19: Spec.NC, 20 až 44: PC16 až PC40
+
|''procedure ClearLastError'' ||Vynuluje informaci poslední detekované chybě.
 
|-valign=top
 
|-valign=top
|''function AktivniUrovneDPH: byte'' ||Funkce vrací počet aktivních úrovní DPH
+
|''function SetCustomer(ICO: String): Boolean'' ||Podle údaje IČO dohledá zákazníka a naplní hlavičku objednávky podle fakturačního místa z adresy. Pokud odběratel není nalezen, tak je odběratel v objednávce vynulován. Podle zákazníka jsou určeny i individuální ceny pro případ automatické aktualizace cen. Funkce vrací true, pokud je zákazník nalezen.
 +
|-valign=top
 +
|''function LoadOrderHeaderFromDataset(Dataset: TDataset): Boolean'' ||Funkce načte z tabulky určené parametrem Dataset hlavičku objednávky. Struktura vstupní tabulky (jména polí) musí odpovídat struktuře tabulky SkladOBJ ze skladového programu. Pokud tabulka obsahuje pole MEMOA nebo MEMOB, tak jsou informace z tohoto pole přeneseny do vlastností MemoA, popř. MemoB (typu StringList). Pole EMAIL, RESPPERSON, PHONE, GUID, FAX, MOBILE, CONTACTEMAIL, SENDINFO jsou uložena ve formátu JménoPole=Hodnota do údaje MemoI. Pokud je ve vstupní tabulce definováno pole Mena a toto pole obsahuje cizí měnu, tak je automaticky dohledán v kurzovém lístku kurz a nastaví se příznaky pro používání cizí měny. Při přidávání položek jsou pak ceny uváděny v cizí měně.
 +
|-valign=top
 +
|''function LoadOrderItemsFromDataset(Dataset: TDataset; var ErrorOnRow: longint): Boolean'' ||Funkce načte z tabulky určené parametrem Dataset položky objednávky. Jména polí mohou být následující: Autokod nebo GUID (nepovinné jednoznačné označení záznamu), Kod nebo ProductCode (kód zboží z tabulky skladových karet), Pocet nebo Quantity (objednaný počet MJ), BaleniX nebo QuantityP (objednaný počet balení - důležité pro výpočet vázaných obalů; pokud pole není definováno, tak se počet balení určí automaticky), Cena nebo Price (cena bez DPH za MJ; pokud je nastavena automatická aktualizace cen, tak se toto pole ignoruje), Identifik nebo Comment (nepovinné pole, max. 30 znakový komentář k položce). Pokud některá položka objednávky nejde importovat, tak je do údaje ErrorOnRow uloženo pořadové číslo řádku, kde nastala chyba (od 1). Předchozí řádky zůstávají načteny.
 +
|-valign=top
 +
|''procedure ClearItems'' ||Tato procedura vymaže seznam položek objednávky.
 +
|-valign=top
 +
|''procedure DeleteItem(Index: integer)'' ||Tato procedura vymaže jednu položku objednávky (číslováno od 0).
 +
|-valign=top
 +
|''function ItemsCount: integer'' ||Funkce vrací počet položek objednávky.
 +
|-valign=top
 +
|''property Items[Index: integer]: TKAPOrderItem'' ||Funkce vrací objekt typu TKAPOrderItem umožňující číst a měnit hodnoty jedné položky objednávky.
 +
|-valign=top
 +
|''function AddOrderItem(Kod: String; Pocet, PocetBal: Double; AutoPocetBal: Boolean; Cena: Double; Identifikace: String): Boolean'' ||Funkce přidá jednu položku objednávky. Karta určená kódem zboží musí existovat v seznamu skladových karet, počet musí být nenulový. Pokud je nastavena automatická aktualizace cen, tak se parametr Cena ignoruje a cena je určena automaticky programem se zohledněním individuální ceny odběratele. Pokud je parametr AutoPocetBal nastaven na true, tak se parametr PocetBal ignouje a počet balení je určen automaticky.
 +
|-valign=top
 +
|''function LoadOrderByOrderNo(Sklad: word; Prijem: Boolean; CisloObjednavky: longint; LoadItems: Boolean): Boolean'' ||Funkce načte z databáze objednávku určenou číslem skladu a číslem objednávky. Parametr Prijem nastavte na false (čili požadavky); Pokud údaj Sklad bude mít hodnotu 0, tak se použije aktuální číslo skladu. Parametr LoadItems určuje, zda načtou i položky objednávky. Funkce vrací true, pokud je objednávka nalezena a načtena.
 +
|-valign=top
 +
|''function LoadOrderByGUID(GUID: AnsiString; LoadItems: Boolean): Boolean'' ||Funkce dohledá GUID a pokud je nalezen, tak načte odpovídající objednávku. GUID se ukládá jen pro externí objednávky a je uložen ve formě textu GUID=hodnota v tabulce MEMO ve vazbě na danou objednávku. Pro použití této funkce je nutné mít aktuální (rozšířenou) verzi indexů pro tabulku MEMO.
 +
|-valign=top
 +
|''function LoadOrderByID91(ID91: AnsiString; LoadItems: Boolean): Boolean'' ||Funkce dohledá a načte objednávku podle [[Struktura interních čárových kódů|identifikačního řetězce znaků]] (obvykle zjištěného za pomocí čtečky čárových kódů).
 +
|-valign=top
 +
|''function LogText(TextValue, TextDescription, ItemName : AnsiString): Boolean'' ||Funkce uloží textovou informaci do LOG souboru - ve vazbě na zpracovávanou objednávku. Záznam lze uložit pouze pro objednávky, které již byly uloženy nebo které byly načteny z databáze. TextValue má max. 80 znaků, TextDescription má 30 znaků a ItemName max.10 znaků - pokud není vyplněno, automaticky se nastaví na LOG)
 +
|-valign=top
 +
|''function SaveOrder: Boolean'' ||Funkce uloží hlavičku objednávky (pokud je AutoNumber=true, tak přidělí číslo dle číselné řady požadavků), položky a poznámky uložené v MemoA, MemoB a MemoI. Pokud je vrácena hodnota true, tak je objednávka uložena do databáze. Může se ale stát, že se uloží objednávka s položkami, ale poznámky se nepodaří uložit (podrobnosti je v tomto případě možné zjistit z pole LastError). Pokud je vrácena hodnota false, tak se objednávku nepovedlo uložit (a není uložena ani hlavička, ani položky). Ukládat lze jen nové objednávky nebo objednávky, které byly kompletně načteny včetně položek.
 
|}
 
|}
 +
 +
Viz příklad [[Příklady PASCAL]]
 +
 +
===Objekt TKAPOrderItem ===
 +
 +
TKAPOrderItem = class
 +
    constructor Create;  {objekt není možné přímo vytvářet - k objektu se lze dostat pomocí TKAPOrder.Items[Index] }
 +
    property ProductCode: string; {Kód zboží}
 +
    property Quantity: Double; {Počet MJ}
 +
    property Price: Double; {Cena za MJ bez DPH}
 +
    property PriceFC: Double; {Cena v cizí měně - jen u objednávek v cizí měně}
 +
    property QuantityPkg: Double; {Počet balení pro vázané obaly}
 +
    property Comment: string; {Identifikace nebo komentář}
 +
    property PASIdPol: longint; {Externí číslo položky}
 +
    property PPrice: Double; {Jen pro čtení - akt.nákupní cena v době objednání}
 +
    property Flags: word; {jen pro čtení - příznaky položky}
 +
  end;

Aktuální verze z 21. 5. 2015, 23:28

Pomocí objektu TKAPOrder lze ve skriptovacím programovacím jazyku pracovat s požadavky (čili objednávkami zákazníků). Objekt je dostupný pouze ve skladovém programu. Při vytvoření nové instance objektu se otevřou tabulky SKLADKAR, SKLADZAS a MEMO a pomocí těchto tabulek pak program zjišťuje požadované informace. Doporučujeme proto nevytvářet současně mnoho instancí třídy TKAPOrder a v případě, že se objekty již nevyužívají, tak je uvolnit.

Objekt TKAPOrder

TKAPOrder = class
   property Sklad: word;
   property Prijem: Boolean;
   property CisloObjednavky: longint;
   property Pozadovano: TDateTime;
   property Zalozeno: TDateTime;
   property Podnik: byte;
   property Jmeno: String;
   property Jmeno2: String;
   property Ulice: String;
   property Mesto: String;
   property Telefon: String;
   property PSC: String;
   property ICO: String;
   property DIC: String;
   property Radek1: String;
   property Radek2: String;
   property Osoba: String;
   property Uhrada: byte;
   property Prevedeno: byte;
   property Doprava: byte;
   property Zakazka: String;
   property Vystavil: String;
   property CelkemBezDPH: Double;
   property CelkemSDPH: Double;
   property ProcVykrKc: Double;
   property ProcVykrytiMj: Double;
   property Sleva: Double;
   property MaxDatumDodani: TDateTime;
   property PocetPalet: Double;
   property CelkHmotnost: Double;
   property ExtCisloObj: String;
   property CasDodani: String;
   property TypDokladuSkl: byte;
   property PASIdObj: longint;
   property IndivCena: String;
   property PocetTisku: byte;
   property PocetOprav: byte;
   property Priznaky: byte;
   property Mena: String;
   property Kurz: Double;
   property Priznaky2: byte;
   property Priznaky3: byte;
   property MemoA: TStringList;
   property MemoB: TStringList;
   property MemoI: TStringList;
   property LastError: String;  {obsahuje popis poslední nahlášené chyby}
   property RaiseExcept: Boolean; {true=při výskytu chyby se vyvolá výjimka; false=chyby se zapisují jen do LastError (výchozí) }
   property UpdatePrices: Boolean; {povoluje nebo zakazuje automatickou aktualizaci cen přidávaných pomocí AddorderItem}
   property AutoNumber: Boolean; {povoluje nebo zakazuje automatické číslování objednávky}
   property Items(Index: integer): TKAPOrderItem;
   constructor Create(UpdatePrices: Boolean);
   destructor Destroy;
   procedure InitNewOrder;
   procedure ClearLastError;
   function SetCustomer(ICO: String): Boolean;
   function LoadOrderHeaderFromDataset(Dataset: TDataset): Boolean;
   function LoadOrderItemsFromDataset(Dataset: TDataset; var ChybaNaRadku: longint): Boolean;
   procedure ClearItems;
   procedure DeleteItem(Index: integer);
   function ItemsCount: integer;
   function AddOrderItem(Kod: String; Pocet, PocetBal: Double; AutoPocetBal: Boolean; Cena: Double; Identifikace: String): Boolean;
   function LoadOrderByOrderNo(Sklad: word; Prijem: Boolean; CisloObjednavky: longint; LoadItems: Boolean): Boolean;
   function LoadOrderByGUID(GUID: AnsiString; LoadItems: Boolean): Boolean;
   function LoadOrderByID91(ID91: AnsiString; LoadItems: Boolean): Boolean;
   function SaveOrder: Boolean;
   function LogText(TextValue, TextDescription, ItemName : AnsiString): Boolean;
end;
Funkce Popis
constructor Create(UpdatePrices: Boolean) Parametr UpdatePrices určuje, zda mají být ceny v objednávce počítány automaticky se zohledněním individuálních cen odběratele nebo budou určeny skriptem při přidávání jednotlivých položek. Vytvořené objekty nezapomeňte uvolnit pomocí metody Free.
procedure InitNewOrder Reinicializuje objekt pro zpracování nové objednávky (tj. vynuluje se objednávka, smažou se položky i poznámky k objednávce). Tato metoda se volá automaticky v rámci vytvoření objektu TKAPOrder.
procedure ClearLastError Vynuluje informaci poslední detekované chybě.
function SetCustomer(ICO: String): Boolean Podle údaje IČO dohledá zákazníka a naplní hlavičku objednávky podle fakturačního místa z adresy. Pokud odběratel není nalezen, tak je odběratel v objednávce vynulován. Podle zákazníka jsou určeny i individuální ceny pro případ automatické aktualizace cen. Funkce vrací true, pokud je zákazník nalezen.
function LoadOrderHeaderFromDataset(Dataset: TDataset): Boolean Funkce načte z tabulky určené parametrem Dataset hlavičku objednávky. Struktura vstupní tabulky (jména polí) musí odpovídat struktuře tabulky SkladOBJ ze skladového programu. Pokud tabulka obsahuje pole MEMOA nebo MEMOB, tak jsou informace z tohoto pole přeneseny do vlastností MemoA, popř. MemoB (typu StringList). Pole EMAIL, RESPPERSON, PHONE, GUID, FAX, MOBILE, CONTACTEMAIL, SENDINFO jsou uložena ve formátu JménoPole=Hodnota do údaje MemoI. Pokud je ve vstupní tabulce definováno pole Mena a toto pole obsahuje cizí měnu, tak je automaticky dohledán v kurzovém lístku kurz a nastaví se příznaky pro používání cizí měny. Při přidávání položek jsou pak ceny uváděny v cizí měně.
function LoadOrderItemsFromDataset(Dataset: TDataset; var ErrorOnRow: longint): Boolean Funkce načte z tabulky určené parametrem Dataset položky objednávky. Jména polí mohou být následující: Autokod nebo GUID (nepovinné jednoznačné označení záznamu), Kod nebo ProductCode (kód zboží z tabulky skladových karet), Pocet nebo Quantity (objednaný počet MJ), BaleniX nebo QuantityP (objednaný počet balení - důležité pro výpočet vázaných obalů; pokud pole není definováno, tak se počet balení určí automaticky), Cena nebo Price (cena bez DPH za MJ; pokud je nastavena automatická aktualizace cen, tak se toto pole ignoruje), Identifik nebo Comment (nepovinné pole, max. 30 znakový komentář k položce). Pokud některá položka objednávky nejde importovat, tak je do údaje ErrorOnRow uloženo pořadové číslo řádku, kde nastala chyba (od 1). Předchozí řádky zůstávají načteny.
procedure ClearItems Tato procedura vymaže seznam položek objednávky.
procedure DeleteItem(Index: integer) Tato procedura vymaže jednu položku objednávky (číslováno od 0).
function ItemsCount: integer Funkce vrací počet položek objednávky.
property Items[Index: integer]: TKAPOrderItem Funkce vrací objekt typu TKAPOrderItem umožňující číst a měnit hodnoty jedné položky objednávky.
function AddOrderItem(Kod: String; Pocet, PocetBal: Double; AutoPocetBal: Boolean; Cena: Double; Identifikace: String): Boolean Funkce přidá jednu položku objednávky. Karta určená kódem zboží musí existovat v seznamu skladových karet, počet musí být nenulový. Pokud je nastavena automatická aktualizace cen, tak se parametr Cena ignoruje a cena je určena automaticky programem se zohledněním individuální ceny odběratele. Pokud je parametr AutoPocetBal nastaven na true, tak se parametr PocetBal ignouje a počet balení je určen automaticky.
function LoadOrderByOrderNo(Sklad: word; Prijem: Boolean; CisloObjednavky: longint; LoadItems: Boolean): Boolean Funkce načte z databáze objednávku určenou číslem skladu a číslem objednávky. Parametr Prijem nastavte na false (čili požadavky); Pokud údaj Sklad bude mít hodnotu 0, tak se použije aktuální číslo skladu. Parametr LoadItems určuje, zda načtou i položky objednávky. Funkce vrací true, pokud je objednávka nalezena a načtena.
function LoadOrderByGUID(GUID: AnsiString; LoadItems: Boolean): Boolean Funkce dohledá GUID a pokud je nalezen, tak načte odpovídající objednávku. GUID se ukládá jen pro externí objednávky a je uložen ve formě textu GUID=hodnota v tabulce MEMO ve vazbě na danou objednávku. Pro použití této funkce je nutné mít aktuální (rozšířenou) verzi indexů pro tabulku MEMO.
function LoadOrderByID91(ID91: AnsiString; LoadItems: Boolean): Boolean Funkce dohledá a načte objednávku podle identifikačního řetězce znaků (obvykle zjištěného za pomocí čtečky čárových kódů).
function LogText(TextValue, TextDescription, ItemName : AnsiString): Boolean Funkce uloží textovou informaci do LOG souboru - ve vazbě na zpracovávanou objednávku. Záznam lze uložit pouze pro objednávky, které již byly uloženy nebo které byly načteny z databáze. TextValue má max. 80 znaků, TextDescription má 30 znaků a ItemName max.10 znaků - pokud není vyplněno, automaticky se nastaví na LOG)
function SaveOrder: Boolean Funkce uloží hlavičku objednávky (pokud je AutoNumber=true, tak přidělí číslo dle číselné řady požadavků), položky a poznámky uložené v MemoA, MemoB a MemoI. Pokud je vrácena hodnota true, tak je objednávka uložena do databáze. Může se ale stát, že se uloží objednávka s položkami, ale poznámky se nepodaří uložit (podrobnosti je v tomto případě možné zjistit z pole LastError). Pokud je vrácena hodnota false, tak se objednávku nepovedlo uložit (a není uložena ani hlavička, ani položky). Ukládat lze jen nové objednávky nebo objednávky, které byly kompletně načteny včetně položek.

Viz příklad Příklady PASCAL

Objekt TKAPOrderItem

TKAPOrderItem = class
   constructor Create;   {objekt není možné přímo vytvářet - k objektu se lze dostat pomocí TKAPOrder.Items[Index] }
   property ProductCode: string; {Kód zboží}
   property Quantity: Double; {Počet MJ}
   property Price: Double; {Cena za MJ bez DPH}
   property PriceFC: Double; {Cena v cizí měně - jen u objednávek v cizí měně}
   property QuantityPkg: Double; {Počet balení pro vázané obaly}
   property Comment: string; {Identifikace nebo komentář}
   property PASIdPol: longint; {Externí číslo položky}
   property PPrice: Double; {Jen pro čtení - akt.nákupní cena v době objednání}
   property Flags: word; {jen pro čtení - příznaky položky}
 end;