Include KZLibrary ///

Projekt: KZIS ///

Author : M. Brousek ///

Created: 24.5.2010 ///

Group : Incoming, Data warehouse ///

Description: Třída datového skladu Odběratel ///

Datová třída datového skladu obsahuje všechny atributy dané entity tak, /// jak se importují ze zdrojového systému. /// Datové typy a rozsahy jednotlivých atributů tedy odpovídají definici příslušného rozhraní. ///

/// Zdrojový dokument viz: Popis rozhraní Class KZIS.Data.DS.Customer Extends %Persistent { /// Instance transakce, v jejímž rámci byl daný záznam importován Property Transaction As KZIS.Data.TS.MWTransaction; /// Jednoznačné ID záznamu v systému SAP. ///

Hodnota je totožná s hodnotou atributu Number. /// Skutečným unikátním klíčem v rámci celé třídy je pak kombinace [Transaction, Number] Property ObjID As %String; /// Číslo odběratele Property Number As %String(MAXLEN = 10); /// Název odběratele Property Name As %String(MAXLEN = 140); /// Stát Property State As %String(MAXLEN = 3); /// Město Property City As %String(MAXLEN = 40); /// Ulice Property Street As %String(MAXLEN = 60); /// Číslo popisné Property HouseNo As %String(MAXLEN = 10); /// PSČ Property ZipCode As %String(MAXLEN = 10); /// IČO Property ICO As %String(MAXLEN = 11); /// DIČ Property DIC As %String(MAXLEN = 16); /// Primární bankovní účet Property BankAccount As %String(MAXLEN = 50); /// Kód banky Property BankCode As %String(MAXLEN = 4); /// Příznak platného záznamu Property Active As %Boolean; /// Výběr ID všech záznamů pořízených v transakci pTransID Query qGetIDsByTransaction(pTransID As %String) As %SQLQuery(CONTAINID = 1) { SELECT ID FROM KZIS_Data_DS.Customer WHERE "Transaction"->ID = :pTransID } /// Vrátí seznam ID všech záznamů pořízených v transakci pTransID /// Pokud není parametr pTransID, vrátí se seznam ID všech záznamů, pořízených při poslední úspěšně dokončené transakci. ClassMethod GetIDsByTransaction(pTransID As %String) As %ResultSet { if ($DATA(pTransID) '= 1) || (pTransID = "") set pTransID = ##class(KZIS.Data.TS.SAP.tkCustomersIN).GetLastFinishedTransactionID() set tRS = ##class(%ResultSet).%New("KZIS.Data.DS.Customer:qGetIDsByTransaction") if 'tRS.QueryIsValid() { throw $$$KZISError("DS.Customer:GetIDsByTransaction", "Query is not valid") } set tSC = tRS.Execute(pTransID) if $$$ISERR(tSC) { throw $$$KZISError("DS.Customer:GetIDsByTransaction", "Error executing query") } q tRS } /// Vrátí ID instance podle čísla odběratele zadaného v parametru pNumber /// TransID - id transakce pro níž je daný datový záznam požadován. Pokud není zadáno /// hledá se příslušný záznam v záznamech poslední platné transakce. ClassMethod GetIDByNumber(pNumber As %String, TransID As %String) As %String { q:(($DATA(pNumber) '= 1) || (pNumber = "")) "" if ($DATA(TransID) '= 1) || (TransID = "") set TransID = ##class(KZIS.Data.TS.SAP.tkCustomersIN).GetLastFinishedTransactionID() &sql(SELECT TOP 1 ID INTO :tID FROM KZIS_Data_DS.Customer WHERE ("Transaction"->ID = :TransID) AND (Number = :pNumber)) q tID } /// Vrátí instanci třídy Customer podle čísla odběratele zadaného v parametru pNumber /// TransID - id transakce pro níž je daný datový záznam požadován. Pokud není zadáno /// hledá se příslušný záznam v záznamech poslední platné transakce. ClassMethod OpenByNumber(pNumber As %String, TransID As %String) As KZIS.Data.DS.Customer { if ($DATA(TransID) '= 1) || (TransID = "") set TransID = ##class(KZIS.Data.TS.SAP.tkCustomersIN).GetLastFinishedTransactionID() set tID = ##class(KZIS.Data.DS.Customer).GetIDByNumber(pNumber, TransID) q:(tID = "") "" q ##class(KZIS.Data.DS.Customer).%OpenId(tID) } /// Vrátí hodnotu True, pokud existuje instance třídy Customer pro číslo odběratele /// zadané v parametru pNumber. Daná instace se hledá v záznamech, pořízených v rámci transakce /// TransID. Pokud není tento parametr zadán, hledá se daná instance v záznamech poslední platné transakce. ClassMethod Exists(pNumber As %String, TransID As %String) As %Boolean { if ($DATA(TransID) '= 1) || (TransID = "") set TransID = ##class(KZIS.Data.TS.SAP.tkCustomersIN).GetLastFinishedTransactionID() q:(##class(KZIS.Data.DS.Customer).GetIDByNumber(pNumber, TransID) = "") 0 q 1 } /// Převede hodnoty všech atributů na řetězec. Hodnoty jednotlivých atributů jsou odděleny středníkem. Method ToString() As %String { q ..%Id()_": "_..ObjID_";"_..Number_";"_..Name_";"_..State_";"_..City_";"_..Street_";"_ ..HouseNo_";"_..ZipCode_";"_..ICO_";"_..DIC_";"_..BankAccount_";"_..BankCode_";"_..Active } }