UWAGA!!!!

Ta dokumentacja odnosi sie do "nowych" uzytkownikow z serii v0.8.x
Jesli chcesz uzywac v0.9.x jako nowy uzytkownik instalacja jest podobna
Jesli natomiast migrujesz z v0.8.x do 0.9.x KONIECZNIE przeczytaj wszystkie pliki README w pakiecie xdefactor-0.9.x.tar.gz!!!!

Jesli bedziesz mial jakies problemy, czy to z instalacja, czy tez uzytkowaniem pakietu po prostu wyslij do mnie mail z opisem problemu, spróbuje pomoc.Moj adres:
                                                                                                <armadillo (at) wp pl >
 
 

    Charakterystyka ogólna

                Program jest napisany całkowicie w języku C. Interfejs stworzony jest  w gtk+. Rolę serwera baz danych pełni serwer PostgreSQL. Główne okno tworzy notebook z pionowymi zakładkami. Każda zakładka to oddzielny moduł, np. zakładka fakturowanie oznacza chęc stworzenia i wydrukowania faktury, zakładka towary pozwala nam na operacje związane z towarami itd. Nie pozostaje więc nic, jak tylko zainstalować program i sprawdzić, jak działa faktycznie.
 

    Instalacja i konfiguracja

                Instalacja którą opiszę odnosi się do  Debiana 2.2, ale z relacji osób korzystających z programu na RedHacie jest podobnie, oczywiście po zrobieniu kilku symlinków. A więc zaczynamy. Najpierw należy nagrać w systemie takie oto pakiety:

-    PostgreSQL (wersja najlepiej 7.1.x)
-    postgresql-dev
-    libgtk1.2,     libgtk1.2-dev
-    libglib1.2,     libglib1.2-dev
-    apsfilter (do konfiguracji drukarki)
-    a2ps     (do drukowania)
-    enscript (opcjonalnie - do druku logo)

    Aby zainstalować serwer PostgreSQL należy:

    $ tar zxvf postgresql-7.1.x.tar.gz
    $ cd postgresql-7.1.x
    $ ./configure --prefix=/usr --with-tcl  --enable-locale
    $ make
    # make install
    Q: Dlaczego akurat ze żródeł, a nie z paczki??
    A: Dlatego, że w Debianie stabilna wersja PostgreSQL'a to 6.5.x, który jest o wiele wolniejszy od wersji 7.x

    Pozostałe pakiety instalujemy w sposób następujący:

    #apt-get install nazwa_pakietu

    Aby faktury drukowane były poprawnie należy do pliku /etc/a2ps-site.cfg dopisać lub zmienić istniejące opcje:

        Options: --encoding=latin2      # zmiana kodowania znaków na latin2
        Options: --medium=a4          # zmiana rozmiaru kartki na A4
        Options: --borders=no               # wyłączenie drukowanego z boku każdego wydruku obramowania

    Teraz czas na instalację programu XdeFactor.Najświeższa wersja to 0.8.5 .Jest ona stabilna i nie wykryłem w niej żadnego błedu, a należałoby wspomnieć, że cały program działa w dwóch firmach od maja 2001r, i wszystkie znalezione do tej pory błędy zostały juz poprawione!.

    $ tar zxvf xdefactor-0.8.5.tar.gz
    $ cd xdefactor-0.8.5
    $ make
    # make install

    Program zainstalował w ten sposób następujące pliki i katalogi:

    -    /usr/local/bin/xdefactor
    -    /usr/local/bin/logo - jest to zwykły skrypt w shellu, który za pomocą enscripta wykonuje na wydrukowanej już fakturze półprzeźroczysty napis np. nazwa firmy (dla nazwy firmy, gdzie ilość liter wynosi 7 odpowiednia wielkość czcionki to 160), od wersji v0.8.7 mozliwośc drukowania logo dostępna jest w zakładce sprzedawca
    -    /etc/xdefactor
                        db.conf                                -    ustawienia dotyczące połaczenia z bazą danych
                        autor                                   -   autor, nazwa programu i jego wersja - to co wydrukuje się na końcu każdego dokumentu
                        sprzedawca.conf           -  ustawienia sprzedawcy
                        archiwum/                      -   tu składowane są wszystkie drukowane dokumenty

    Najepiej sprawdzić, czy tak samo sytuacja wygląda u nas, bo jeśli nie, to radziłbym skopiować powyższe pliki ręcznie.Teraz zostało jeszcze kilka ważnych rzeczy do zrobienia, nie będę pisał jak je wykonać, gdyż mijałoby się to z celem:

        -    dodaj użytkownika np. księgowy
        -    ustaw id jego grupy na 113
        -    ustaw właścicielem katalogu /etc/xdefactor użytkownika np. xdefactor
      -    # chmod 700 /etc/xdefactor
        -    skopiuj pliki  environment do /etc
        - wstaw do pliku /etc/profile:   LC_ALL=pl_PL i export pl_PL (jeżeli jeszcze tego nie zrobiłeś!! )
        - ustaw  klawiaturę w /etc/X11/XF86Config na pl
 
 

    Teraz czas na bazę danych:

        -    logujemy się jako administrator serwera PostgreSQL
        -    $ cd /usr/src/xdefactor-0.8.5/db
        -    $ createdb nazwa_bazy np. xdefactor
        -    $ psql xdefactor
            -    $ \i xdefactor.sql
            -    $ \dt     (sprawdzamy, czy tabele zostały poprawnie utworzone)
           -     $  \quit
        -    $ postmaster -i  -p 5432&

    I to juz wszystko, zainstalowaliśmy cały XdeFactor wraz ze wszystkimi niezbędnymi programami:))
 

    Mój pierwszy raz -- użytkowanie
 

    Program uruchamiamy poleceniem:

        $ xdefactor

    Po jego wykonaniu na konsoli mozemy spodziewać się jednego z trzech napisów, oto one:

        -  Twój identyfikator grupy to ....   -     nie zmieniłeś id grupy do której należy użytkownik np. ksiegowy, zrób to poleceniem: # groupmod -i 113 nazwa_grupy np. ksiegowy
        -    Połączenie z bazą danych nie powiodło się     - sprawdź czy poprawnie wpisałeś dane w /etc/xdefactor/db.conf,    pozwól twojemu hostowi łączyć się z utworzoną wcześniej bazą (odpowiednie wpis do pliku pg_hba.conf
        -    Połączenie z bazą danych powiodło się    -   nie musisz nic robić wszystko jest w porządku

            Teraz naszym oczom ukazało się główne okno programu z zakładkami ( rysunek nr 1).Postaram się po krótce omówić każdą z nich(same konkrety):
 


  Rysunek nr.1 (główne okno programu)


            - pierwsza zakładka jest to fakturowanie.
                        -     jeśli mamy zamiar wydrukować pierwszą fakturę w XdeFactor to musimy w polu numer faktury wpisać jej numer w postaci nr_faktury/rok np. 221/01,    potem przy drukowaniu następnych faktur pole tego nie uzupełniamy

            - druga zakładka to sprzedawca, od wersji 0.8.7 można z jej poziomu drukować logo, automatyczny wpis w okienku nazwy jest pobierany z pliku konfiguracyjnego sprzedawca.conf - parametr logo

            - trzecia zakładka to nabywcy, pola których opis oznaczony został gwiazdką(*) należy koniecznie wypełnić!!

            - czwarta zakładka to towary; mamy dwie możliwości wyszukiwania towarów, pierwszy to numer identyfikacyjny, drugi to ciąg znaków zawarty w nazwie szukanego przez nas towaru

            - w piątej zakładce ujrzymy nie tylko  wszystkie możliwe informacje o opakowaniach zwrotnych, ale również możliwość wydruku ich obrotu w dowolnym odstępie czasu, tzn. od zadanego terminu1 do zadanego terminu2 włącznie.
 

Chcę zrobić moduł

        Chcąc napisać jakiś moduł do programu, musimy najpierw stworzyć interfejs do niego. Najprościej zrobić to z użyciem programu Glade(Rysunek nr2), który służy do budowania interfejsów. Przy projektowaniu musimy pamiętać, aby rozłożenie głównych komponentów było stałe z ang.fixed. Teraz należy podać mu nazwę: nazwa_modułu.c i doprowadzić do takiej postaci jak poniżej:

    #include ....
    ....
    ....

    void nazwa_modułu(GtkWidget *window1, GtkWidget *fixed1)
    {
        ....
        ....
    }


    Rysunek nr2 (Główne okno programu Glade)
 

    I mamy gotowy moduł, teraz należy go tylko połączyć z projektem XdeFactor. A więc zaczynamy.Najpierw skopiuj Twój plik, który prawdopodobnie ma postać nazwa_modułu.c do katalogu xdefactor-0.8.5/src. Teraz otwórz plik main.c w swoim ulubionym edytorze np. VIM (ten akurat nie jest konieczny, ale Xdefactor bardzo lubi pliki zmieniane przy jego pomocy :))) ) Dodaj do niego w odpowiednich miejscach następujące linie kodu:

    ...
    ...
    /* przyjmujemy, że jest to szósty komponent w systemie */

    GtkWidget *fixed6, *label6;
    ...
    ...
    label6  = gtk_label_new("To co znajdzie się na zakładce");
    ...
    ...
    fixed6 = gtk_fixed_new();
        nazwa_modułu(window, fixed6);
    ...
    ...
     gtk_notebook_append_page(GTK_NOTEBOOK(notebook), fixed6, label6);
     gtk_widget_show(fixed6);
     gtk_widget_show(label6);
     ...
     ...

    Teraz zostało nam tylko zmodyfikować plik Makefile i uruchomić XdeFactor.Otwieramy plik Makefile i do OBJECTS dodajemy na końcu postać obiektową naszego pliku nazwa_modułu.o. Zostało nam jeszcze dopisać coś takiego :
    ...
    ...
    nazwa_modułu.o: $(SOURCE) nazwa_modułu.c
            $(COMPILE)
    ...
    ...

    To już koniec, teraz tylko make i miłej zabawy!!! Prawda, że prosto dodać własny moduł, wystarczy tylko znać C i mieć trochę wolnego czasu, co w moim przypadku jest dość dużym problemem. Aby nasz moduł mógł wspólpracować z innymi oraz z bazą danych, warto opisać kilka plików za co są odpowiedzialne:

    -    conn_db.c       -  połączenie z bazą danych
    -    fak.c                  - zakładka fakturowanie
    -    drukuj.c          - drukowanie faktury
    -    main.c             - główny plik, w nim dokładamy moduły
    -    fix5.h                - odpowiada za poprawne zaokrąglanie liczb
    -    szukaj.c            - szuka w pliku konfiguracyjnym odpowiedniego wpisu dla szukanej zmiennej

    itp. reszta plików, a jest ich około 35 to części odpowiednich im komponentów.To chyba wszystko co  można powiedzieć o stronie developerskiej programu.Teraz czas na to co przewiduję na przyszłość.
 

Co dalej??

    W najbliższej przyszłości zamierzam dodać jeszcze minimum dwa moduły tj. przychody-rozchody oraz drukowanie przelewów. Program ogólnie rzecz biorąc jest dobrym rozwiązaniem tylko dla małych firm, ale myślę, że wkrótce ulegnie to zmianie.Przykładowy wydruk faktury widzimy na Rysunku nr3.
 


 Rysunek nr3 (Przykładowy wygląd faktury)

Jak włączyć się do projektu?

    Jeśli jesteś zainteresowany dołączeniem się do projektu, wyślij mail'a na mój adres: armadillo@wp.pl i napisz co potrafisz oraz do czego mógłbyś się przydać.

Źródła:

    Program można ściągnąć ze stron: xdefactor.republika.pl

O Autorze:

Michał Ociepka

    Autor jest uczniem czwartej klasy LO w Kłobucku k/Częstochowy . Ma pod opieką trzy serwery Linuksowe,  jego zainteresowania to przede wszystkim programowanie  w C, bazy danych oraz bezpieczeństwo.  Kontakt: armadillo@wp.pl