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 [Definicje obiegów dokumentów] 2. nadać nazwę typowi obiegu – np. Zatwierdzanie faktury zakupu i prefix – np. ZAT 3. nadać danemu administratorowi uprawnienie do inicjowania dokumentu na zakładce „Ustawienia obiegu” w sekcji „Uprawnienia do inicjowania dokumentu”.
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.
5. W ramach zakładki „Karta obiegu” dodać następujące kontrolki:
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)” 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 [Zapisz].
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:
1. zapisuje nowy dokument, naciskając [Zapisz] 2. dodaje dokument z Comarch ERP XL w ramach kontrolki „Faktura zakupu” 3. naciska przycisk „Zatwierdź dokument” – wówczas następuje zatwierdzanie dokumentu – poniżej przycisku widoczne są poruszające się punkty 4. Jeśli zatwierdzanie dokumentu zakończyło się powodzeniem, wówczas na środku ekranu wyświetlany jest następujący komunikat:
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: