Skocz do zawartości

Integracja sfera dla subiekt GT + c# dodanie nowego Zamówienia Klienta

Polecane posty

Proszę o pomoc w dostępie do subiekta z poziomu aplikacji c#. Mam zakupioną sferę do subiekta gt jednak przykładowy plik połączenia *.cs wywala błędy. Importuje do projektu gta64.dll. Potrzebuje dodawać zamówienia klienta z poziomu aplikacji wpf c#. Resztę potrzebnych informacji odczytuje bezpośrednio z bazy danych jednak dodawanie dokumentów chciałbym zrobić za pomocą sfery żeby nie zepsuć bazy danych ponieważ nie znam wszystkich zależności. Jeżeli nie uda się bezpośrednio połączyć z poziomu c# zostaje skrypt vba odpalić jako process. 

Potrzebuje dodać Zamówienie Klienta dla jednego magazynu i jednego typu towaru. Zmienny jest opis, 2 pola własne, ilość towaru, cena i data realizacji.

Link to postu

W skrócie

// podstawka

      InsERT.Subiekt uruchom_subiekta()
        {
            InsERT.GT gt = new InsERT.GT();
            gt.Produkt = InsERT.ProduktEnum.gtaProduktSubiekt;
            gt.Serwer = Konf.MsSql_Subiekt.IpPort;
            gt.Baza = Konf.MsSql_Subiekt.Baza;
            gt.Autentykacja = InsERT.AutentykacjaEnum.gtaAutentykacjaMieszana;
            gt.Uzytkownik = Konf.MsSql_Subiekt.Login;
            gt.UzytkownikHaslo = Konf.MsSql_Subiekt.Haslo;
            gt.Operator = Konf.Subiekt.Operator;
            gt.OperatorHaslo = Konf.Subiekt.OperatorHaslo;
            // Uruchomienie Subiekta GT
            InsERT.Subiekt subiekt = (InsERT.Subiekt)gt.Uruchom((Int32)InsERT.UruchomDopasujEnum.gtaUruchomDopasuj, (Int32)InsERT.UruchomEnum.gtaUruchomNieArchiwizujPrzyZamykaniu);
            subiekt.Okno.Widoczne = Konf.Subiekt.WidocznoscOkna; // true = subiekt widoczny - false=subiekt nie widoczny
            return subiekt;
        }

 

   InsERT.Subiekt subiekt = uruchom_subiekta();

 

    bool Istnieje = subiekt.Kontrahenci.Istnieje("JAKISSYMBOL");

// jak istnieje to go wczytujemy przy okazji możemy go edytować przed wstawieniem do zamówienia ale po edycji trzeba go najpierw zapisać i zamknąć


                InsERT.Kontrahent  DoKontrahenta = subiekt.KontrahenciManager.WczytajKontrahenta("JAKISSYMBOL");

// okreśłamy magazyn id    int - można to zrobić wyżej... ale przed tworzeniem zamówienia /faktury itp.

 subiekt.MagazynId =1;

 

// tworzymy obiekt zamówienia   przed dodaniem numeru zewnętrznego pasowało by sprawdzić czy czasem już nie istnieje jak nie istnieje to dodajemy nowe lub możemy wczytaj i edytować pod warunkiem ze możliwa  jest edycja. po wczytaniu zamówienia można wykonać w try catch np.  DokZamowienie.ZapiszSymulacja(); i odczytać błędy na podstawie których można stwierdzić że edycja jest nie możliwa jedna z prostych mołżiwości

 

 InsERT.SuDokument DokZamowienie =   subiekt.SuDokumentyManager.DodajZKzal();

DokZamowienie.NumerOryginalny = "jakis numer 1";

 

// wstawiamy kontrachenta  id to identyfikator z DoKontrahenta

  DokZamowienie.KontrahentId =  DoKontrahenta.Identyfikator;

 

//ponadto warto przetestować które wartości chcemy ustawiać ręcznie lub jak nie ustawimy ich to wstawią się domyślne.. takie jak np. kategoria dokumentu, waluta , rezerwacja, termin realizacji, itp..

 

 

// pasowało by też dodać listę towarów temat bardziej obszerny niż samo zamówienie moim zdaniem, najlepiej dodawać najpierw towary potem ustalać wartości i rabaty dla całego dokumentu jeśli mają być inne niż domyślne,  tutaj jest sporo zabawy aby osiągnąć jakiś bardziej skomplikowany efekt = np.  zgodność cen do grosza z innym systemem skąd pochodzą zamówienia

 

// aby zapisać zamówienie  lub wyświetlić dobre dla testów czy wstawiło to co chcemy  Wyswietl()

DokZamowienie.Zapisz();

 

// pola własne moim zdaniem najlepiej ustawiać po zapisie dokumentu wtedy jesteśmy w stanie też tymi samymi metodami aktualizować pola własne niezależnie od stanu realizacji dokumentu - jest jeden minus że jeśli w momencie dane zamówienie jest edytowane przez inną stacje roboczą a my zaktualizujemy pola własne to jak tamta stacja robocza da zapisz to może nadpisać naszą aktualizacje w polach własnych tutaj trzeba to dobrze rozważyć z której metody skorzystać

  subiekt.UstawPoleWlasne();

 

// można też ustawić flage za pomocą 

 subiekt.UstawFlageWlasna();

 

// ważne aspekty aby walidować wartości i ich długości dozwolone znaki przed ładowaniem do właściwości/metod bo mamy Exception-a ale nie zawsze i można się zawiesić na długie minuty/godziny w poszukiwaniu dlaczego cos nie działa... w celu szybkiego dojścia co gdzie i typy można warto zerkać na scheme bazy danych i dozwolone typy dla danych tabel/kolumn bardzo to p

 

To tak bardzo bardzo w skrócie i napisane na kolanie... ale pozwoli Ci zacząć cokolwiek znacznie szybciej niż mi

 

Link to postu
4 godziny temu, Damian Szynkarczyn napisał:

Dzięki ruszyło. Mam dołączone gta64.dll, tego com co daniel napisał. Dodatkowo brakowało adodb. Pobrałem z nuget i przykłady od Krzysztofa ruszyły. Dzieki! :)

Nie opisuje Pan tego co robi, ale prawdopodobnie coś Pan robi nie tak, adodb jest w systemie, nie trzeba go pobierać, powinno dodać się do referencji automatycznie po dodaniu biblioteki Sfery...

 

Dodam jeszcze (dla innych), że opisane rozwiązanie nie zadziała dla aplikacji korzystających z .NET < 4.0.

Link to postu
×
×
  • Dodaj nową pozycję...