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
}
}