{"id":9727,"date":"2025-04-17T12:18:34","date_gmt":"2025-04-17T10:18:34","guid":{"rendered":"https:\/\/pomoc.comarch.pl\/cee\/640\/?post_type=ht_kb&#038;p=9727"},"modified":"2025-05-16T09:12:31","modified_gmt":"2025-05-16T07:12:31","slug":"definicja-hook-contract-hashcodeinfo","status":"publish","type":"ht_kb","link":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/definicja-hook-contract-hashcodeinfo\/","title":{"rendered":"Definicja Hook Contract: HashCodeInfo"},"content":{"rendered":"<h3 id=\"wprowadzenie\" >Wprowadzenie<\/h3>\n<p data-pm-slice=\"1 1 []\">Definicja Hook Contract s\u0142u\u017cy do opisu obiektu biznesowego typu HashCode, czyli obiektu biznesowego, kt\u00f3rego klucz jest wyliczany na podstawie jego danych biznesowych. Definicja Hook-Contract umo\u017cliwia rozdzielenie w standardowym kodzie oraz wprowadzenie nowych obiekt\u00f3w biznesowych HashCode w postaci aplikacji.<\/p>\n<p>Niniejszy artyku\u0142 opisuje, jakie rozszerzenia mo\u017cna wprowadza\u0107 za pomoc\u0105 definicji Hook Contract oraz jakie ograniczenia i specyficzne atrybuty nale\u017cy przy tym uwzgl\u0119dni\u0107.<\/p>\n<p>Opis interfejsu mo\u017cna znale\u017a\u0107 w odpowiednim obiekcie deweloperskim typu Hook Contract. Szczeg\u00f3\u0142owe informacje o metodach zadeklarowanych w interfejsach znajduj\u0105 si\u0119 w powi\u0105zanych klasach Java.<\/p>\n<p>Informacje na temat infrastruktury hook\u00f3w mo\u017cna znale\u017a\u0107 w artykule <a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/hook-contracts\/\"><em>Hook Contracts<\/em><\/a>.<\/p>\n<h3 id=\"grupa-docelowa\" >Grupa docelowa<\/h3>\n<ul>\n<li>Deweloperzy<\/li>\n<\/ul>\n<h3 id=\"opis\" >Opis<\/h3>\n<p data-pm-slice=\"1 1 []\">Ta definicja Hook Contract dostarcza informacji o obiekcie biznesowym typu HashCode. W szczeg\u00f3lno\u015bci konieczne jest podanie nast\u0119puj\u0105cych danych:<\/p>\n<ul data-spread=\"false\">\n<li>Klasa obiektu biznesowego<\/li>\n<li>Adapter, kt\u00f3ry ma zosta\u0107 u\u017cyty<\/li>\n<li>Informacja, czy wspierana jest reorganizacja<\/li>\n<\/ul>\n<p>Definicja Hook Contract: com.cisag.app.general.hook.log.HashCodeInfo<\/p>\n<p>Nast\u0119puj\u0105ce obiekty biznesowe typu HashCode zosta\u0142y ju\u017c przystosowane do wykorzystania tej definicji Hook Contract w standardzie i s\u0142u\u017c\u0105 jako przyk\u0142adowe implementacje.<\/p>\n<table style=\"width: 100%; height: 739px;\" data-pm-slice=\"3 3 []\">\n<tbody>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\"><strong>Obiekt biznesowy typu HashCode<\/strong><\/td>\n<td style=\"border-style: outset; height: 46px;\"><strong>Implementacja Hook Contract<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\"><span style=\"color: #000000;\">Schematy numeracji<\/span><\/td>\n<td style=\"border-style: outset; height: 46px;\"><span style=\"color: #000000;\">com.cisag.app.general.extension.log.HashCodeInfoNumericRangeImpl<\/span><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\">Dane Intrastat<\/td>\n<td style=\"border-style: outset; height: 23px;\">com.cisag.app.general.intrastat.log.HashCodeInfoIntrastatDataInfoImpl<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\">Adresy<\/td>\n<td style=\"border-style: outset; height: 23px;\">com.cisag.app.general.log.HashCodeInfoAddressDataImpl<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\">Dane dostawy<\/td>\n<td style=\"border-style: outset; height: 23px;\">com.cisag.app.general.log.HashCodeInfoDeliveryDataInfoImpl<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\">Dane fakturowania<\/td>\n<td style=\"border-style: outset; height: 23px;\">com.cisag.app.general.log.HashCodeInfoInvoicingDataInfoImpl<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\">Dane zlece\u0144 dostawy<\/td>\n<td style=\"border-style: outset; height: 23px;\">com.cisag.app.general.log.HashCodeInfoOrderDeliveryDataInfoImpl<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\"><span style=\"color: #000000;\">Dane zam\u00f3wie\u0144 partner\u00f3w<\/span><\/td>\n<td style=\"border-style: outset; height: 23px;\"><span style=\"color: #000000;\">com.cisag.app.general.log.HashCodeInfoOrderPartnerDataInfoImpl<\/span><\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\"><span style=\"color: #000000;\">Ograniczenia magazynowe<\/span><\/td>\n<td style=\"border-style: outset; height: 46px;\"><span style=\"color: #000000;\">com.cisag.app.inventory.location.log.HashCodeInfoStorageAreaRestrictionImpl<\/span><\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\">Strategia magazynowania<\/td>\n<td style=\"border-style: outset; height: 46px;\">com.cisag.app.inventory.location.log.HashCodeInfoStorageAreaStrategyImpl<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\">Dane dostawy zlece\u0144 dystrybucyjnych<\/td>\n<td style=\"border-style: outset; height: 46px;\">com.cisag.app.multiorg.log.HashCodeInfoDistributionOrderDeliveryDataInfoImpl<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\">Ustawienia wydruku zlece\u0144 dystrybucyjnych<\/td>\n<td style=\"border-style: outset; height: 46px;\">com.cisag.app.multiorg.log.HashCodeInfoDistributionOrderOutputSettingsImpl<\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\">Ustawienia wydruku zlece\u0144 produkcyjnych<\/td>\n<td style=\"border-style: outset; height: 46px;\">com.cisag.app.production.log.HashCodeInfoProductionOrderOutputSettingsImpl<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"border-style: outset; height: 23px;\">Warunki i formu\u0142y<\/td>\n<td style=\"border-style: outset; height: 23px;\">com.cisag.app.production.parser.log.HashCodeInfoParameterizedStatementImpl<\/td>\n<\/tr>\n<tr style=\"height: 70px;\">\n<td style=\"border-style: outset; height: 70px;\">Dane zam\u00f3wienia dostawcy<\/td>\n<td style=\"border-style: outset; height: 70px;\"><span style=\"color: #000000;\">com.cisag.app.purchasing.log.HashCodeInfoOrderSupplierDataInfoImpl<\/span><\/td>\n<\/tr>\n<tr style=\"height: 46px;\">\n<td style=\"border-style: outset; height: 46px;\">Ustawienia wydruku zam\u00f3wie\u0144 zakupu<\/td>\n<td style=\"border-style: outset; height: 46px;\">com.cisag.app.purchasing.log.HashCodeInfoPurchaseOrderOutputSettingsImpl<\/td>\n<\/tr>\n<tr style=\"height: 70px;\">\n<td style=\"border-style: outset; height: 70px;\">Dane zam\u00f3wienia klienta<\/td>\n<td style=\"border-style: outset; height: 70px;\"><span style=\"color: #000000;\">com.cisag.app.sales.log.HashCodeInfoOrderCustomerDataInfoImpl<\/span><\/td>\n<\/tr>\n<tr style=\"height: 70px;\">\n<td style=\"border-style: outset; height: 70px;\">Ustawienia wydruku zam\u00f3wie\u0144 sprzeda\u017cowy<\/td>\n<td style=\"border-style: outset; height: 70px;\">com.cisag.app.sales.log.HashCodeInfoSalesOrderOutputSettingsImpl<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">\u015acie\u017cka implementacji Hook Contract jest nast\u0119puj\u0105ca:<br \/>\n&#8211; Nazwa przestrzeni nazw obiektu biznesowego typu HashCode<br \/>\n&#8211; Prefiks <em>HashCodeInfo<\/em><br \/>\n&#8211; Nazwa obiektu biznesowego<br \/>\n&#8211; Sufiks <em>Impl<\/em><\/div><\/section>\n<h4 id=\"cechy-szczegolne\" >Cechy szczeg\u00f3lne<\/h4>\n<p>Wszystkie obiekty biznesowe HashCode s\u0105 zarz\u0105dzane przez klas\u0119 <code>HashCodeLogic<\/code>. W tym celu wymagany jest adapter.<br \/>\nAdapter ten musi posiada\u0107 t\u0119 sam\u0105 warto\u015b\u0107 CisModuleId co implementacja Hook Contract. Wyj\u0105tkiem jest <code>DefaultHashCodeAdapter<\/code> (w przestrzeni nazw com.cisag.app.general.hook.log) &#8211; ten adapter mo\u017ce by\u0107 u\u017cywany przez dowoln\u0105 implementacj\u0119 Hook Contract: HashCode.<br \/>\nNast\u0119puj\u0105ce pierwotne typy danych s\u0105 obs\u0142ugiwane przez klas\u0119 DefaultHashCodeAdapter:<\/p>\n<ul>\n<li>Binary<\/li>\n<li>GUID<\/li>\n<li>boolean<\/li>\n<li>byte<\/li>\n<li>char<\/li>\n<li>liczba dziesi\u0119tna<\/li>\n<li>int<\/li>\n<li>long<\/li>\n<li>short<\/li>\n<li>String<\/li>\n<li>Valueset<\/li>\n<\/ul>\n<p>Obs\u0142ugiwane s\u0105 r\u00f3wnie\u017c z\u0142o\u017cone typy danych (Part), kt\u00f3re zawieraj\u0105 tylko okre\u015blone pierwotne typy danych i tablice.<\/p>\n<p>W przypadku tworzenia nowego obiektu HashCode Business, kt\u00f3ry zawiera tylko okre\u015blone pierwotne typy danych, nale\u017cy u\u017cy\u0107 adaptera DefaultHashCodeAdapter jako adaptera.<\/p>\n<section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">Atrybut nale\u017cy do\u0142\u0105czy\u0107 do obiektu HashCode Business tylko wtedy, gdy dana kombinacja danych wyst\u0119puje cz\u0119sto. Dobrym wyborem s\u0105 na przyk\u0142ad ustawienia i kombinacje danych podstawowych, kt\u00f3re tylko w niekt\u00f3rych przypadkach r\u00f3\u017cni\u0105 si\u0119 indywidualnie, ale zazwyczaj pozostaj\u0105 takie same.<\/p>\n<p>Dane operacyjne, kt\u00f3re np. zale\u017c\u0105 od bie\u017c\u0105cej daty, z regu\u0142y nie s\u0105 odpowiednie \u2013 dlatego typy danych takie jak byte, liczba dziesi\u0119tna, int, long, short oraz String powinny by\u0107 u\u017cywane wy\u0142\u0105cznie do ustawie\u0144, a nie do danych, kt\u00f3re zmieniaj\u0105 si\u0119 np. z ka\u017cd\u0105 pozycj\u0105 dokumentu (np. ilo\u015bci i warto\u015bci).<\/div><\/section>\n","protected":false},"author":28,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"footnotes":""},"class_list":["post-9727","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-definicje-hook-contract"],"_links":{"self":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb\/9727","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb"}],"about":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/comments?post=9727"}],"version-history":[{"count":5,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb\/9727\/revisions"}],"predecessor-version":[{"id":30621,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb\/9727\/revisions\/30621"}],"wp:attachment":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/media?parent=9727"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}