UPDATE _orink_barcode SET tetel_kod = 500000000 + cikkid;
UPDATE _orink_pricelist SET tetel_kod = 500000000 + cikkid;
UPDATE _orink_products SET tetel_kod = 500000000 + cikkid;
UPDATE _orink_stock SET tetel_kod = 500000000 + cikkid;
UPDATE _orink_itemgroup SET id = CAST(azonosito as integer);

UPDATE _orink_itemgroup oi SET fajta2 =
   (SELECT oit.id FROM _orink_itemgroup oit WHERE oit.cikkcsoportkod = SUBSTRING(oi.cikkcsoportkod FROM 1 FOR 2));
UPDATE _orink_itemgroup oi SET fajta3 =
   (SELECT oit.id FROM _orink_itemgroup oit WHERE oit.cikkcsoportkod = SUBSTRING(oi.cikkcsoportkod FROM 1 FOR 4))
   WHERE LENGTH(cikkcsoportkod) > 2 ;
UPDATE _orink_itemgroup oi SET fajta4 =
   (SELECT oit.id FROM _orink_itemgroup oit WHERE oit.cikkcsoportkod = SUBSTRING(oi.cikkcsoportkod FROM 1 FOR 6))
   WHERE LENGTH(cikkcsoportkod) > 4 ;
UPDATE _orink_itemgroup oi SET fajta5 =
   (SELECT oit.id FROM _orink_itemgroup oit WHERE oit.cikkcsoportkod = SUBSTRING(oi.cikkcsoportkod FROM 1 FOR 8))
   WHERE LENGTH(cikkcsoportkod) > 6 ;

-- ************ csoporthibák korrigálása
DELETE FROM _orink_itemgroup WHERE fajta2 is null; --csoport hibás tételek törlése
DELETE FROM _orink_itemgroup WHERE cikkcsoportkod = 'SZOLGA'; --szolgáltatás csoport törlése
UPDATE _orink_itemgroup SET fajta5 = null WHERE (not(fajta5 is null)) and (fajta4 is null); --hibás alábontások miatti csoport visszavonás
UPDATE _orink_itemgroup SET fajta4 = null WHERE (not(fajta4 is null)) and (fajta3 is null); --hibás alábontások miatti csoport visszavonás

--UPDATE _orink_products SET fajta5 = null WHERE (not(fajta5 is null)) and (fajta4 is null);

-- ************* üres fajtakódok betöltése
UPDATE _orink_itemgroup
   SET fajta2 = (SELECT kod FROM tetel_fajtak WHERE fajta_kod = 2 AND ures = 1 LIMIT 1)
 WHERE (fajta2 is null);
UPDATE _orink_itemgroup
   SET fajta3 = (SELECT kod FROM tetel_fajtak WHERE fajta_kod = 3 AND ures = 1 LIMIT 1)
 WHERE (fajta3 is null);
UPDATE _orink_itemgroup
   SET fajta4 = (SELECT kod FROM tetel_fajtak WHERE fajta_kod = 4 AND ures = 1 LIMIT 1)
 WHERE (fajta4 is null);
UPDATE _orink_itemgroup
   SET fajta5 = (SELECT kod FROM tetel_fajtak WHERE fajta_kod = 5 AND ures = 1 LIMIT 1)
 WHERE (fajta5 is null);

-- ************* fajtakód, lánckapcsolás feltöltése
UPDATE _orink_itemgroup SET fajta_kod = 5 WHERE fajta2 <> 0 AND fajta3 <> 0 AND fajta4 <> 0 AND fajta5 <> 0;
UPDATE _orink_itemgroup SET fajta_kod = 4 WHERE fajta2 <> 0 AND fajta3 <> 0 AND fajta4 <> 0 AND fajta5 > 1000000;
UPDATE _orink_itemgroup SET fajta_kod = 3 WHERE fajta2 <> 0 AND fajta3 <> 0 AND fajta4 > 1000000 AND fajta5 > 1000000;
UPDATE _orink_itemgroup SET fajta_kod = 2 WHERE fajta2 <> 0 AND fajta3 > 1000000 AND fajta4 > 1000000 AND fajta5 > 1000000;

UPDATE _orink_itemgroup oi SET lanc_kapcsolt_kod = 202 WHERE oi.fajta2 < 1000000; --nagyker alábontotása
UPDATE _orink_itemgroup oi SET lanc_kapcsolt_kod = oi.fajta2 WHERE oi.fajta3 < 1000000;
UPDATE _orink_itemgroup oi SET lanc_kapcsolt_kod = oi.fajta3 WHERE oi.fajta4 < 1000000;
UPDATE _orink_itemgroup oi SET lanc_kapcsolt_kod = oi.fajta4 WHERE oi.fajta5 < 1000000;

-- ************ orink tétel adattábla feltöltése fajtakódokkal
UPDATE _orink_products op SET (fajta2, fajta3, fajta4, fajta5) =
   (SELECT oit.fajta2, oit.fajta3, oit.fajta4, oit.fajta5 FROM _orink_itemgroup oit WHERE oit.cikkcsoportkod = op.cikkcsoportkod);

-- ************ tételek számolása, felesleges csoportok törlése
UPDATE _orink_itemgroup
   SET tetelek = (SELECT count(*) FROM _orink_products WHERE _orink_products.fajta2 = _orink_itemgroup.id)
 WHERE fajta_kod = 2;
UPDATE _orink_itemgroup
   SET tetelek = (SELECT count(*) FROM _orink_products WHERE _orink_products.fajta3 = _orink_itemgroup.id)
 WHERE fajta_kod = 3;
UPDATE _orink_itemgroup
   SET tetelek = (SELECT count(*) FROM _orink_products WHERE _orink_products.fajta4 = _orink_itemgroup.id)
 WHERE fajta_kod = 4;
UPDATE _orink_itemgroup
   SET tetelek = (SELECT count(*) FROM _orink_products WHERE _orink_products.fajta5 = _orink_itemgroup.id)
 WHERE fajta_kod = 5;

UPDATE _orink_itemgroup
   SET torolve = 0;

UPDATE _orink_itemgroup
   SET torolve = 1 WHERE (tetelek = 0);

-- ************* csoport betöltés a fő adatbázisba
INSERT INTO tetel_fajtak
    (kod, fajta_kod, lang_0000040e, lanc_kapcsolt_kod, ures, orink)
    (SELECT o.id as kod, o.fajta_kod, REPLACE(o.cikkcsoportnev,'▲','^'),
            o.lanc_kapcsolt_kod, 0 as ures, 1
       FROM _orink_itemgroup o
       LEFT JOIN tetel_fajtak tf ON tf.kod = o.id
      WHERE o.torolve = 0
        AND tf.kod is null);

-- ************ mennyiségi egységek rendezése
INSERT INTO mennyisegi_egyseg (lang_0000040e, nav_code, c_userid)
  (SELECT data.mee, 'OWN', 'orink'
     FROM
       (SELECT trim(me) mee
          FROM _orink_products
         GROUP BY trim(me)) data
     LEFT JOIN mennyisegi_egyseg me ON me.lang_0000040e = data.mee
    WHERE me.kod is null);

-- ************ mennyiségi egységek beállítása az orink táblában
UPDATE _orink_products op SET mee_kod = (SELECT me.kod FROM mennyisegi_egyseg me WHERE me.lang_0000040e = trim(op.me));

-- ************ orink tételek betöltése
INSERT INTO tetel
(kod, lang_0000040e, sor2, sor3, sor4,
 leiras, 
 fajta1, fajta2, fajta3, fajta4, fajta5,
 tetel_tipus, afa_kulcs, tetel_azonosito_kod, mennyisegi_egyseg,
 jellemzo_beszallito, tizedesjegy, arlistaban, utolsobeszerzesiar,
 hasznalatban, webboltban,
 orink)
(SELECT o.tetel_kod, karaktermoderator(o.cikknev), o.gycikkszam, o.cikkszam, o.gyarto,
    karaktermoderator(replace(
       replace(
          replace(
                 replace(
                    replace(
                       SUBSTRING(o.leiras FOR 5000),
                    '&lt;', '<'),
                 '&gt;', '>'),
              '&amp;', '&'),
           '&nbsp;', ' '),
        '&reg;', '®'
        )) as leiras,
       202 as fajta1, o.fajta2, o.fajta3, o.fajta4, o.fajta5,
       1 as tetel_tipus, 1 as afa_kulcs, o.kshszam as tetel_azonosito_kod, mee_kod as mennyisegi_egyseg,
       2471 as jellemzo_beszallito, 2 as tizedesjegy, 1 as arlistaban, coalesce(op.listaar,0) as utolsobeszerzesiar,
       1 as hasznalatban, 1 as webboltban, 1
  FROM _orink_products o
  LEFT JOIN _orink_pricelist op ON op.tetel_kod = o.tetel_kod
  LEFT JOIN tetel t ON t.kod=o.tetel_kod AND t.orink=1
  WHERE t.kod is null);

-- ************* készlet frissítése (csak 1/0 mert pontos mennyiséget nem ismerünk, csak van/nics adatunk)
UPDATE tetel_raktar
  SET keszlet = coalesce((SELECT 1 FROM _orink_stock os WHERE os.tetel_kod = tetel_raktar.tetel_kod),0),
      foglalt = 0
  WHERE tetel_raktar.raktar_kod = 5
    AND tetel_raktar.tetel_kod in (SELECT kod FROM tetel WHERE orink = 1);

UPDATE tetel_raktar
  SET szabad = keszlet
  WHERE tetel_raktar.raktar_kod = 5
    AND tetel_raktar.tetel_kod in (SELECT kod FROM tetel WHERE orink = 1);

-- ************ árfrissítés
UPDATE tetel_egysegar te
  SET egysegar = ( (SELECT listaar FROM _orink_pricelist o WHERE o.tetel_kod = te.tetel_kod)*1.3 ),
      egysegar_brutto = ( ( (SELECT listaar FROM _orink_pricelist o WHERE o.tetel_kod = te.tetel_kod)*1.3 ) *1.27)
  WHERE ( te.egysegar_kod = 1 )
    AND ( te.tetel_kod in ( SELECT kod FROM tetel WHERE ( orink=1 ) ) )
    AND (not(SELECT listaar FROM _orink_pricelist o WHERE o.tetel_kod = te.tetel_kod AND o.listaar > 0) is null);

-- *********** vonalkód frissítés (csak elsődleges vonalkód kerül a rendszerbe)
UPDATE tetel t
  SET vonalkod = (SELECT vonalkod FROM _orink_barcode o WHERE o.tetel_kod = t.kod ORDER BY o.elsean, o.azonosito LIMIT 1)
  WHERE ( t.orink=1 )
    AND (not(SELECT vonalkod FROM _orink_barcode o WHERE o.tetel_kod = t.kod ORDER BY o.elsean, o.azonosito LIMIT 1) is null);

-- *********** megszűnkt orink tételek inaktiválása
UPDATE tetel
  SET hasznalatban = 0
  WHERE (tetel.orink=1)
    AND ((SELECT count(*) FROM _orink_products o WHERE tetel.kod=o.tetel_kod) = 0);

-- *********** termék adatok frissítése
UPDATE tetel
  SET
(kod, lang_0000040e, sor2, sor3, sor4,
 leiras,
 fajta1, fajta2, fajta3, fajta4, fajta5,
 tetel_tipus, afa_kulcs, tetel_azonosito_kod, mennyisegi_egyseg,
 jellemzo_beszallito, tizedesjegy, arlistaban, utolsobeszerzesiar,
 hasznalatban, webboltban,
 orink)
 = (SELECT o.tetel_kod, karaktermoderator(o.cikknev), o.gycikkszam, o.cikkszam, o.gyarto,
    karaktermoderator(replace(
       replace(
          replace(
                 replace(
                    replace(
                       SUBSTRING(o.leiras FOR 5000),
                    '&lt;', '<'),
                 '&gt;', '>'),
              '&amp;', '&'),
           '&nbsp;', ' '),
        '&reg;', '®'
        )) as leiras,
       202 as fajta1, o.fajta2, o.fajta3, o.fajta4, o.fajta5,
       1 as tetel_tipus, 1 as afa_kulcs, o.kshszam as tetel_azonosito_kod, mee_kod as mennyisegi_egyseg,
       2471 as jellemzo_beszallito, 2 as tizedesjegy, 1 as arlistaban, coalesce(op.listaar,0) as utolsobeszerzesiar,
       1 as hasznalatban, 1 as webboltban, 1
     FROM _orink_products o
     LEFT JOIN _orink_pricelist op ON op.tetel_kod = o.tetel_kod
     WHERE tetel.kod=o.tetel_kod)
  WHERE (tetel.orink=1)
    AND ((SELECT count(*) FROM _orink_products o WHERE tetel.kod=o.tetel_kod) = 1);