Tworzenie umów i ich wzory

0

Witam.
Mam zaprojektować bazę danych, do aplikacji zarządzającej umowami z klientami. Problemem jest to, że umowy z ostatnich lat się zmieniały(istniały różne wzory umów) i różnią się paragrafami i zmiennymi w tych paragrafach. Rozbiłem to na takie encje:

  1. umowa(id, id_wzoru, ...)
  2. wzor_umowy(id, nazwa_wzoru, ...)
  3. paragraf(id, tekst_paragrafu... )
  4. wzory_umow__paragrafy(id_wzoru, id_paragrafu).

Proszę teraz, żeby ktoś mi powiedział w jaki sposób mam stworzyć ZMIENNE w paragrafie. Np. paragraf 1: Umowa zostaje podpisana na [36 miesięcy], a opłata abonamentowa wynosi [50zł].

W paragrafie może nie być żadnych zmiennych, a może kiedyś być tak że będą np. 4 zmienne. I co teraz ? Chcę żeby program mógł dodawać nowe wzory umów BEZ udziału programisty i bez późniejszej ingerencji w strukturę bazy...

Da się to w ogóle jakoś zrobić?

0

no dobra ale te zmienne to co - ktoś to będzie wprowadzał potem w programie i chcesz zrobić tak, że nieważne ile tych zmiennych to program poprosi o wprowadzenie wszystkich?
Jeśli tak to tabelka ze zmiennymi - typ zmiennej, np. dla string min i max długość, zestaw znaków, maskę, dla int, float, date dopuszczalny zakres, dla float dodatkowo np. zaokrąglanie do konkretnej ilości miejsc po przecinku, dla zmiennych wyliczeniowych dopuszczalne wartości, nazwa, opis i potem w programie trzeba ładnie zrobić pytanie o te zmienne, które są wymagane. Do raportu wartości trafiają jako string i tyle

0

hmm. Zobrazuję to tak:
Teraz mamy wzór umowy obowiązujący np. 2012 roku, gdzie pierwszy paragraf brzmi: "Jednorazowa opłata za podłączenie wynosi 150 zł.". Można tu znaleźć JEDNĄ zmienną którą trzeba wyciągnąć z bazy, czyli kwotę za podłączenie.
Niedługo zostanie wprowadzony NOWY wzór umowy (2013) gdzie 1 paragraf będzie brzmiał: "Opłata za podłączenie wynosi 150zł, a opłata miesięczna wynosi 40zł (słownie: czterdzieści złotych).". Tutaj mamy już trzy zmienne - kwotę za podłączenie, kwotę abomamentu jako cyfra i słownie. I moje pytanie brzmi: Jak zaprojektować bazę danych, która będzie rozróżniała wzory umów i w której będzie możliwe wprowadzenie nowego wzoru np. w roku 2014, gdzie dojdzie paragraf numer 28 w którym będzie 5 zmiennych (cholera wie jakich) ?? Czy to jest możliwe ?

0

pytanie podstawowe dlaczego wzory umów trzymasz w bazie jako tekst a nie skorzystasz z jakiegoś narzędzia (np. płatny i świetny FastReport albo darmowy FreeReport), który potrafi wzory wydruków trzymać w plikach? Wtedy masz wzór na 2012, 2013, 2014 itd. I możesz tam mieć całkiem co innego.
To co Ty tutaj prezentujesz to nie jest JEDEN wzór umowy z różnymi "parametrami" - to są osobne wzory.

0

Dlatego, że ja właśnie piszę takie narzędzie. Piszę system do zarządzania firmą, w którym jedną z wielu opcji będzie tworzenie, czy drukowanie umów na podstawie różnych wzorów. Nie chcę używać jakiegoś dodatkowego narzędzia tylko po to żeby sobie umowę stworzyć, bo takich funkcji to ja jeszcze przed sobą mam ze 100.

0

czyli wzór wydruku masz zapisany jako co? A jak masz to potem zamiar drukować? A jak user będzie chciał np. 2013 pogrubić to jak to zrealizujesz? Czyli mam rozumieć, że zamiast wziąć jakiś gotowy system wydruku, z własnym edytorem pozwalającym na drukowanie tekstu dowolnie sformatowanego w pionie, poziomie, krzywego, prostokątów, kodów kreskowych, danych z bazy i innych piszesz to sam... Dodatkowo nawet nie mając koncepcji jak się za to zabrać... No tylko pogratulować.

1

@abrakadaber, nie szalej... wzór wydruku można sobie zrealizować na wiele sposobów, niekoniecznie trzymając się sztywno gotowych rozwiązań... formatowanie można sobie spokojnie zrobić jako rtf czy nawet html... rozwiązań jest wiele...

jeśli chodzi o zapisanie wzoru, to tak pobieżnie i na szybko patrząc na wymagania poszedłbym może w stronę czegoś takiego:

id_wzoru nazwa_wzoru model_wzoru wprowadzony
1 umowa o telefon 2011 2011-01-01
2 umowa o telefon 2012 2012-01-01

masz umowy na to samo, ale z innym "modelem" - program może po wybraniu wybierać najbardziej "aktualny", najnowszy do wypełnienia

jeśli chodzi o sam wzór można go zapisywać np. jako:

Umowa z dnia {system_date}
pomiędzy panem {client_name}
kwota: {price_variant}

gdzie te wszystkie rzeczy w {} są zastępowane przez program tym czym potrzeba... w tym momencie w programie pozwala Ci skorzystać z danych, np. jeśli wzór tego typu {rodzaj_wybór} ma przedrostek client, to wiesz, że w tym miejscu musisz dać przycisk "pokaż klientów" i z tego wyboru zastąpić to {client_name} wybranymi danymi klienta, coś takiego {system_date} jest automatycznie zastępowany systemową datą itp. itd.

razem z umowami (czy w dodatkowym polu, czy tabeli czy w xml-u) możesz mieć zawarte warianty opłat, np.:

<price_variant>
   <name="podstawowy" price="100">
  <name="rozszerzony" price"200">
</price_variant>

itp. itd. a formatowanie tekstu to już kwestia wyboru: xml, html, rtf - każde da się względnie prosto zrealizować...

czyli w najprostszym przypadku miałbyś tabelę:

id_wzoru nazwa_wzoru model_wzoru wprowadzony wzor parametry
1 umowa o telefon 2011 2011-01-01 Umowa z dnia {system_date} pomiędzy panem {client_name} kwota: {price_variant} <price_variant><name="podstawowy" pricece="100"><name="rozszerzony" price"200"></price_variant>

BTW: możesz sobie np. po załadowaniu takiego formularza do programu wymusić na programie odczytanie wszystkich {} i w kolejce, na kolejnych polach dialogowych poprosić wpisującego o wpisywanie danych, które trafią w odpowiednie miejsce... rozwiązań od cholery i trochę...

0
madmike napisał(a):

@abrakadaber, nie szalelej... wzór wydruku można sobie zrealizować na wiele sposobów, niekoniecznie trzymając się sztywno gotowych rozwiązań...
pewnie, a koła do samochodu można sobie wystrugać z kawałka drewna zamiast trzymać się sztywno gotowych rozwiązań...

formatowanie można sobie spokojnie zrobić jako rtf czy nawet html... rozwiązań jest wiele...
I znowu to magiczne słowo - zrobić. Pewnie, że jak ktoś ma kupe wolnego czasu to może wszystko robić po swojemu, tylko że zrobienie jako takiego edytora tekstu z obsługą wydruku tabelarycznego to nie jest rzucenie kilku komponentów na formę.

[...]
na temat samego pomysłu nie będę nic mówił bo nie mam wiedzy co pytacz tak na prawdę chce

itp. itd. a formatowanie tekstu to już kwestia wyboru: xml, html, rtf - każde da się względnie prosto zrealizować...
i znowu to magiczne słowo zrealizować...

Wspomniany przeze mnie FastReport w wersji podstawowej jest w D XE3. Nie trzeba ponosić dodatkowych kosztów. Wszystkie te Twoje zrobić i zrealizować wraz z całością pomysłu plus dużo więcej to jest jakieś 5 sekund roboty - znaleźć komponent na palecie i położyć na formie. Samo tworzenie szablonów, jak masz rozgarniętych userów, można zostawić im. Jak nie masz D XE3 to licencja bez źródeł to jest 180$ czyli jakieś 550zł. Ile to jest 10, 20 Twoich roboczogodzin? Jesteś w stanie to zrobić choćby w tydzień? Bo ja na pewno nie

0
  1. gdzie masz info o tym, że pytający robi to w delphi (patrz dział)???
  2. Nie mam delphi, mam siąść i płakać bo nie zrobię programu czy lecieć kupić delphi???
  3. Pytanie było o sposób implementacji problemu bazie danych (patrz dział) a nie o formatowanie tekstu
  4. Wolę poświęcić te parę "roboczogodzin", żeby mieć rozwiązanie takie jakie chcę, niż rzucić komponent na formę i stwierdzić "no bo inaczej się nie da"
0
  1. fakt byłem przekonany, że to dział delphi
  2. w c# masz crystalreport, zapewne do każdego języka coś się znajdzie
  3. o samo przechowywanie masz odpowiedz w pierwszym poście (tylko nie wyciągnij wniosku, że jest to jedyna i prawidłowa)
  4. w dobrym komponencie możesz zrobić większość z tego co sobie wymyślisz a resztę dopiszesz. Wspomniany FR np. nie potrafi na drukarkach 3D drukować... BTW już widzę te "parę" roboczogodzin, które następnie przechodzą w parędziesiąt a potem w paręset itd...
    Nadal twierdzę, że gotowiec będzie lepszy. A twierdze tak dlatego, że wątpię w możliwości pytacza - jeśli ma problem z wymyśleniem jak to ma funkcjonować (a wg mnie system do wydruków to jest dość prosta ale pracochłonna sprawa) to potem pojawią się następne problemy. Po co się męczyć - lepiej wziąć coś gotowego, przetestowanego a skupić się na tym, co trzeba napisać
1

Piszę program w C++. Używam biblioteki Qt. Program jest oparty o pluginy(jeden plugin główny(główne okno) i inne, obojętnie jakie. Każdy plugin udostępnia API, z którego później inne pluginy mogą skorzystać). Właśnie piszę plugin do obsługi klientów w firmie i stąd pytanie o bazę danych, bo może znam zasady poprawnego projektowania baz, to nie mogę o sobie powiedzieć że jestem w tym biegły, co innego C++ ;)

@madmike : bardzo Ci dziękuję za to rozwiązanie. Skorzystam z niego z powodzeniem. Właśnie o to mi chodziło.
@abrakadaber: za bardzo nie rozumiem - załóżmy, że jesteś programistą/projektantem i w pracy dostajesz zadanie do wykonania, żeby stworzyć plugin który obsługuje umowy, aneksy, rezygnacje, zawieszenia, cesje i inne pisma których jeszcze nie znasz, bo firma chce żeby JEJ program to obsługiwał, i co, idziesz do szefa i mówisz że do Twojego "systemu" będzie trzeba używać OSOBNEGO programu obcej firmy żeby wydrukować umowę ? A jak będziemy sprzedawać nasz program, to tamten od umów da się na płytce gratis do naszego :) Dobre.

1
M napisał(a):

@abrakadaber: za bardzo nie rozumiem - załóżmy, że jesteś programistą/projektantem i w pracy dostajesz zadanie do wykonania, żeby stworzyć plugin który obsługuje umowy, aneksy, rezygnacje, zawieszenia, cesje i inne pisma których jeszcze nie znasz, bo firma chce żeby JEJ program to obsługiwał, i co, idziesz do szefa i mówisz że do Twojego "systemu" będzie trzeba używać OSOBNEGO programu obcej firmy żeby wydrukować umowę ? A jak będziemy sprzedawać nasz program, to tamten od umów da się na płytce gratis do naszego :) Dobre.

rzeczywiście nie rozumiesz. Idziesz do szefa i mówisz: "szefie są dwie opcje - albo kupujemy gotowca DO WYDRUKÓW za xxx$ i gotowe będzie za 5 dni albo nie kupujemy, robię całość sam i gotowe będzie za 5 * xx dni" (gdzie xx to tak przynajmniej 10). Kumasz teraz? Dodatkowo raz kupionego gotowca możesz użyć w wielu innych projektach! - dziwne nie?

Możesz porównać to np. do pisania GUI w winapi wszystko sam albo z użyciem gtk+. Rozumiesz teraz? A całe to twoje stwierdzenie o " będzie trzeba używać OSOBNEGO programu obcej firmy" pokazuje tylko jakim jesteś ignorantem i że nie masz zielonego pojęcia o czym mówisz

0

Ale jaja :)
Jak mam Ci przetłumaczyć że moim zadaniem jest STWORZENIE programu(czy pluginu), który takie coś robi sam? Nie kupowanie!
Nie wiem na ile masz opanowaną inżynierię oprogramowania, ale jeśli piszesz kod, którego nie możesz wykorzystać później w innych projektach, to powodzenia życzę w zawodzie;). Jednocześnie polecam książki np. Roberta C. Martina.

1

nie ma sensu dyskutować z tobą bo to jak rzucanie grochem o ścianę. Na koniec raz jeszcze - pewnie, że możesz sobie to napisać - mi osobiście się nie chce a i czasu nie mam - wolałem wydać parę $ na GOTOWE rozwiązanie, które z powodzeniem używam w moich programach (różnych), które daje userowi możliwość zmieniania szablonów samemu, drukuje na zarówno na igłówkach jak i atramentówkach/laserówkach, w pionie, poziomie, tekst, tabelki, grafikę, kody kreskowe, potrafi się samo z bazą dogadać i zwróciło się już kilkanaście razy. Ale wiadomo, że własne "lepsze"... a i praca jest bo przecież ktoś to "lepsze" musi napisać...

1

Faktycznie nie ma sensu. Zboczyliśmy dość konkretnie z tematu. Prosiłem o pomysł na rozwiązanie problemu, który opisałem. Pomysł już otrzymałem i dostosowałem do swoich potrzeb. Baza jest prawie gotowa. Implementacja gotowego pluginu nie zajmie mi jakieś 2 dni.
Dziękuję i pozdrawiam!

1 użytkowników online, w tym zalogowanych: 0, gości: 1