Informacje podstawowe
Skrypty C# zostały wykorzystane w kontrolkach typu Własna akcja i Komunikat. Skrypt dla kontrolki typu własna akcja utworzono na podstawie wzorca API XL
Wzorzec API XL dostępny jest na indywidualnych stronach dla Partnerów w obszarze Comarch DMS\Przykłady\ERP XL: Wzorzec API XL
Konfiguracja typu obiegu
Przykład pokazuje, w jaki sposób administrator Comarch DMS może skonfigurować definicję obiegu, aby zatwierdzić dokument „Faktura zakupu” w systemie Comarch RP XL z poziomu Comarch DMS. W tym celu należy:
1. dodać nowy typ obiegu w ramach zakladki

4. W ramach zakładki „Schemat obiegu” utworzyć etap początkowy „Zatwierdzanie dokumentu” i etap końcowy „Koniec” oraz dodać uprawnienie dla danego administratora do etapów.

A Kontrolka typu Dokument elektroniczny – „Faktura zakupu” (identyfikator: FakturaZakupu) – w polu „Typ” należy wybrać „Faktura zakupu”

B kontrolka typu Własna akcja – „Zatwierdź dokument” (identyfikator: ZatwierdzDokument) – w ramach definicji kontrolki należy kliknąć w link „Ustaw” w polu „C# Script”, następnie w otwartym oknie „Skrypt C#” w polu „Miejsce wykonania skryptu” wybrać „Proces (exe)” (jeśli istnieje opcja wyboru) i wprowadzić następujący kod:
using System.Threading;
using System.Runtime.InteropServices;
using cdn_api;
static ThreadLocal<bool> threadToClarionAttached = new ThreadLocal<bool>(() => false);
[DllImport("ClaRUN.dll")]
private static extern void AttachThreadToClarion(int flag);
public void AttachThreadToClarion()
{
try
{
if (!threadToClarionAttached.Value)
{
AttachThreadToClarion(1); // C8
threadToClarionAttached.Value = true;
}
}
catch (DllNotFoundException ex)
{
// -----------------------------------------------------------------
// Tu przekaż informacje o statusie działania skryptu
// -----------------------------------------------------------------
//Globals.MainFrame.ZatwierdzDokument_CSSCRIPT.Text = ex.Message;
Globals.MainFrame.ZatwierdzDokument_CSSCRIPT.Text=ex.Message;
}
}
AttachThreadToClarion();
int _lSesjaID = 0;
string blad = "";
try
{
int documentId = 0;
int wersjaApi = odpowiedniawersjaapi;
var loginInfo = new XLLoginInfo_odpowiedniawersjaapi()
{
Wersja = odpowiedniawersjaapi,
ProgramID = "Comarch DMS",
Winieta = -1,
TrybWsadowy = 1,
Baza = "nazwafirmy",
OpeIdent = "Login",
OpeHaslo = "hasło",
SerwerKlucza = @"serwerklucza"
};
var XLLoginResult = cdn_api.cdn_api.XLLogin(loginInfo, ref _lSesjaID);
if (XLLoginResult != 0)
{
blad = "Funkcja XLLogin zwróciła bład nr: " + XLLoginResult;
throw new Exception();
}
// -----------------------------------------------------------------
// Tu dodaj kod obsługi API
var otworzDocumentInfo = new XLOtwarcieNagInfo_odpowiedniawersjaapi
{
Wersja = odpowiedniawersjaapi,
GIDTyp = 1521,
GIDNumer = Globals.MainFrame.FakturaZakupu.Id ?? 0,
Tryb = 2
};
var XLOtwarcieInfoResult = cdn_api.cdn_api.XLOtworzDokument(_lSesjaID, ref documentId, otworzDocumentInfo);
if (XLOtwarcieInfoResult != 0)
{
blad = "Funkcja XLOtworzDokument zwróciła bład nr: " + XLOtwarcieInfoResult;
throw new Exception();
}
var zamkniecieDokumentuInfo = new XLZamkniecieDokumentuInfo_odpowiedniawersjaapi
{
Wersja = odpowiedniawersjaapi,
Tryb = 0
};
var XLZamknijDokumentResult = cdn_api.cdn_api.XLZamknijDokument(documentId, zamkniecieDokumentuInfo);
if (XLZamknijDokumentResult != 0)
{
blad = "Funkcja XLZamknijDokument zwróciła bład nr: " + XLZamknijDokumentResult;
throw new Exception();
}
// -----------------------------------------------------------------
}
catch (Exception ex)
{
if (blad == "")
blad = "Nieokreślony błąd: " + ex.Message;
}
finally
{
var XLLogoutResult = cdn_api.cdn_api.XLLogout(_lSesjaID);
if (XLLogoutResult != 0)
{
blad = "Funkcja XLLogout zwróciła bład nr: " + XLLogoutResult;
}
// -----------------------------------------------------------------
// Tu przekaż informacje o statusie działania skryptu
// -----------------------------------------------------------------
//Globals.MainFrame.ZatwierdzDokument_CSSCRIPT.Text = blad;
if (blad == "")
Globals.MainFrame.ZatwierdzDokument_CSSCRIPT.Text = "Operacja zakończona sukcesem";
else
Globals.MainFrame.ZatwierdzDokument_CSSCRIPT.Text = blad;
}
gdzie należy zmienić następujące wartości:
odpowiedniawersjaapi – wersja API ERP XL zgodna z wersją pliku cdn_api[wersja].net.dll
nazwafirmy – nazwa Firmy Comarch ERP XL (nazwę firmy można sprawdzić w managerze baz Comarch ERP XL)
Login – login operatora Comarch ERP XL
hasło – hasło operatora Comarch ERP XL
serwerklucza – serwer klucza licencji
Następnie należy kliknąć w przycisk
[Referencje], znajdujący się w prawym górnym rogu okna „Skrypt C#”, w wpisać tam nazwę odpowiedniego pliku dll:
cdn_api[odpowiedni numer wersji].net.dll
Następnie należy nacisnąć przycisk
[Zapisz].

Po wprowadzeniu kodu do edytora i nazwy dll w oknie „Referencje” należy nacisnąć przycisk
[Kompiluj i zapisz], a następnie, gdy w dolnej części okna zostanie wyświetlony napis „Kompilacja skryptu zakończyła się sukcesem” nacisnąć przycisk „Zamknij”.

C Kontrolka typu Komunikat – należy w ramach pola:
-
- „Nazwa (identyfikator)” wprowadzić nazwę „Message1”
- „Tytuł” wprowadzić tekst „Status działania API ERP XL”
- „Kontrolki powiązane” kliknąć w link „Dodaj” i wybrać kontrolkę „Zatwierdź dokument”
- „Wzór na wartość” wybrać wartość „C# Script”, kliknąć „Ustaw”, a następnie wprowadzić następujący kod:
Globals.MainFrame.Message1.Message = Globals.MainFrame.ZatwierdzDokument_CSSCRIPT.Text
Po wprowadzeniu kodu należy nacisnąć przycisk
[Kompiluj i zapisz], a następnie, gdy w dolnej części okna zostanie wyświetlony napis „Kompilacja skryptu zakończyła się sukcesem” nacisnąć przycisk „Zamknij”.


6. zapisać typ obiegu za pomocą przycisku

Zatwierdzanie dokumentu FZ w Comarch ERP XL – jak działa
Po zdefiniowaniu typu obiegu operator przechodzi na zakładkę
[Dokumenty], klika na typ obiegu „Zatwierdzanie faktury zakupu” i naciska przycisk
[Dodaj]. Następnie kolejno:



Jeśli operator w kontrolce „Faktura zakupu” wybierze dokument, który już został zatwierdzony w Comarch ERP XL, i kliknie przycisk „Zatwierdź dokument”, wówczas zostaje wyświetlony następujący komunikat:





