Duża Hydra - podpiąć się pod zatwierdzanie FZ

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

john_doe
Posty: 649
Rejestracja: 26 maja 2008, 22:15
Rola: Inny

Duża Hydra - podpiąć się pod zatwierdzanie FZ

Post autor: john_doe »

Hej, jak w temacie. Czy ktoś z Was mógłby wrzucić kawałkiem przykładowego kodu callbacka który robi coś na zatwierdzanie dokumentu?

Swiety_M
Posty: 381
Rejestracja: 19 lip 2012, 13:05
Rola: Administrator CDN XL
Wersja: 8.0
Lokalizacja: Poznań, Września, Konin
Kontakt:

Re: Duża Hydra - podpiąć się pod zatwierdzanie FZ

Post autor: Swiety_M »

Hej,
Tu masz przykład, chwycenia zatwierdzenia dokumentu na ZS.

Kod: Zaznacz cały

using System;
using System.Collections.Generic;
using System.Text;
using Hydra;
using System.Drawing;
using System.Windows.Forms;
using System.Data;

using System.Threading;

[assembly: CallbackAssemblyDescription("ZabezpieczenieAdresyWysylkowe", "PodniesienieFormatkiZBlednymWysylkowym",
"MAREK", "0.43", "20163", "13-03-2018")]

namespace PIK_HydraHortexTabZS
{
    [SubscribeProcedure((Procedures)Procedures.ZaNZamEdycjaSpr, "HortexPromo")]

    public class Class1:Callback
    {
        ClaWindow OknoGlowne;
        ClaWindow HortexTab;
        ClaWindow HortexGroup;
        ClaWindow SaveButton;
        ClaWindow Parent;
        ClaWindow KodTowTXT;
        ClaWindow LabelTXT;
        ClaWindow UpdateButton;
        ClaWindow LabelGratis;

        ClaWindow IloscTXT;
        ClaWindow IloscLabel;

        MSSQL sql = new MSSQL();

        int Saved = 0;

        public override void Init()
        {
            AddSubscription(true, 0, Events.OpenWindow, new TakeEventDelegate(OnOpenWindow));
            AddSubscription(true, 0, Events.CloseWindow, new TakeEventDelegate(OnCloseWindow));

            Saved = 0;
        }

        public void InitObjects()
        {
            Saved = 0;
            OknoGlowne = GetWindow();
            SaveButton = OknoGlowne.AllChildren["?Cli_Zapisz"];
            SaveButton.OnBeforeAccepted += new TakeEventDelegate(OnClickSaveButton);
        }

        bool OnClickSaveButton(Procedures ProcId, int ControlId, Events Event)
        {
            Saved = 1;
            return true;
        }

        bool OnOpenWindow(Procedures ProcId, int ControlId, Events Event)
        {
            InitObjects();
            OknoGlowne = GetWindow();
            Parent = GetWindow();

            HortexTab = OknoGlowne.AllChildren["?CurrentTab"].Children.Add(ControlTypes.tab);
            HortexTab.TextRaw = "Hortex Promocje";
            HortexTab.Bounds = new Rectangle();
            HortexTab.Enabled = true;
            HortexTab.Visible = true;

            HortexGroup = HortexTab.AllChildren.Add(ControlTypes.group);
            HortexGroup.Visible = true;
            HortexGroup.BoxedRaw = "1";
            HortexGroup.TextRaw = "Dodanie gratisu do zamówienia Hortex";
            HortexGroup.Bounds = new Rectangle(10, 30, 300, 70);

            KodTowTXT = HortexTab.AllChildren.Add(ControlTypes.text);
            KodTowTXT.Visible = true;
            KodTowTXT.TextRaw = "HT0840";
            KodTowTXT.ToolTipRaw = "Kod towaru na jaki zostanie wygenerowane wydanie gratisu";
            KodTowTXT.Bounds = new Rectangle(60, 50, 50, 10);

            LabelTXT = HortexTab.AllChildren.Add(ControlTypes.prompt);
            LabelTXT.Visible = true;
            LabelTXT.TextRaw = "Kod Gratisu:";
            LabelTXT.Bounds = new Rectangle(15, 50, 40, 10);

            IloscTXT = HortexTab.AllChildren.Add(ControlTypes.text);
            IloscTXT.Visible = true;
            IloscTXT.TextRaw = "12";
            IloscTXT.ToolTipRaw = "Ilosc towaru na jaki zostanie wygenerowane wydanie gratisu";
            IloscTXT.Bounds = new Rectangle(60, 70, 50, 10);

            IloscLabel = HortexTab.AllChildren.Add(ControlTypes.prompt);
            IloscLabel.Visible = true;
            IloscLabel.TextRaw = "Ilosc sztuk:";
            IloscLabel.Bounds = new Rectangle(15, 70, 40, 10);

            UpdateButton = HortexTab.Children.Add(ControlTypes.button);
            UpdateButton.Visible = true;
            UpdateButton.TextRaw = "Dodaj Gratis!";
            UpdateButton.Bounds = new Rectangle(150, 60, 100, 20);
            UpdateButton.OnAfterAccepted += new TakeEventDelegate(OnClick);

            LabelGratis = HortexTab.AllChildren.Add(ControlTypes.prompt);
            LabelGratis.Visible = true;
            LabelGratis.TextRaw = sql.Gratisy_GetWydanie(ZamNag.ZaN_GIDNumer);
           
            LabelGratis.Bounds = new Rectangle(15, 85, 250, 10);

              return true;
        }


        bool OnClick(Procedures ProcedureId, int ControlId, Events Event)
        {
            try
            {
                sql.SetStatusWydrukowany(ZamNag.ZaN_GIDNumer, KodTowTXT.TextRaw.ToString(), Convert.ToDecimal(IloscTXT.TextRaw));
                Runtime.WindowController.UnlockThread();
                MessageBox.Show("Dodano gratis do wygenerowania!", "Sukces");
                Runtime.WindowController.LockThread();
               
            }
            catch (Exception ex)
            {
                MessageBox.Show("Blad dodawania promocji hortex"+ ex.ToString(),"DUPA");
            }

            Runtime.WindowController.PostEvent(0, Events.FullRefresh);
            return true;
        }

        private static void ApiCleanupThread()
        {
              FormatkClass.AttachThreadToClarion(0);
        }

        bool OnCloseWindow(Procedures ProcId, int ControlId, Events Event)
        {
            if (Saved == 1)
            {
               

                DialogResult result;
                result= MessageBox.Show("ADRES DO WYSYŁKI: " + sql.WysylkowyGet(ZamNag.ZaN_AdWNumer), " SPRAWDŹ  POPRAWNOŚĆ  ADRESU DOSTAWY", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
                Runtime.WindowController.PostEvent(0, Events.FullRefresh);
                if (result == System.Windows.Forms.DialogResult.No)
                {
                    /*
                    ThreadStart ts = new ThreadStart(ApiCleanupThread);
                    Thread t = new Thread(ts);
                    t.Start();
                    */
                 

                    FormatkClass formatka = new FormatkClass(ZamNag.ZaN_GIDNumer);
                    formatka.Podnies();

                    int error = formatka.GetError();
                    MessageBox.Show(error.ToString());
                    Runtime.WindowController.PostEvent(0, Events.FullRefresh);
                    
                    
                }

                
            }

            return true;
        }

        bool OnAfterAccepted(Procedures ProcId, int ControlId, Events Event)
        {
            return true;
        }


        public override void Cleanup()
        {

        }

    }
}

Marek Michałowski
www.tecado.pl
ERP/WMS/SFA
POZNAŃ - WRZEŚNIA

elmiq
Posty: 1025
Rejestracja: 23 sie 2010, 10:04
Rola: Administrator CDN XL
Lokalizacja: Warszawa

Re: Duża Hydra - podpiąć się pod zatwierdzanie FZ

Post autor: elmiq »

Swiety_M pisze:
21 sie 2019, 15:54

Kod: Zaznacz cały

...
                MessageBox.Show("Blad dodawania promocji hortex"+ ex.ToString(),"DUPA");
...

Całkiem offtop, ale miło zobaczyć, że nie tylko ja jestem skrzywiony i na czas testów daje komunikaty ze słowem kluczowym DUPA, o których oczywiście potem zdarza mi się zapomnieć :)

Swoją drogą to łapiesz tutaj zatwierdzanie zamówienia? W kodzie do końca tego nie widzę, bo dodatek raczej działa na otwarcie/zamknięcie okna, gdzie w tym drugim przypadku warunkiem jest naciśnięcie "dyskietki".
Mateusz Świerkosz

http://elmiq.blogspot.com/

Swiety_M
Posty: 381
Rejestracja: 19 lip 2012, 13:05
Rola: Administrator CDN XL
Wersja: 8.0
Lokalizacja: Poznań, Września, Konin
Kontakt:

Re: Duża Hydra - podpiąć się pod zatwierdzanie FZ

Post autor: Swiety_M »

Hehe
zdarza się, potem user dzwoni z paniką, że coś mu wyskoczyło dziwnego.
Ale co wyskoczyło dokładnie?
No, DUPA :lol:
Marek Michałowski
www.tecado.pl
ERP/WMS/SFA
POZNAŃ - WRZEŚNIA

john_doe
Posty: 649
Rejestracja: 26 maja 2008, 22:15
Rola: Inny

Re: Duża Hydra - podpiąć się pod zatwierdzanie FZ

Post autor: john_doe »

@elmiq możesz też coś podrzucić?

john_doe
Posty: 649
Rejestracja: 26 maja 2008, 22:15
Rola: Inny

Re: Duża Hydra - podpiąć się pod zatwierdzanie FZ

Post autor: john_doe »

@Swiety_M też nie widzę tego w Twoim kodzie. Wydaje się, że nie ma czegoś takiego jak podpięcie się pod zatwierdzenie dokumentu.
Trzeba kombinować na zasadzie: otwieram okno, odczytuję kontrolkę bufor, jak klikam na dyskietkę lub zamykam okno odczytuję kontrolkę bufor. porównuje. Coś w tym stylu. Czy otwieram okno checkbox jest zapisuję i go nie ma to zatwierdziłem.

elmiq
Posty: 1025
Rejestracja: 23 sie 2010, 10:04
Rola: Administrator CDN XL
Lokalizacja: Warszawa

Re: Duża Hydra - podpiąć się pod zatwierdzanie FZ

Post autor: elmiq »

Nie ma akcji na potwierdzanie dokumentu, bo to nie jest bezpośrednio związane z zachowaniem kontrolki, tylko jest to jakieś wyspecjalizowane zdarzenie. Oczywiście możesz się podpiąć pod kontrolkę i sprawdzać czy jest zmieniana, możesz na wejściu odczytywać stan kontrolek i przy zapisie znowu go sprawdzać, ewentualnie patrzeć co znajduje się na propach w samym obiekcie dostępnym w zarejestrowanej w dodatku procedurze, czyli w tym przypadku ZamNag.

Pozdrawiam,
Mateusz
Mateusz Świerkosz

http://elmiq.blogspot.com/

ODPOWIEDZ