Numeracja dokumentów: Różnice pomiędzy wersjami

Z Motława
 
(Nie pokazano 6 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 22: Linia 22:
  
 
''Tabela `operdoc` pozwala ustawiać parametry z dokładnością do rodzaju dokumentu czyli nie uwzględnia podrodzaju.''
 
''Tabela `operdoc` pozwala ustawiać parametry z dokładnością do rodzaju dokumentu czyli nie uwzględnia podrodzaju.''
 
  
  
Linia 52: Linia 51:
 
Nie ma tu ograniczenia do dwóch pól i dwóch tabel.
 
Nie ma tu ograniczenia do dwóch pól i dwóch tabel.
  
Numeratory dzielimy wg.:
+
'''Zobacz także:''' [[Numeracja dokumentów#Numeratory | Numeratory]]
* typu numeretora (string - pozwala zdefiniować dowolną liczbę numertorów (np. nrdokfin, nrdokmag, etc)
+
* rodzaju i
+
* podrodzaju
+
 
+
Każdy numerator może być "przekierowany" na inny typ/rodzaj/podrodzaj np. numerator magazynowy dla faktury zakupu może być "przekierowany" na analogiczny numerator o rodzaju WZ.
+
 
+
Ponadto w każdym numeratorze możemy:
+
 
+
* ustawić maskę,
+
* ustalić jak numerator będzie grupować numery (zasoby, rok, miesiąc, dzień)
+
* ustalić zachowanie algorytmów przy przepisywaniu numerów do końcowych pól w tabelach.
+
* ustalić czy numer (określone pole numeru) może być:
+
** edytowane - EditedNum
+
** można manualnie pobrać kolejny numer - ManualNum
+
** program sam ma pobrać kolejny numer przy zapisie (gdy pole puste) - AutoNum czy automatyczna numeracja
+
* pola SQL_GetParams (SQL dla pobierania danych) oraz SQL_UpdateNum mają nieco szersze znaczenie - patrz ustawienia SQL_GetParams w DEFINICJA numeratorów.
+
  
 +
== DEFINICJE ==
  
 
+
=== Definicja numeratorów ===
== DEFINICJA numeratorów ==
+
 
+
  
 
Każdy numerator określamy jako trójke atrybutów: typ, rodzaj i podrodzaj.
 
Każdy numerator określamy jako trójke atrybutów: typ, rodzaj i podrodzaj.
Linia 131: Linia 113:
  
 
System automatycznie wykonuje to zapytanie aby otrzymać szereg zmiennych koniecznych do pobrania kolejnego numeru (dane do grupowania) oraz aby wypełnić maskę numeru.
 
System automatycznie wykonuje to zapytanie aby otrzymać szereg zmiennych koniecznych do pobrania kolejnego numeru (dane do grupowania) oraz aby wypełnić maskę numeru.
 
  
 
'''UWAGA'''  
 
'''UWAGA'''  
Linia 150: Linia 131:
 
   AND (NrDokFin = '' OR #ALWAYS#)
 
   AND (NrDokFin = '' OR #ALWAYS#)
 
   ;
 
   ;
UWAGA w tabeli `erp_obj_counters_masks` również istnieje pole SQL_UpdateNum i jesli jest niepuste to jego zawartość jest wykonywana dla danego numeratora.
+
 
 +
'''UWAGA'''
 +
 
 +
''W tabeli `erp_obj_counters_masks` również istnieje pole SQL_UpdateNum i jesli jest niepuste to jego zawartość jest wykonywana dla danego numeratora.''
 +
 
 +
=== Numeratory ===
 +
 
 +
Tabela `erp_obj_counters_masks`. Każdy rekord to inny numerator który zawiera wszystkie konieczne ustawienia dotyczące numeracji.
 +
 
 +
Numeratory dzielimy wg.:
 +
* typu numeratora (string - pozwala zdefiniować dowolną liczbę numertorów (np. nrdokfin, nrdokmag, etc)
 +
* rodzaju i
 +
* podrodzaju
 +
 
 +
Innymi słowy dla danej definicji (typu) numeratora określamy tu wszystkie rodzajowe warianty tej definicji.
 +
Przykład, dla definicji (typu) numeratora “opng.nrdokmag” numeratorami będą wszystkie warianty: (rodzaj, podrodzaj) dla których ten typ numeratora ma sens (nie ma sensu np. dla dok. kasowego).
 +
 
 +
Każdy numerator może być "przekierowany" na inny typ/rodzaj/podrodzaj np. numerator magazynowy dla faktury zakupu może być "przekierowany" na analogiczny numerator o rodzaju WZ.
 +
 
 +
Ponadto w każdym numeratorze możemy:
 +
 
 +
* ustawić maskę,
 +
[[Plik:MaskaNew.png]]
 +
* ustalić jak numerator będzie grupować numery (zasoby, rok, miesiąc, dzień)
 +
* ustalić zachowanie algorytmów przy przepisywaniu numerów do końcowych pól w tabelach.
 +
* ustalić czy numer (określone pole numeru) może być:
 +
** edytowane - EditedNum
 +
** można manualnie pobrać kolejny numer - ManualNum
 +
** program sam ma pobrać kolejny numer przy zapisie (gdy pole puste) - AutoNum czy automatyczna numeracja
 +
* pola SQL_GetParams (SQL dla pobierania danych) oraz SQL_UpdateNum mają nieco szersze znaczenie - patrz ustawienia SQL_GetParams w DEFINICJA numeratorów.
 +
 
 +
 
 +
===POLA NUMERÓW===
 +
 
 +
Wartość numeru przechowywana jest za pomocą pola w określonej w numeratorze tabeli.
 +
Ale jeśli korzystamy z nowej numeracji to numer ten przechowywany jest również w tabeli `erp_obj_counters_values`.
 +
Zawiera ona nie tylko cały numer ale i odpowiadający mu numer liczbowy z licznika.
 +
Jeśli numer został nadany ręcznie to numer liczbowy jest nieokreślony.
 +
 
 +
 
 +
== AKTYWACJA I ZARZADZANIE NUMERACJA ==
 +
 
 +
Aktywowanie nowej numeracji odbywa się na kilku poziomach.
 +
 
 +
=== Aktywacja ===
 +
 
 +
Po pierwsze trzeba wiedzieć, że pełna nowa numeracja działa tylko dla dokumentów tworzonych w świecie E.
 +
 
 +
Po drugie należy ustawić:
 +
*zmienną globalną erp_obj_counters_values_e_1_rec z tabeli `_db_globals` na 1
 +
*zmienną IFDEF erp_obj_counters_values_e_1_rec na 1
 +
 
 +
Po trzecie należy ustalić które dokumenty z `opng` i `zmng` będą numerowane po nowemu.
 +
 
 +
Umożliwia to etapowe włączanie kolejnych dokumentów.
 +
 
 +
Włączanie/wyłączanie odbywa się w tabeli `operdoc_typy`. W polu counter - mamy możliwość ustawienia następujących wartości
 +
 
 +
'''NUMDOK''' - pozostaw starą numerację albo
 +
 
 +
'''OBJ_COUNTERS''' - nowa numeracja
 +
 
 +
[[Plik:operdocIntNetCenter.png]]
 +
 
 +
Należy zauważyć że mowa jest tylko i wyłącznie o numeracji dokumentów (które po staremu numerowane są w NUMDOK i NUMWEWN).
 +
 
 +
Reasumując możemy uruchomić nową numerację tylko dla dokumentu WZ i MM nie zmieniając sposobu numeracji pozostałych operacji. Ale wymagane jest ustawienie odpowiednich flag i używanie wersji z edycją w świecie E.
 +
 
 +
===Kontrolki numerów w oknie edycji===
 +
 
 +
Jeśli dana operacja ma włączoną nową numerację to w oknie edycji nieco inaczej będzie wyglądały kontrolki numerów.
 +
Dla danej operacji (rodzaj/podrodzaj) wszystkie numeratory będą reprezentowane przez kontrolki edycyjne - bedzie ich tyle ile numeratorów.
 +
 
 +
'''Przykład''' - dla faktury zakupu będą to 3 typy numeratorów (opng.nrdokfin, opng.nrdokmag, opng.nrwewn).
 +
 
 +
'''Każda z 3 kontrolek może być:'''
 +
* wyszarzona (disabled) jeśli w danym numeratorze pole GUI_Ctrl_option zawiera “EditedNum”
 +
* mieć po prawej przycisk do manualnego nadawania numeru kolejnego o ile GUI_Ctrl_option zawiera “ManualNum”
 +
 
 +
'''UWAGA'''
 +
 
 +
Jeżeli dana operacja ma włączoną nową numerację to każdy typ numeratora będzie widoczny w oknie edycji - '''nie można włączać nowej numeracji z dokładnością do pojedynczego numeratora.'''
 +
 
 +
[[Kategoria: Motława]]
 +
[[Kategoria: HT]]

Aktualna wersja na dzień 15:34, 11 lut 2015

Numerowanie w Motławie można podzielić na trzy obszary:

  • NUMDOK - stary, dotyczący wyłącznie dokumenty oparte na tabelach `opng` i `zmng`;
  • NUMDOK/COUNTER - przejściowy, oparty na nowym numeratorze `erp_obj_counters` oraz
  • COUNTER - zupełnie nowy oparty na systemie uniwersalnego numerowania.


OBSZARY NUMERACJI

NUMDOK

System numerujący dokumenty oparte na tabelach `opng` i `zmng`.

Licznikiem są

  • dla numerów głównych (nrdokfin, nrdokmag, etc) tabela `numdok`
  • dla numerów wewnętrznych (nrwewn) tabela `numwewn`.

Maska obu numeratorów oraz dodatkowe ustawienia znajdują się w tabeli `operdoc`.

UWAGA

Tabela `operdoc` pozwala ustawiać parametry z dokładnością do rodzaju dokumentu czyli nie uwzględnia podrodzaju.


NUMDOK/COUNTER

Ten system korzysta z nowych numeratorów jakim są `erp_obj_counters`, ale pozostałe ustawienia nadal są trzymane w tabeli `operdoc`. Niektóre algorytmy "pobierają" numer dla zdarzeń CRM inne tworzą numer z dokładnościa do miesiąca - nowy nuumerator `erp_obj_counters` ma większe możliwości grupowania numerów i dlatego jest używany (patrz liczniki w COUNTER).

Licznikiem jest tabela `erp_obj_counters` Maska numeratorów oraz dodatkowe ustawienia znajdują się w tabeli `operdoc`.


COUNTER

Całkiem nowy system numerowania.

Licznikiem jest tabela `erp_obj_counters` Maski oraz dodatkowe ustawienia znajdują się w tabeli `erp_obj_counters_masks` która nazywamy numeratorami. Każdy rekord to inny numerator który zawiera wszystkie konieczne ustawienia dotyczące numeracji. Nie ma zatem potrzeby wykorzystywania tabeli `operdoc` która dodatkowo ograniczała numerację tylko do dokumentów.

Nowe liczniki mogą grupować numery wg:

  • zasobu 1 (np. magazyn)
  • zasobu 2 (ustawialne)
  • zasobu znakowego (np. RV_ID)
  • roku
  • miesiąca
  • dnia (rok, miesiąc, dzień - podawany jest do procedury ale w automacie podawane jest konkretne pole daty)

Tabela numeratorów czyli ustawień `erp_obj_counters_masks`jest uniwersalna i pozwala zdefiniować dowolny numerator dla dowolnego pola z dowolnej tabeli. Nie ma tu ograniczenia do dwóch pól i dwóch tabel.

Zobacz także: Numeratory

DEFINICJE

Definicja numeratorów

Każdy numerator określamy jako trójke atrybutów: typ, rodzaj i podrodzaj. Typ numeratora jest zdefiniowany w tabeli `erp_obj_counters_def` i nazywany jest definicja danego numeratora. Innymi słowy numeratory definiujemy w `erp_obj_counters_def` natomiast w `erp_obj_counters_masks` gromadzimy wszystkie możliwe wystąpienia rodzajowe danego numeratora (rodzaj, podrodzaj).

Co oprócz samej nazwy zawiera definicja numeratora?

Zawiera konieczne do automatycznego przetwarzania ustawienia:

  • TableName - nazwa tabeli w której znajduje się pole numeru
  • SQL_GetParams - SQL dla pobierania danych koniecznych do pobrania licznika i wypełnienia maski.
  • SQL_UpdateNum - SQL dla wstawienie numeru do tabeli z pola TableName
  • Disabled - określa czy definicja jest jeszcze używana.

SQL_GetParams

SQL-ka dla pobierania danych koniecznych do pobrania licznika i wypełnienia maski.

Przykładowa sql-ka dla definicji “opng.nrdokfin”:

 SELECT
 n.nrdokfin AS _Number,
 n.Rodzaj, 0 AS PodRodzaj, 
 IF(n.ZMagazynu != 0, n.ZMagazynu, n.DoMagazynu) AS _Res1,
 n.DoMagazynu AS _Res2,
  AS _ResGUID,
 YEAR(n.DataWystaw) AS _NumYear,
 MONTH(n.DataWystaw) AS _NumMonth,
 DAY(n.DataWystaw) AS _NumDay,
 n.RodzajDowodu AS _RodzajDowodu,
 n.RV_ID AS _Rv_id,
 n.UGrpGUID AS _UGrpGUID,
 IFNULL(m1.symbol, ) AS _MGS,
 IFNULL(m2.symbol, ) AS _MDS
 FROM `#TABLENAME#` n
 LEFT JOIN `Magazyny` m1_0 ON m1_0.IdnMagazynu = IF(n.ZMagazynu != 0, n.ZMagazynu, n.DoMagazynu)
 LEFT JOIN `Magazyny` m1 ON m1.IdnMagazynu = m1_0.grupa
 LEFT JOIN `Magazyny` m2_0 ON m2_0.IdnMagazynu = n.DoMagazynu
 LEFT JOIN `Magazyny` m2 ON m2.IdnMagazynu = m2_0.grupa
 WHERE
 GUID = '#ID#'
 INTO 
 @erp_obj_counters._Number,
 @erp_obj_counters._Rodzaj, 
 @erp_obj_counters._PodRodzaj, 
 @erp_obj_counters._Res1,
 @erp_obj_counters._Res2,
 @erp_obj_counters._ResGUID,
 @erp_obj_counters._NumYear,
 @erp_obj_counters._NumMonth,
 @erp_obj_counters._NumDay,
 @erp_obj_counters._RodzajDowodu,
 @erp_obj_counters._Rv_id,
 @erp_obj_counters._UGrpGUID,
 @erp_obj_counters._MGS,
 @erp_obj_counters._MDS
 ;

System automatycznie wykonuje to zapytanie aby otrzymać szereg zmiennych koniecznych do pobrania kolejnego numeru (dane do grupowania) oraz aby wypełnić maskę numeru.

UWAGA

W tabeli `erp_obj_counters_masks` również istnieje pole SQL_GetParams i jesli jest niepuste to jego zawartość jest wykonywana dla danego numeratora.

SQL_UpdateNum

Tę sql-ke system również wykonuje automatycznie. Ustawia ona pole w określonej tabeli. Parametry #TABLENAME#,#NUMBER# są wypałniane są również automatycznie ze zmiennych i z ustawień. PRZYKŁAD

 UPDATE `#TABLENAME#` 
 SET
 NrDokFin = '#NUMBER#'
 WHERE
 GUID = '#ID#'
 AND (NrDokFin =  OR #ALWAYS#)
 ;

UWAGA

W tabeli `erp_obj_counters_masks` również istnieje pole SQL_UpdateNum i jesli jest niepuste to jego zawartość jest wykonywana dla danego numeratora.

Numeratory

Tabela `erp_obj_counters_masks`. Każdy rekord to inny numerator który zawiera wszystkie konieczne ustawienia dotyczące numeracji.

Numeratory dzielimy wg.:

  • typu numeratora (string - pozwala zdefiniować dowolną liczbę numertorów (np. nrdokfin, nrdokmag, etc)
  • rodzaju i
  • podrodzaju

Innymi słowy dla danej definicji (typu) numeratora określamy tu wszystkie rodzajowe warianty tej definicji. Przykład, dla definicji (typu) numeratora “opng.nrdokmag” numeratorami będą wszystkie warianty: (rodzaj, podrodzaj) dla których ten typ numeratora ma sens (nie ma sensu np. dla dok. kasowego).

Każdy numerator może być "przekierowany" na inny typ/rodzaj/podrodzaj np. numerator magazynowy dla faktury zakupu może być "przekierowany" na analogiczny numerator o rodzaju WZ.

Ponadto w każdym numeratorze możemy:

  • ustawić maskę,

MaskaNew.png

  • ustalić jak numerator będzie grupować numery (zasoby, rok, miesiąc, dzień)
  • ustalić zachowanie algorytmów przy przepisywaniu numerów do końcowych pól w tabelach.
  • ustalić czy numer (określone pole numeru) może być:
    • edytowane - EditedNum
    • można manualnie pobrać kolejny numer - ManualNum
    • program sam ma pobrać kolejny numer przy zapisie (gdy pole puste) - AutoNum czy automatyczna numeracja
  • pola SQL_GetParams (SQL dla pobierania danych) oraz SQL_UpdateNum mają nieco szersze znaczenie - patrz ustawienia SQL_GetParams w DEFINICJA numeratorów.


POLA NUMERÓW

Wartość numeru przechowywana jest za pomocą pola w określonej w numeratorze tabeli. Ale jeśli korzystamy z nowej numeracji to numer ten przechowywany jest również w tabeli `erp_obj_counters_values`. Zawiera ona nie tylko cały numer ale i odpowiadający mu numer liczbowy z licznika. Jeśli numer został nadany ręcznie to numer liczbowy jest nieokreślony.


AKTYWACJA I ZARZADZANIE NUMERACJA

Aktywowanie nowej numeracji odbywa się na kilku poziomach.

Aktywacja

Po pierwsze trzeba wiedzieć, że pełna nowa numeracja działa tylko dla dokumentów tworzonych w świecie E.

Po drugie należy ustawić:

  • zmienną globalną erp_obj_counters_values_e_1_rec z tabeli `_db_globals` na 1
  • zmienną IFDEF erp_obj_counters_values_e_1_rec na 1

Po trzecie należy ustalić które dokumenty z `opng` i `zmng` będą numerowane po nowemu.

Umożliwia to etapowe włączanie kolejnych dokumentów.

Włączanie/wyłączanie odbywa się w tabeli `operdoc_typy`. W polu counter - mamy możliwość ustawienia następujących wartości

NUMDOK - pozostaw starą numerację albo

OBJ_COUNTERS - nowa numeracja

OperdocIntNetCenter.png

Należy zauważyć że mowa jest tylko i wyłącznie o numeracji dokumentów (które po staremu numerowane są w NUMDOK i NUMWEWN).

Reasumując możemy uruchomić nową numerację tylko dla dokumentu WZ i MM nie zmieniając sposobu numeracji pozostałych operacji. Ale wymagane jest ustawienie odpowiednich flag i używanie wersji z edycją w świecie E.

Kontrolki numerów w oknie edycji

Jeśli dana operacja ma włączoną nową numerację to w oknie edycji nieco inaczej będzie wyglądały kontrolki numerów. Dla danej operacji (rodzaj/podrodzaj) wszystkie numeratory będą reprezentowane przez kontrolki edycyjne - bedzie ich tyle ile numeratorów.

Przykład - dla faktury zakupu będą to 3 typy numeratorów (opng.nrdokfin, opng.nrdokmag, opng.nrwewn).

Każda z 3 kontrolek może być:

  • wyszarzona (disabled) jeśli w danym numeratorze pole GUI_Ctrl_option zawiera “EditedNum”
  • mieć po prawej przycisk do manualnego nadawania numeru kolejnego o ile GUI_Ctrl_option zawiera “ManualNum”

UWAGA

Jeżeli dana operacja ma włączoną nową numerację to każdy typ numeratora będzie widoczny w oknie edycji - nie można włączać nowej numeracji z dokładnością do pojedynczego numeratora.