Platforma StudioSystem oferuje szereg funkcji, które czynią ją idealnym wyborem do tworzenia oprogramowania. Dzięki zintegrowanemu środowisku programistycznemu programiści mogą tworzyć aplikacje w ułamku czasu, jaki zajęłoby to tradycyjnymi metodami. Platforma udostępnia również bibliotekę gotowych komponentów, których można użyć do dostosowania lub rozszerzenia istniejących funkcji. Eliminuje to konieczność wykonywania oddzielnych zadań związanych z kodowaniem lub debugowaniem, umożliwiając programistom skupienie się na tworzeniu unikalnych aplikacji.
W poprzednich artykułach opisałem metodę wykorzystania transakcji j_insert_update.aspx do przygotowania formularza dopisywania pozycji dokumentu. Poniższy artykuł jest kontynuacją i opisuje zmiany w projektowaniu formularza pozwalające na zatwierdzenie dokumentu.
W poprzednim artykule opisałem jak stworzyć formularz taki jak ten:
Łatwo zauważyć, że możemy dane do bazy dodawać, ale brakuje przycisku ZAPISZ, który zapisze dane jako dokument zatwierdzony (zapisze ACH=1 i nada kolejny numer dokumentu).
KROK 1
Zmieniamy funkcje SsOnReady w której wskazujemy że po kliknięciu przez użytkownika na przycisk ZAPISZ ma wykonać się nowa funkcja o nazwie ZapiszDokument()
function SsOnReady() { $("#ctl00_ContentPlaceHolder1_ButtonZapisz").attr("onclick", "return ZapiszDokument();"); $("#ctl00_ContentPlaceHolder1_ButtonZapisz").hide(); }
oraz ukrywamy przycisk, aby był on niedostępny dla użytkownika do momentu dodania pierwszej pozycji dokumentu.
Krok 2
W funkcji wykonywanej po dodaniu pozycji dodaję polecenie
$("#ctl00_ContentPlaceHolder1_ButtonZapisz").show();
które pokaże przycisk zapisania dokumentu, tak aby użytkownik mógł dokument zatwierdzić.
function DodajSucceeded(wynik) { if (wynik != "") { PokazAlert("Komunikat", wynik, 220, 400); return; } $("#UWAGI").val(''); $("#ILOSC").jqxNumberInput('setDecimal', 1); UstawDphanTable('TABELA'); JqxResetValue("NRIDASN"); $("#NRIDASN").jqxComboBox('focus'); $("#ctl00_ContentPlaceHolder1_ButtonZapisz").show(); }
KROK 3
Dodajemy funkcje ZapiszDokument(), która wykona zapis dokumentu
function ZapiszDokument() { cTablica = new Array(); var cLicznik = 0; $('[ssupdate]').each(function (index) { cTablica[cLicznik] = new cListaKontrolek($(this)); cLicznik++; }) PageMethods.UpdateData('dphan', cTablica, '1', 'NRDOKUMENTU=ZAM#RRRR-#MM-#XXXXX#TYP', 'refno=' + gcRefno + " AND ACH='0'", 'softwarestudioConnectionString', ThisOnSucceeded, OnFailed); return false; }
Funkcja pobiera dane z kontrolek oznaczonych za pomocą znacznika ssupdate i uruchamia metodę UpdateData. Parametry metody:
- nazwa tabeli w bazie SQL w której chcemy zaktualizować dane np. ‘dphan’
- Tablica z danymi z kontrolek oznaczonych jako ssupdate (patrz opis poniżej)
- znacznik ACH , standardowo zatwierdzony dokument nadajemy wartość 1,
- parametr wskazujący na nazwę kolumny oraz format numeru dokumentu. Jeżeli wartość parametru jest pusta to numer nie będzie nadawany. W powyższym przykładzie chcę aby numer został zapisany w kolumnie NRDOKUMENTU, a jego typ to ZAM (pierwsze 3 znaki po znaku =), kolejne znaki to sposób formatowania numeru dokumentu, np. 2015-01-00005ZAM ponieważ format to RRRR-MM-XXXXX-TYP
- warunek filtrowania wierszy które mają być aktualizowane, zwykle aktualizujemy wiersze dotyczące danego dokumentu, a więc refno, gdzie zmienna gcRefno zawiera numer referencyjny podawany przy uruchomieniu transakcji w parametrze refno
- parametr wskazujący na nazwę połączenia z bazą danych SQL, domyślnie program używa połączenia o nazwie: softwarestudioConnectionString
- Nazwa funkcji jaka ma być uruchomiona, gdy zapis zakończy się powodzeniem, np. ThisOnSucceeded
- Nazwa funkcji jaka ma być uruchomiona, gdyby wystąpił błąd zapisu, zwykle korzystamy ze standardowej: OnFailed
Zapis danych przy zatwierdzaniu
Zatwierdzając dokument możemy zdecydować, aby dane ze wskazanych kontrolek zostały pobrane i aktualizowały rekordy dokumentu. Do tego celu używam znacznika ssupdate=1, który umieszczam w kolumnie parametry dla wybranych kontrolek:
Rozwiązania zapewnia, że pozycje będą miały przypisaną wartość przy zatwierdzeniu, nawet jeżeli użytkownik dane na zakładce nagłówek uzupełnił na końcu. Ustawiłem je dla kontrolek miejsce dostawy (NRIDCRM), termin dostawy (TERMIN) i opis (UWAGI). Pola te zostaną zaktualizowane przy zatwierdzaniu dokumentu.
Podsumowanie
Za pomocą własnego skryptu można wykreować formularz dopisywania wielopozycyjnych dokumentów wraz z zatwierdzaniem i nadawaniem numeru dokumentu. Można tworzyć logikę biznesową wykorzystując JQuery i zapytani do bazy SQL.
Poniżej cały kod pliku crm_dphan.js jaki wykorzystałem do obsługi opisywanej transakcji rejestrowania zamówienia.
function SsOnLoad() { $('#BTN_DODAJ').html("<span id='btnDodaj' onclick='return btnDodaj()' class='art-button art-buttonBlue' style='width: 200px; '>Dodaj</span>"); UstawDphanTable('TABELA'); $('#captionTABELA').css('width', '10px'); }
function SsOnReady() { $("#ctl00_ContentPlaceHolder1_ButtonZapisz").attr("onclick", "return ZapiszDokument();"); $("#ctl00_ContentPlaceHolder1_ButtonZapisz").hide(); }
function btnDodaj() { // kontrola wymagalnych pól if (!TestWypelnienia()) { return false; } // ustaw kontrahenta jako nieedytowalny $("#NRIDODN").jqxComboBox({ disabled: true });
cTablica = new Array(); var cLicznik = 0; $('[ssPostBack]').each(function (index) { cTablica[cLicznik] = new cListaKontrolek($(this)); cLicznik++; })
PageMethods.SendForm(cTablica, '0', DodajSucceeded, OnFailed);
return false; }
function DodajSucceeded(wynik) { if (wynik != "") { PokazAlert("Komunikat", wynik, 220, 400); return; } $("#UWAGI").val(''); $("#ILOSC").jqxNumberInput('setDecimal', 1); UstawDphanTable('TABELA'); JqxResetValue("NRIDASN"); $("#NRIDASN").jqxComboBox('focus'); $("#ctl00_ContentPlaceHolder1_ButtonZapisz").show(); }
function UstawDphanTable(cKontrolka) { var idGrid = 'grid' + cKontrolka; $('#' + cKontrolka).html("<div id='" + idGrid + "' ></div>"); var cZrodlo = PobierzDataTable("UPPER(ID_DPHAN) AS ID_DPHAN, knaso.INDEKS, knaso.NAZWAAS, dphan.UWAGIPOZ, dphan.ILOSC FROM dphan INNER JOIN knaso ON dphan.NRIDASN = knaso.NRIDASN WHERE dphan.REFNO = " + gcRefno);
var source = { datatype: "json", datafields: [ { name: 'INDEKS', type: 'string' }, { name: 'NAZWAAS', type: 'string' }, { name: 'UWAGIPOZ', type: 'string' }, { name: 'ILOSC', type: 'string' } ], localdata: cZrodlo, id: 'ID_DPHAN' }; var dataAdapter = new $.jqx.dataAdapter(source);
$("#" + idGrid).jqxGrid( { theme: 'energyblue', height: '250px', width: '1000px', source: dataAdapter, altrows: true, columns: [ { text: 'Indeks', datafield: 'INDEKS', width: 200 }, { text: 'Nazwa', datafield: 'NAZWAAS', width: 300 }, { text: 'Ilość', datafield: 'ILOSC', width: 80, cellsalign: 'right', cellsformat: 'n' }, { text: 'Uwagi', datafield: 'UWAGIPOZ', width: 300 } ] });
JqxFormatujGrid('#' + idGrid);
}
function ZapiszDokument() { cTablica = new Array(); var cLicznik = 0; $('[ssupdate]').each(function (index) { cTablica[cLicznik] = new cListaKontrolek($(this)); cLicznik++; }) PageMethods.UpdateData('dphan', cTablica, '1', 'NRDOKUMENTU=ZAM#RRRR-#MM-#XXXXX#TYP', 'refno=' + gcRefno + " AND ACH='0'", 'softwarestudioConnectionString', ThisOnSucceeded, OnFailed); return false; }
Czytaj więcej:
j_insert_update – zaawansowane programowanie – zmiana funkcji przycisków
W dzisiejszej erze cyfrowej możliwość łatwego manipulowania obiektami w formularzu lub oknie może otworzyć przed programistami cały świat możliwości. Dzięki platformie StudioSystem programiści mają dostęp do potężnego zestawu narzędzi, dzięki którym manipulowanie obiektami na formularzu jest proste i intuicyjne.
j_insert_update – zaawansowane programowanie – pozycje dokumentu
StudioSystem oferuje szereg funkcji, które czynią go zarówno wszechstronnym, jak i przyjaznym dla użytkownika. Platforma pomaga użytkownikom tworzyć oszałamiające efekty wizualne, animacje, modele 3D i dźwięk za pomocą zintegrowanego zestawu narzędzi. Oferuje również obszerną bibliotekę wbudowanych narzędzi i wtyczek, a także interfejs API, który umożliwia użytkownikom tworzenie własnych narzędzi. Wreszcie, jego modułowa architektura oznacza, że
j_insert_update – zaawansowane programowanie – przykład 1
Platforma StudioSystem to kompleksowe rozwiązanie do tworzenia i zarządzania zaawansowanymi formularzami, szablonami i dokumentami. Oferuje szeroki zakres możliwości, umożliwiając użytkownikom łatwe tworzenie i zarządzanie dokumentami, szybki dostęp do informacji i ich aktualizację oraz zapewnia potężny mechanizm przepływu pracy do automatycznego przetwarzania i przesyłania formularzy.
j_insert_update – zaawansowane programowanie – pozycje dokumentu cz. II
Zaawansowane języki programowania, takie jak C# i Java, dają programistom możliwość tworzenia zaawansowanych aplikacji z szeroką gamą funkcji i możliwości. Te języki są potężne i umożliwiają tworzenie aplikacji, które mogą obsługiwać duże ilości danych i zapewniają solidne interfejsy użytkownika. Deweloperzy mogą również korzystać z zaawansowanych funkcji, takich jak programowanie obiektowe i wątkowanie, co pozwala na
j_insert_update – zaawansowane programowanie – przykład 3
Platforma StudioSystem oferuje szerokie możliwości zaawansowanego programowania formularzy. Dzięki swoim potężnym funkcjom może zapewnić użytkownikom możliwość tworzenia i dostosowywania formularzy do różnych celów.