 SET NAMES UTF8;

DELIMITER $$

DROP PROCEDURE IF EXISTS `ht_clone_tools`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `ht_clone_tools`(
IN _MODE VARCHAR(200),
IN _SRCGUID VARCHAR(50),
IN _KontrGuid VARCHAR(50),
IN _ParamA VARCHAR(250),
IN _ParamB VARCHAR(250),
IN _ParamC VARCHAR(250)
)

/*
call ht_clone_tools('CLONE_OP','guid','','','','');
call ht_clone_tools('CLONE_ZM','guid','','','','');
call ht_clone_tools('CLONE_ZM_TO_GUID','guid','','','newguid','');
call ht_clone_tools('CLONE_ZMZP_TO_ZMZA','guidZP','','','','');
call ht_clone_tools('CLONE_ZMZP_TO_RCNG','guidZP','','','','');
call ht_clone_tools('MAG_CLEAN','','',rodzaj,zmagazynu,domagazynu);
call ht_clone_tools('CLONE_FROM_OP','srcguid','','','dstguid','');
*/

SPROC: BEGIN
DECLARE _GUID VARCHAR(38);
DECLARE _GUID2 VARCHAR(38);
DECLARE CPzPW INTEGER;
DECLARE _NrMag INTEGER;
DECLARE _Mag, _MagDo, _Calc_ver INTEGER;
DECLARE _Kancel BOOLEAN;
DECLARE _Key_Src, _Key_Dest VARCHAR(38);
DECLARE _Ile INTEGER;
DECLARE _rv INTEGER;
DECLARE _rodzaj INTEGER;
DECLARE _DATA DATE;

-- private mode:

-- SET cSTZS = 0;
SET CPzPW = 13;
SET @Session.globals.Owner = _GetAppOwner();

IF _MODE = 'CLONE_FROM_OP' THEN
     UPDATE opng src,opng_e dst SET 
       dst.kontrguid=src.kontrguid,
       dst.platnikguid=src.platnikguid,
       dst.datawystaw=src.datawystaw,
       dst.datawplywu=src.datawplywu,
       dst.datasprzed=src.datasprzed,
       dst.dataplatnosci=src.dataplatnosci,
       dst.ugrpguid=src.ugrpguid,
       dst.opis=src.opis,
       dst.nrdokfin=src.nrdokfin,
       dst.sposobplatn=src.sposobplatn,
       dst.waluta=src.waluta,
       dst.waluta_rozliczen=src.waluta_rozliczen,
       dst.statusEmail=src.statusEmail,
       dst.idnrachunku=src.idnrachunku,
       dst.kontrsymbol=src.kontrsymbol,
       dst.kontrnazwa=src.kontrnazwa,
       dst.kontrnip=src.kontrnip,
       dst.kontradres=src.kontradres
       
     WHERE src.guid=_SRCGUID AND dst.guid=_ParamB;
END IF;

/* *********************************************************************
    Klonowanie adresow z zmng -> zmng  / zmng -> opng / opng -> opng
    CALL ht_clone_tools('CLONE.ADDR', 'Src_guid', 'Dest_guid', 'zmng', 'zmng', 'CLEAR.before'); -- klonowanie ZAM
    CALL ht_clone_tools('CLONE.ADDR', 'Src_guid', 'Dest_guid', 'zmng', 'opng', 'CLEAR.before'); -- Realizacja ZAM
    CALL ht_clone_tools('CLONE.ADDR', 'Src_guid', 'Dest_guid', 'opng', 'opng', 'CLEAR.before'); -- klonowanie DOK
**********************************************************************/

IF _MODE = 'CLONE.ADDR' THEN
    IF @session.globals.DOC_with_AdrLink IS NULL THEN
        CALL _Globals_Get('DOC_with_AdrLink', @session.globals.DOC_with_AdrLink, FALSE);
    END IF;
    
    IF NOT @session.globals.DOC_with_AdrLink THEN
        LEAVE SPROC;
    END IF;
    SET _Key_Src = _SRCGUID, _Key_Dest = _KontrGuid;
    
    IF _ParamC = 'CLEAR.before' THEN
        CALL geo_int_adr_link_NED('REC.DELETE', '', _Key_Dest, '*', '*', '', '', '', '', '', '');
    END IF;
    
    CALL geo_int_adr_link_NED('REC.CLONE', '', _Key_Src, _ParamA, '*', '', _Key_Dest, _ParamB, '*', '', '');  -- klonowanie adresow zam X do dokumentu _Key (realizacja)
END IF;

/*
opcja podziel (rozbij) na raty w rozrachunkach wywoływana w rozrachunkach
CALL ht_clone_tools('tworz.rozrach.init', 'guid', 'ile', '', '', '');
*/

IF _MODE = 'tworz.rozrach.init' THEN
    SET @ile=_paramA;
    SET @row=0;
    
    DROP TABLE IF EXISTS t_row;
    CREATE TEMPORARY TABLE  t_row (
        lp INT(1) NOT NULL DEFAULT '0',
        nrdokfin VARCHAR(30) DEFAULT NULL,
        nrwewn VARCHAR(20) DEFAULT NULL,
        datawystaw DATE DEFAULT NULL,
        dataplatnosci DATE DEFAULT NULL,
        CkwotaWal DOUBLE(16,4) DEFAULT '0.0000',
        opis VARCHAR(250) NOT NULL DEFAULT '',
        guid VARCHAR(38),
        akcept INT
    );

    WHILE (@row < @ile) DO
        INSERT INTO t_row SELECT @row+1,nrdokfin,nrwewn,datawystaw,dataplatnosci,CkwotaWal/@ile,opis,guid,
        IF(akcept_platn_kwota=CkwotaWal,1,0) FROM opng WHERE guid=_SRCGUID;
        SET @row:=@row+1;
    END WHILE;
END IF;

IF _MODE = 'tworz.rozrach.apply' THEN
    ALTER TABLE t_row ADD roz_guid VARCHAR(38);
    SELECT guid INTO _GUID FROM t_row LIMIT 1;
    UPDATE t_row SET roz_guid=UUID();
    INSERT INTO opng (CWN,rodzaj,rodzaj_typ,rozrachunek,nrdokfin,nrwewn,datasprzed,datawystaw,datawplywu,kontrsymbol,brutto,
            dataplatnosci,dataplatnosci_oczekiwana,
            guid,gruparozrach,kontrnazwa,waluta,waluta_rozliczen,kurs,kurs_rozliczen,
            kontradres,kontrguid,CKwota,CkwotaWal,nettowal,
            opis,platnikGUID,ugrpGUID,info4,akcept_platn_kwota,katcol0,katcol1,katcol2,katcol3,katcol4,
            info6,zlecenieguid,family_guid)
    SELECT o.CWN,IF(o.CWN,43,44),o.rodzaj_typ,1,t.nrdokfin,'',t.datawystaw,t.datawystaw,t.datawystaw,o.kontrsymbol,t.CkwotaWal,
            t.dataplatnosci,t.dataplatnosci,
            t.roz_guid,3,o.kontrnazwa,o.waluta,o.waluta_rozliczen,o.kurs,o.kurs_rozliczen,
            o.kontradres,o.kontrguid,round(t.CKwotaWal*o.kurs_rozliczen,2),t.CKwotaWal,t.CKwotaWal,
            t.opis,o.platnikGUID,o.ugrpguid,o.guid,IF(t.akcept=1,t.CKwotaWal,0),
            o.katcol0,o.katcol1,o.katcol2,o.katcol3,o.katcol4,o.info6,o.zlecenieguid,o.family_guid
    FROM t_row t 
    LEFT JOIN opng o ON o.guid=t.guid;
    
    IF @session.globals.Owner='CRIST' THEN
    -- zerujemy wyjsciowy dokument harmonogramowy - rozliczone nietykalne
        UPDATE opng SET 
            uwagi=CONCAT('Kwota przed podzialem: ',_VarStr(Ckwotawal)),
            ckwota=0,ckwotawal=0,brutto=0 
        WHERE rodzaj=44 AND rodzaj_typ=1 AND CRozliczone=0 AND guid=_GUID ;
    END IF;
    
    DROP TABLE IF EXISTS t_row;
END IF;

        
IF _MODE = 'CLONE_ZMZP_TO_RCNG' THEN    
    SELECT count(*) INTO @ilepoz FROM zmpo WHERE idnng=_SRCGUID;
    IF @ilepoz>0 THEN
      SELECT uuid() INTO _GUID;
      
      INSERT INTO rcng (guid,nazwa,symbol,data_receptury,opis) 
      SELECT _GUID,CONCAT('Klon na podstawie zlecenia ',n.nrzamw,' ',p.towrnazwa),CONCAT('!',p.towrsymb),current_date,CONCAT('Klon na podstawie zlecenia ',n.nrzamw) 
      FROM zmpo p, zmng n WHERE p.magtyp=0 AND n.guid=p.idnng and n.guid=_SRCGUID ORDER BY lp LIMIT 1;
      
      INSERT INTO rcpo (guid,idnng,idntowr,przychod,ilosc,cena_kalulacyjna,typ_zasobu,towrsymb,lp,jednostka,jednostka_prod,opis,magazyn,priorytet) 
      SELECT uuid(),_GUID,idntowr,magtyp=0,ilosc,cenanet,0,towrsymb,lp,jednostka,jednostka,towrnazwa,idnmagazyn,1 FROM zmpo WHERE idnng=_SRCGUID;
      
      SELECT CONCAT('OK utworzono recepturę - ilość pozycji: ',@ilepoz) as status;
    ELSE
      SELECT CONCAT('Brak pozycji do tworzenia receptury') as status;
    END IF;
END IF;
-- czesc wspolna dla obu modow

IF _MODE IN ('CLONE_OP_TO_MGRW','CLONE_OP_TO_MGWZ','CLONE_OP_TO_MGMM') THEN
    SET _Ile = 0;
    SET _ParamC=IFNULL(_ParamC, current_date);
        
    SELECT COUNT(DISTINCT n.domagazynu) AS ile INTO _Ile FROM tmp_guidy_opng t, opng n WHERE t.guid = n.guid;
       
    IF _Ile > 1 THEN
        select 1 AS status,  Concat("Zaznaczono dokumenty o różnych magazynach") as info;
        LEAVE SPROC;
    END IF;   

    SELECT COUNT(*) AS ile INTO _Ile FROM tmp_guidy_opng t, opng n WHERE t.guid = n.guid and n.domagazynu = 0;
       
    IF _Ile > 0 THEN
        select 1 AS status,  Concat("Wśród zaznaczonych dokumentów są dokumenty rozchodowe") as info;
        LEAVE SPROC;
    END IF;   
    IF (@session.globals.Owner = 'SEVENET') THEN
        SELECT COUNT(DISTINCT n.katcol0) AS ile INTO _Ile FROM tmp_guidy_opng t, opng n WHERE t.guid = n.guid;
        IF _Ile > 1 THEN
            select 1 AS status,  Concat("Zaznaczono dokumenty o różnych zleceniach") as info;
            LEAVE SPROC;
        END IF;   
        SELECT COUNT(*) AS ile INTO _Ile FROM tmp_guidy_opng t, oppo o, oppo r WHERE t.guid = o.idnoper and r.guid_dostawy = o.guid;
        IF _Ile > 0 THEN
            select 1 AS status,  Concat("Wśród zaznaczonych dokumentów są już dokumenty podpięte do wydań") as info;
            LEAVE SPROC;
        END IF;   
    END IF; -- SEVENET
    
    SET _Mag = _varINT(_ParamA);
    CALL ht_clone_tools('CLONE_OP_SEL_1', _SRCGUID, _KontrGuid, _ParamA, _ParamB, 'DOSTAWY');
    SELECT domagazynu,guid INTO _NrMag,_GUID FROM t_opng;

    UPDATE t_opng t SET
        t.kontridn = NULL, t.kontrGUID = '', t.kontrnazwa = '', t.kontrsymbol = '', t.kontradres = '',
        t.kontrklasacenowa = 1, t.kontrnip = '', t.kontrpodzialnip = 0, t.kontrguid = '',
        t.platnikguid = '', t.akwizytorguid = '',
        t.paragon_printed = 0,    t.rodzaj = _ParamB, domagazynu = IF(_ParamB=9,_Mag,0), zmagazynu = _NrMag,     
        t.rv_id=0, t.grupaoper = 2, t.fvrudowz=0, t.cwn=0, t.rozrachunek=0,
        t.wzordekr='', t.datawystaw = _varDATE(_ParamC), t.datasprzed = _varDATE(_ParamC), t.datawplywu = _varDATE(_ParamC),t.datadekretacji='',
        t.akcept_platn_kwota = 0, t.akcept_platn=0,t.wystawiono_note_ods = 0,
        t.uwagi = '',t.statusEmail=0,
        t.statusKSeF=0,t.numerKSeF='',t.ksef_remotetime=NULL;
    
    IF _MODE IN ('CLONE_OP_TO_MGRW','CLONE_OP_TO_MGWZ') THEN
        UPDATE t_opng t SET t.nrdokfin='';
    END IF;

    IF _MODE = 'CLONE_OP_TO_MGWZ' THEN
        -- DLA SEVENETU zerujemy wartosci pozycji. w pozniejszym terminie moze bedzie trzeba ograniczyc to tylko dla sevenetu        
        UPDATE t_oppo p SET p.cenanet=0,p.wartnet=0,p.wartvat=0,p.wartbrt=0,p.cenabrt=0,p.wartnetWal=0,    p.wartBrtWal=0;
    END IF;

    UPDATE t_oppo p, t_opng t 
    SET    p.zmagazynu = t.zmagazynu, p.domagazynu = t.domagazynu, p.rodzaj = t.rodzaj    
    WHERE p.idnoper = t.guid;

    INSERT INTO opng SELECT * FROM  t_opng;
    INSERT INTO oppo SELECT * FROM  t_oppo;
    
    CALL oper_Delta_Dostawy_Update('init', 'OP', _GUID, '', '', '');
    CALL oper_Delta_Dostawy_Update('update', 'OP', _GUID, '', '', '');
    
    SELECT 0 AS status,  Concat("Poprawnie utworzono dokument ", o.nazwa) as info FROM operdoc o WHERE rodzaj = _ParamB;
END IF;

IF _MODE = 'CLONE_OP_TO_MGPW' THEN
    -- kontrola, czy wszystkie zaznaczone operacje sa typu _ParamA (ST ZS) - jezeli nie, to przerywamy dzialanie i ustawiamy komunikat zwrotny
    SET _Ile = 0;
    SELECT COUNT(*) AS ile INTO _Ile FROM tmp_guidy_opng t, opng n WHERE t.guid = n.guid AND n.rodzaj <> _ParamA;
    IF _Ile > 0 THEN
        select 1 AS status,  Concat("Zaznaczono dokumenty inne ", o.nazwa) as info from operdoc o where rodzaj = _ParamA;
        LEAVE SPROC;
    END IF;   
       
    CALL ht_clone_tools('CLONE_OP_SEL', _SRCGUID, _KontrGuid, _ParamA, _ParamB, _ParamC);
    
    -- dla MG PW ustawienie kontrahenta nie ma sensu, wiec czyscimy odp. dane
    SELECT domagazynu INTO _NrMag FROM t_opng;
    
    UPDATE t_opng t SET
        t.kontridn = NULL, t.kontrGUID = '', t.kontrnazwa = '', t.kontrsymbol = '', t.kontradres = '',
        t.kontrklasacenowa = 1, t.kontrnip = '', t.kontrpodzialnip = 0, t.kontrguid = '',
        t.platnikguid = '', t.akwizytorguid = '',t.paragon_printed = 0,
        t.rodzaj = CPzPW, domagazynu = zmagazynu, zmagazynu = _NrMag,     -- zamieniamy magazyny 
        t.rv_id=0, t.grupaoper = 2, t.fvrudowz=0, t.cwn=0, t.rozrachunek=0,t.datadekretacji='',
        t.akcept_platn_kwota = 0, t.akcept_platn=0,t.wystawiono_note_ods = 0, t.roznice_kursowe=0,t.koszt_nabycia=0,
        t.statusKSeF=0,t.numerKSeF='',t.ksef_remotetime=NULL
        ;
    -- ustawiamy magazyny na podst. naglowka (gdzie zostały odwrocone)    
    UPDATE t_oppo p, t_opng t 
    SET    p.zmagazynu = t.zmagazynu, p.domagazynu = t.domagazynu, p.rodzaj = t.rodzaj    
    WHERE p.idnoper = t.guid;
        
    -- wstawiamy dane do opng i oppo
    INSERT INTO opng SELECT * FROM  t_opng;
    INSERT INTO oppo SELECT * FROM  t_oppo;
        
    SELECT 0 AS status,  Concat("Poprawnie utworzono dokument ", o.nazwa) AS info FROM operdoc o WHERE rodzaj = _ParamB;
END IF;

IF _MODE = 'CLONE_OP_SEL' THEN
    IF @_handle_UserGUID IS NULL THEN
        CALL _Get_Actual_handle_rec_User_Params('', @SYSTEM.Client.Session.GUID, @_handle_UserGUID, @_handle_UserLogin, @_handle_UserUgrpGUID, '', '', '', '', '');
    END IF;
    
    DROP TABLE IF EXISTS t_opng;
    DROP TABLE IF EXISTS t_oppo;
    -- UWAGA UWAGA TA PROCEDURA DOKONUJE GRUPOWANIA PO TOWARACH!
    
    CREATE TEMPORARY TABLE t_opng 
    SELECT n.* FROM opng n, tmp_guidy_opng t
    WHERE n.guid = t.guid  -- _SRCGUID;
    LIMIT 1;
    
    -- przygotowanie GUIDa nowego wpisu do opng
    SET _GUID = concat('CL', uuid());
    
    UPDATE t_opng t SET  
    t.idn = 0, t.tymczasowa = 1, t.idnattach = t.GUID, -- przechowanie guida dokumentu zrodlowego, z ktorego powstaje klon
    t.guid = _GUID,  -- concat('HT', uuid())
    t.nrdokmag='*', t.nrwewn='*', t.nrdokfin=concat(t.nrdokfin,'*'), t.zaksiegowana = 0,
    t.statusEDI=0,t.status=0,t.status_obieg=0,t.status_przelewu=0,t.statusEmail=0,t.wyslano_przelew=0,
    t.crozliczone = 0, t.crozliczonewal = 0, t.ckwota=0, t.ckwotawal=0, 
    t.create_At = NOW(),t.localtime = now(), t.remotetime = NULL, t.idnuser = ifnull(@_handle_UserLogin, t.idnuser),
    -- celowo zerujemy, zeby bylo widac, ze trzeba wejsc w edycje i wtedy program przeliczy poprawnie te kwoty na podst. pozycji
    netto = 0.00, vat = 0.00, brutto = 0.00,  
    nettowal = 0.00, bruttowal = 0.00,t.statusEmail=0, 
    t.statusKSeF=0,t.numerKSeF='',t.ksef_remotetime=NULL
    ;
    
    CREATE TEMPORARY TABLE t_oppo LIKE oppo;
    ALTER  TABLE t_oppo DROP COLUMN idn;
    ALTER  TABLE t_oppo ADD COLUMN idn integer not null default 0 first;
    
    INSERT INTO t_oppo
    (idn, idnoper, idnwz, idnzm, idnpr, aidnkr, rodzaj, zrealizowana, zmagazynu, domagazynu, datasprzed, datawystaw, datawplywu, symboper, grupaoper, 
      kontridn, idntowr, towrsymb, towrnazwa, usluga, ilosc, idncennik, cenanet, rabat, wartnet, idnvat, wartvat, wartbrt, cenabrt, cenamag, cenaewid, 
      wartmag, iloscjest, wartnetjest, wartvatjest, wartbrtjest, inwnbo, inwnnadw, inwnnied, iloscpozost, wartpozost, usedbylififo, iloscbylo, wartmagbylo,
      lp, akcyzastawka, grupuj, Jednostka, wspolplatnosc, 
      kat0, kat1, kat2, kat3, kat4, kat5, kat6, kat7, kat8, kat9, kurs, tag, tymczasowa, iloscdo, GUID, GUIDKorPo, GUIDzm, `localtime`,
      remotetime, ilosczreal, cenanetWal, cenanetzRabWal, wartnetWal, zysk, ilewopakowaniu, GUID_ZmPo_MM, prowizja, idnClo, wartclo, TypSymbolow,
      rodzaj_przeliczenia, koszt_nabycia, stawkacla, cena_minimalna, pkwiu, idnoperfin, recepturaGUID, nrseryjny, ST_zakup, ST_operF, ST_operP, 
      waga, waga_jedn, ST_idntowr, exported, uwagi, rcngGUID, GUID_dostawy, termin_waznosci, wydano, info, wydanie_rezerwacja, osobaGUID, CenaNetWalzRab,
      towrnazwa2, uwagi2, rodzaj_typ, waga_pozycji, wymiar_x, wymiar_y, wymiar_z, ilosc_L_do_przeliczen, ilosc_M_do_przeliczen, id_przelicznika, oplata_produktowa,
      min_ord_quant, info2, info3, info4, opakowanie_zwrotne, CzasOczekiwania, transza_zamow, atestGUID, ilosc_etykiet, ID_Session, wartBrtWal, ilosc_opak, IdnOper_e, 
      Calc_Ver, grp_GUID, grp_TowrSymb, grp_TowrNazwa, grp_Ilosc, grp_IdnTowr, grp_Jednostka) 
    SELECT o.idn, idnoper, idnwz, idnzm, idnpr, aidnkr, rodzaj, zrealizowana, zmagazynu, domagazynu, datasprzed, datawystaw, datawplywu, symboper, 
           grupaoper, kontridn, idntowr, towrsymb, towrnazwa, usluga, SUM(ilosc) AS ilosc, idncennik, 
           cenanet, rabat, SUM(wartnet) AS wartnet, idnvat, SUM(wartvat) AS wartvat, SUM(wartbrt) AS wartbrt, cenabrt, cenamag, cenaewid, 
           SUM(wartmag) AS wartmag, SUM(iloscjest) AS iloscjest, SUM(wartnetjest) AS wartnetjest, SUM(wartvatjest) AS wartvatjest, SUM(wartbrtjest) AS wartbrtjest, 
           inwnbo, inwnnadw, inwnnied, iloscpozost, wartpozost, usedbylififo, iloscbylo, wartmagbylo, o.lp, akcyzastawka, grupuj, Jednostka, wspolplatnosc, 
           kat0, kat1, kat2, kat3, kat4, kat5, kat6, kat7, kat8, kat9, kurs, tag, tymczasowa, SUM(iloscdo) AS iloscdo, 
           o.GUID, GUIDKorPo, GUIDzm, o.localtime, remotetime, ilosczreal, cenanetWal, cenanetzRabWal, SUM(wartnetWal) AS wartnetWal, zysk, ilewopakowaniu, 
           GUID_ZmPo_MM, prowizja, idnClo, wartclo, TypSymbolow, rodzaj_przeliczenia, koszt_nabycia, stawkacla, cena_minimalna, pkwiu, 
           idnoperfin, recepturaGUID, nrseryjny, ST_zakup, ST_operF, ST_operP, waga, waga_jedn, ST_idntowr, exported, uwagi, rcngGUID, GUID_dostawy, 
           termin_waznosci, wydano, info, wydanie_rezerwacja, osobaGUID, CenaNetWalzRab, towrnazwa2, uwagi2, rodzaj_typ, waga_pozycji, 
           wymiar_x, wymiar_y, wymiar_z, ilosc_L_do_przeliczen, ilosc_M_do_przeliczen, id_przelicznika, oplata_produktowa, min_ord_quant, 
           info2, info3, info4, opakowanie_zwrotne, CzasOczekiwania, transza_zamow, atestGUID, ilosc_etykiet, ID_Session, SUM(wartBrtWal) AS wartBrtWal, ilosc_opak, 
           IdnOper_e, Calc_Ver, grp_GUID, grp_TowrSymb, grp_TowrNazwa, grp_Ilosc, grp_IdnTowr, grp_Jednostka
    FROM tmp_guidy_opng t, oppo o 
    WHERE o.idnoper = t.guid
    GROUP BY o.idntowr; 
    
    UPDATE t_oppo t SET
    idn = 0, tymczasowa = 1, guid = concat('CL',uuid()), idnoper = _GUID, idnoperfin = _GUID, 
    rabat = 0.00, rodzaj_przeliczenia = 1, guidzm = '', -- rodzaj_przeliczenia = 1 (od wartosci do ceny) -- idnwz='', 
    cenanet = _Rnd2(wartnet / ilosc), -- ustawiamy tylko cene netto, reszta przeliczy sie po edycji przez uzytkownika
    t.localtime = now(), t.remotetime = NULL,t.grp_TowrSymb = DEFAULT(t.grp_TowrSymb),t.grp_TowrNazwa = DEFAULT(t.grp_TowrNazwa),t.grp_Jednostka = DEFAULT(t.grp_Jednostka),
    t.grp_Ilosc = DEFAULT(t.grp_Ilosc),t.grp_GUID = '';
    
END IF;


IF _MODE = 'CLONE_OP_SEL_1' THEN
    IF @_handle_UserGUID IS NULL THEN
        CALL _Get_Actual_handle_rec_User_Params('', @SYSTEM.Client.Session.GUID, @_handle_UserGUID, @_handle_UserLogin, @_handle_UserUgrpGUID, '', '', '', '', '');
    END IF;
    
    DROP TABLE IF EXISTS t_opng;
    DROP TABLE IF EXISTS t_oppo;
    -- UWAGA UWAGA TA PROCEDURA DOKONUJE KLONOWANIA BEZ grupowania PO TOWARACH!
    
    CREATE TEMPORARY TABLE t_opng SELECT n.* FROM opng n, tmp_guidy_opng t WHERE n.guid = t.guid  LIMIT 1;
    
    SET _GUID = concat('CL', uuid());
    
    UPDATE t_opng t SET  
    t.idn = 0, t.tymczasowa = 1, t.idnattach = t.GUID, -- przechowanie guida dokumentu zrodlowego, z ktorego powstaje klon
    t.guid = _GUID,  -- concat('HT', uuid())
    t.nrdokmag='*',
    t.nrwewn=IF(@session.globals.Owner='SKOK' AND t.rodzaj=30,CONCAT(t.nrwewn,'*'),'*'),
     t.nrdokfin=concat(t.nrdokfin,'*'), t.zaksiegowana = 0,
    t.statusEDI=0,t.status=0,t.status_obieg=0,t.status_przelewu=0,t.statusEmail=0,t.wyslano_przelew=0,
    t.crozliczone = 0, t.crozliczonewal = 0, t.ckwota=0, t.ckwotawal=0, t.datadekretacji='',
    t.akcept_platn_kwota = 0, t.akcept_platn=0,t.wystawiono_note_ods = 0,
    t.create_At = NOW(),t.localtime = now(), t.remotetime = NULL, t.idnuser = ifnull(@_handle_UserLogin, t.idnuser),
    netto = 0.00, vat = 0.00, brutto = 0.00, 
    nettowal = 0.00, bruttowal = 0.00,t.statusEmail=0,
    t.statusKSeF=0,t.numerKSeF='',t.ksef_remotetime=NULL
    ;
    
    CREATE TEMPORARY TABLE t_oppo LIKE oppo;
    ALTER  TABLE t_oppo DROP COLUMN idn;
    ALTER  TABLE t_oppo ADD COLUMN idn integer not null default 0 first;
    
    INSERT INTO t_oppo SELECT o.* FROM tmp_guidy_opng t, oppo o WHERE o.idnoper = t.guid; 
    
    IF _ParamC = 'DOSTAWY' THEN
        UPDATE t_oppo t SET guid_dostawy = guid;    
    END IF;
    
    UPDATE t_oppo t SET
      idn = 0, tymczasowa = 1, guid = concat('CL',uuid()), idnoper = _GUID, idnoperfin = _GUID, 
      rabat = 0.00, rodzaj_przeliczenia = 1, guidzm = '', idnwz = '', t.localtime = now(), t.remotetime = NULL,t.grp_TowrSymb = DEFAULT(t.grp_TowrSymb),t.grp_TowrNazwa = DEFAULT(t.grp_TowrNazwa),t.grp_Jednostka = DEFAULT(t.grp_Jednostka),
    t.grp_Ilosc = DEFAULT(t.grp_Ilosc),t.grp_GUID = '';

END IF;

IF _MODE = 'CLONE_OP' THEN
    IF @_handle_UserGUID IS NULL THEN
        CALL _Get_Actual_handle_rec_User_Params('', @SYSTEM.Client.Session.GUID, @_handle_UserGUID, @_handle_UserLogin, @_handle_UserUgrpGUID, '', '', '', '', '');
    END IF;
    
    DROP TABLE IF EXISTS t_opng;
    DROP TABLE IF EXISTS t_oppo;
    SET @zmianakontrahenta:=1; -- nie zmieniac tego!!!!
    SET @ht_clone_tools.newguid='';
    
    IF _KontrGuid='' THEN
        SELECT kontrguid INTO _KontrGuid from opng where guid=_SRCGUID;
    END IF;
    
    SELECT count(*) into @jest from kontrah where guid=_KontrGuid;
    
    IF @jest=0 and _KontrGuid<>"" THEN
        select "Nie znaleziono kontrahenta:" as info,_Kontrguid;
        LEAVE SPROC;
    END IF;
    
    SET _GUID=concat('HT', uuid());

    CREATE TEMPORARY TABLE t_opng 
    SELECT * FROM opng WHERE guid=_SRCGUID;
    CREATE TEMPORARY TABLE t_oppo
    SELECT * FROM oppo WHERE idnoper=_SRCGUID; -- nie obsluguje FV do WZ/PZ
    
    SET _Kancel = (IFNULL(_ParamA, '') = 'KANCELARIA');
    
    /* dla klonowania z poziomu kartoteki kancelarii  (dostepne tylko dla Crist)  :
      1) nie zmieniamy nr wewn. 
      2) tworzony dok. nie jest tymczasowy
      3) ustawiamy status obiegu: "Przyjete przez kancelarie (status_obieg = 1)
    */

    
    IF _ParamC <> '' THEN
        SET _DATA = IFNULL(IF(_ParamC='1',CURRENT_DATE,DATE(_ParamC)),CURRENT_DATE);
        UPDATE t_opng t SET
            t.datawystaw=greatest(t.datawystaw,_DATA),
            t.datasprzed=greatest(t.datasprzed,_DATA),
            t.datawplywu=greatest(t.datawplywu,_DATA);
        UPDATE t_oppo t SET
            t.datawystaw=greatest(t.datawystaw,_DATA),
            t.datasprzed=greatest(t.datasprzed,_DATA),
            t.datawplywu=greatest(t.datawplywu,_DATA);
    END IF;


    UPDATE t_opng t SET
    t.idn=0,t.tymczasowa = IF(_Kancel, 0, 1), 
    t.paragon_printed=0,t.idnattach=t.GUID, -- przechowanie guida dokumentu zrodlowego, z ktorego powstaje klon
--    t.uwagi=concat('klon:',t.kontrsymbol,' fv:',t.nrdokfin,'\n',t.uwagi),
    t.guid=_GUID,t.nrdokmag='*', 
    t.nrwewn = IF(_Kancel OR @session.globals.Owner='SKOK' AND t.rodzaj=30,t.nrwewn, '*'),
    t.nrdokfin=concat(t.nrdokfin,'*'),
    t.crozliczone=0,t.crozliczonewal=0,t.nierozliczony=2,
    t.zaksiegowana=0,t.datadekretacji=NULL,
    t.akcept_platn_kwota = 0, t.akcept_platn=0,t.wystawiono_note_ods = 0,
    t.statusEDI=0,t.status=0, t.status_obieg= IF(_Kancel, 1, 0), t.status_przelewu=0,t.statusEmail=0,t.wyslano_przelew=0,
    t.create_At = NOW(),t.localtime=now(),t.remotetime=NULL,t.idnuser=ifnull(@_handle_UserLogin,t.idnuser),t.lp_ks_podawcza_str='',
    t.ewidenc=0,t.wystawiono_note_ods=0,t.statusEmail=0,
    t.statusKSeF=0,t.numerKSeF='',t.ksef_remotetime=NULL
    ;
    
    IF @session.globals.Owner in ('RELACOM','SKOK') THEN
        UPDATE t_opng t SET t.Create_At=NOW(),t.CreatorGUID=_varSTR(@session.Registration.UserGUID),t.calc_ver=4;
    END IF; 
    
    IF  @zmianakontrahenta=1 THEN
        UPDATE t_opng t, kontrah k SET
        t.kontrnazwa=k.nazwa,t.kontrsymbol=k.symbol,t.kontradres=concat(k.ulica,', ',k.zipcode,' ',k.nazwamiasta),
        t.kontrklasacenowa=k.klasacenowa,t.kontrnip=k.nip,t.kontrpodzialnip=k.podzialnip,t.kontrguid=_KontrGuid,
        t.platnikguid=k.platnikguid,t.akwizytorguid=k.akwizytorguid
        WHERE k.guid=_KontrGuid;
    END IF;

    IF @ht_clone_tools.guiddostawy=1 THEN
        UPDATE t_oppo t SET GUID_dostawy=GUID;
    END IF;
    
    UPDATE t_oppo t SET
    idn=0,tymczasowa= IF(_Kancel, 0, 1), guid=concat('HT',uuid()), idnoper=_GUID, idnoperfin=_GUID, idnwz='', guidzm='',
    t.localtime=now(),t.remotetime=NULL,t.grp_TowrSymb = DEFAULT(t.grp_TowrSymb),t.grp_TowrNazwa = DEFAULT(t.grp_TowrNazwa),t.grp_Jednostka = DEFAULT(t.grp_Jednostka),
    t.grp_Ilosc = DEFAULT(t.grp_Ilosc),t.grp_GUID = '';

    IF @session.globals.Owner = 'RELACOM' THEN
        UPDATE t_oppo t SET t.calc_ver=4;
    END IF;
    
    IF (@session.globals.Owner = 'SEVENET') THEN
        UPDATE t_opng t SET t.info2='';
    END IF;
    
    SET @ht_clone_tools.newguid = _GUID;
END IF;


IF _MODE = 'CLONE_OP_from_zmng_AS_opng' THEN
    DROP TABLE IF EXISTS t_opng;
    DROP TABLE IF EXISTS t_oppo;
    SET @zmianakontrahenta:=1; -- nie zmieniac tego!!!!
    SET @ht_clone_tools.newguid='';
    SET @.Depozyt.X = '4.2';
    
    IF _KontrGuid='' THEN
        SELECT kontrguid INTO _KontrGuid from zmng where guid=_SRCGUID;
    END IF;
    SET @.Depozyt.X = '4.3';
    
    SELECT count(*) into @jest from kontrah where guid=_KontrGuid;
    
    IF @jest=0 and _KontrGuid<>"" THEN
    SET @.Depozyt.X = '4.4';
        select "Nie znaleziono kontrahenta:" as info,_Kontrguid;
        LEAVE SPROC;
    END IF;
    SET @.Depozyt.X = '4.5';
    
    IF @session.globals.Owner = 'IZOHAN' THEN
        SET _GUID = CONCAT('DEP:PZ', MD5(_SRCGUID));
        IF EXISTS(SELECT GUID FROM opng WHERE GUID = _GUID) THEN
            SELECT "Jest już taki dokument" AS info;
            LEAVE SPROC;
        END IF;
    ELSE
        SET _GUID=concat('HT', uuid());
    END IF;
    

    CREATE TEMPORARY TABLE t_oppo
        SELECT 
            p.* 
        FROM oppo p, zmpo zp 
        WHERE 
            zp.idnNg =_SRCGUID 
            AND 
            p.GUIDZm = zp.GUID
        ; -- wszystkie oppo realizujace pozycje zam _SRCGUID
    -- szukaj GUID-a pierwszej lepszej np. WZ-ki - posluzy jako ng do klonu
                SET @.Depozyt.X = '4.6';
    SET @.GUID.n = (SELECT p.IdnOper FROM t_oppo p LIMIT 1);
    IF IFNULL(@.GUID.n, '') = '' THEN
        SELECT "Nie znaleziono dok." AS info;
                SET @.Depozyt.X = '4.7';
        LEAVE SPROC;
    END IF;
    
    CREATE TEMPORARY TABLE t_opng 
        SELECT 
        * 
        FROM opng n 
        WHERE 
            n.guid = @.GUID.n
    ;
                SET @.Depozyt.X = '4.7.1';
    
    UPDATE t_opng t SET
        t.idn=0,t.tymczasowa = IF(_Kancel, 0, 1), 
        t.paragon_printed=0,t.idnattach=t.GUID, -- przechowanie guida dokumentu zrodlowego, z ktorego powstaje klon
    --    t.uwagi=concat('klon:',t.kontrsymbol,' fv:',t.nrdokfin,'\n',t.uwagi),
        t.guid=_GUID,t.nrdokmag='*', t.nrwewn = IF(_Kancel, t.nrwewn, '*'), -- t.nrwewn='*', 
        t.nrdokfin=concat(t.nrdokfin,'*'),t.crozliczone=0,t.crozliczonewal=0,t.zaksiegowana=0,t.datadekretacji='',t.nierozliczony=2,
        t.akcept_platn_kwota = 0, t.akcept_platn=0,t.wystawiono_note_ods = 0,
        t.statusEDI=0,t.status=0, t.status_obieg= IF(_Kancel, 1, 0), t.status_przelewu=0,t.statusEmail=0,t.wyslano_przelew=0,
        t.create_At = NOW(),t.localtime=now(),t.remotetime=NULL,t.idnuser=ifnull(IFNULL(@session.Registration.IdnUser, @session.CheckLogonUserLogin),t.idnuser),t.lp_ks_podawcza_str='',t.ewidenc=0,
        t.statusEmail=0,
        t.statusKSeF=0,t.numerKSeF='',t.ksef_remotetime=NULL
    ;
    SET @.Depozyt.X = '4.7.2';

    IF  @zmianakontrahenta = 1 THEN
        UPDATE t_opng t, kontrah k SET
            t.kontrnazwa=k.nazwa,t.kontrsymbol=k.symbol,t.kontradres=concat(k.ulica,', ',k.zipcode,' ',k.nazwamiasta),
            t.kontrklasacenowa=k.klasacenowa,t.kontrnip=k.nip,t.kontrpodzialnip=k.podzialnip,t.kontrguid=_KontrGuid,
            t.platnikguid=k.platnikguid,t.akwizytorguid=k.akwizytorguid
        WHERE k.guid=_KontrGuid;
    END IF;
    SET @.Depozyt.X = '4.7.3';

    IF @ht_clone_tools.guiddostawy=1 THEN
        UPDATE t_oppo t SET GUID_dostawy=GUID;
    END IF;
    
    UPDATE t_oppo t SET
    idn=0,tymczasowa= IF(_Kancel, 0, 1), guid=concat('HT',uuid()), idnoper=_GUID, idnoperfin=_GUID, idnwz='', guidzm='',
    t.localtime=now(),t.remotetime=NULL;

    SET @ht_clone_tools.newguid = _GUID;
    
END IF;

IF _MODE = 'CLONE_OP_TO_OP' THEN
-- CALL ht_clone_tools('CLONE_OP_TO_OP',_SRCGUID,'','','','');
    CALL ht_clone_tools('CLONE_OP',_SRCGUID,'',_ParamA,_ParamB,_ParamC);
    CALL ht_clone_tools('CLONE_VAT',_SRCGUID,'',@ht_clone_tools.newguid,'','');
    SELECT rodzaj,(SELECT d.grupa FROM operdoc d where d.rodzaj=t.rodzaj) as grupa
    INTO @ht_clone_tools.rodzaj,@ht_clone_tools.grupa
    FROM t_opng t;
    IF @ht_clone_tools.grupa=11 THEN -- RO XX
        UPDATE t_opng SET tymczasowa=0;
    END IF;

    INSERT INTO opng SELECT * FROM t_opng;
    INSERT INTO oppo SELECT * FROM t_oppo;
    
END IF;

IF _MODE = 'CLONE_OP_WEW' THEN    -- klonuje dokumenty wewnetrzne, bez kontrahenta
    DROP TABLE IF EXISTS t_opng;
    DROP TABLE IF EXISTS t_oppo;
    
    SET _GUID=concat('HT',uuid());
    
    CREATE TEMPORARY TABLE t_opng 
    SELECT * FROM opng WHERE guid=_SRCGUID;
    CREATE TEMPORARY TABLE t_oppo
    SELECT * FROM oppo WHERE idnoper=_SRCGUID;
    UPDATE t_opng t, operdoc o SET
    t.idn=0,t.tymczasowa=1,t.rozrachunek=0,t.datadekretacji='',
    t.akcept_platn_kwota = 0, t.akcept_platn=0,t.wystawiono_note_ods = 0,
    t.uwagi=concat('klon:',o.nazwa,' nr:',t.nrdokmag),
    t.guid=_GUID,t.nrdokmag='*',t.nrwewn='*',t.nrdokfin='*',t.crozliczone=0,t.crozliczonewal=0,
    t.statusEDI=0,t.status=0,t.status_obieg=0,t.status_przelewu=0,t.statusEmail=0,t.wyslano_przelew=0,
    t.localtime=now(),t.remotetime=NULL,
    t.create_At = NOW(),t.statusEmail=0,
    t.statusKSeF=0,t.numerKSeF='',t.ksef_remotetime=NULL
    WHERE t.rodzaj=o.rodzaj;
    
    UPDATE t_oppo t SET
    idn=0,tymczasowa=1,guid=concat('HT',uuid()),idnoper=_GUID,idnoperfin=_GUID,idnwz='',guidzm='',
    t.localtime=now(),t.remotetime=NULL,
    t.Create_At = NOW()
    ;
    
    CALL ht_clone_tools('CLONE_VAT',_SRCGUID,'',_GUID,'','');

END IF;
/*
  CALL ht_clone_tools('CLONE_ZT_TO_SW','GUIDWzorcowy,'','','','');
  CALL ht_clone_tools('CLONE_ZT_TO_SW','GUIDWzorcowy,'','storno','',''); - dla odwrotnego znaku

*/

IF (_MODE = 'CLONE_ZT_TO_SW' AND @session.globals.Owner IN ('SEVENET')) THEN
    SET _rodzaj=(SELECT rodzaj FROM opng WHERE guid=_SRCGUID);
    IF _rodzaj = 10 THEN  
        DROP TABLE IF EXISTS t_wewn_poz;
        CREATE  TABLE t_wewn_poz
        SELECT 
        n.datawystaw,n.datasprzed,n.datawplywu,n.data_vat,
        IFNULL((SELECT KU.kurs FROM kursy KU WHERE dn.waluta=KU.idnwaluty AND KU.data<n.datasprzed ORDER BY DATA DESC LIMIT 1),1) AS kurs, 
        IFNULL((SELECT KU.numer_tab_kurs FROM kursy KU WHERE dn.waluta=KU.idnwaluty AND KU.data<n.datasprzed ORDER BY DATA DESC LIMIT 1),0) AS tabela_kursow,
        IFNULL((SELECT KU.idn FROM kursy KU WHERE dn.waluta=KU.idnwaluty AND KU.data<n.datasprzed ORDER BY DATA DESC LIMIT 1),0) AS idn_tab_kurs,
        IFNULL((SELECT KU.data FROM kursy KU WHERE dn.waluta=KU.idnwaluty AND KU.data<n.datasprzed ORDER BY DATA DESC LIMIT 1),0) AS datawaluty,    
        o.GUID_dostawy AS Family_GUID,CONCAT('Do faktury ',dn.nrdokfin,' WZ nr ',n.nrdokmag) AS info,dn.guid AS guid_op_dost,SUM(o.ilosc) AS ilosc,
        d.cenanet,SUM(d.wartnetwal/d.ilosc) AS cenanetnetwal,(d.wartnetwal/d.ilosc)*o.ilosc AS wartnetwal,
        dn.waluta,d.ilosc AS iloscd,dn.nrdokfin
        FROM oppo o  LEFT JOIN oppo d ON o.GUID_dostawy=d.guid
        LEFT JOIN opng dn ON d.idnoper=dn.guid
        LEFT JOIN opng n ON o.idnoper=n.guid
        LEFT JOIN TowrNg t ON t.guid=o.idntowr
        WHERE o.idnoper=_SRCGUID  AND dn.rodzaj=81   AND t.wyroznik='U'
        GROUP BY o.GUID_dostawy;
        
        BEGIN
            DECLARE _Local_SRCGUID VARCHAR(38);
            
            DECLARE _done BOOL DEFAULT FALSE;
            DECLARE _c_proc CURSOR FOR
                SELECT 
                    Family_GUID
                FROM t_wewn_poz
                ;
            DECLARE CONTINUE HANDLER FOR NOT FOUND SET _done = TRUE;
            OPEN _c_proc;
                loop_wewn_WZ: LOOP
                    FETCH _c_proc INTO
                        _Local_SRCGUID
                    ;
                    IF _done THEN
                        LEAVE loop_wewn_WZ;
                    ELSE
                        SET _GUID=CONCAT('HT',UUID());
                        SET _GUID2=MD5(CONCAT('HT2',_GUID));
                        DROP TABLE IF EXISTS t_opng;
                        DROP TABLE IF EXISTS test_petla;
                        CREATE TABLE test_petla SELECT _Local_SRCGUID;
                        CREATE TEMPORARY TABLE t_opng 
                        SELECT * FROM opng WHERE guid=(SELECT idnoper FROM oppo WHERE guid=_Local_SRCGUID);
        
                        UPDATE t_opng o, t_wewn_poz t
                        SET    
                        o.datawystaw=t.datawystaw,o.datasprzed=t.datasprzed,o.datawplywu=t.datawplywu,o.data_vat=t.data_vat,
                        o.idn=0,o.rodzaj=83,o.guid=_GUID,o.grupaoper=3,o.rv_id=2072, -- zmienic na klucz w iregu 
                        o.Crozliczone=0, o.CRozliczoneWal=0, o.tabela_kursow=t.tabela_kursow,
                        o.statusEDI=0,o.STATUS=0,o.status_obieg=0,o.status_przelewu=0,o.statusEmail=0,o.wyslano_przelew=0,
                        o.CWN=1, o.rozrachunek=0, o.zaksiegowana = 0, o.fvrudowz = 0, o.wzordekr='', o.nrdokmag='', o.kancelaria_kierunek=0,
                        o.netto=ROUND(t.wartnetwal*t.kurs,2), o.nettowal=ROUND(t.wartnetwal,2),
                        o.vat=ROUND(t.wartnetwal*t.kurs*0.23,2),o.kurs=t.kurs,
                        o.idnuser=IFNULL(IFNULL(@session.Registration.IdnUser, @session.CheckLogonUserLogin),idnuser),
                        o.kurs_rozliczen=t.kurs,o.info6=t.info,o.idn_tab_kurs=t.idn_tab_kurs,o.datawaluty=t.datawaluty,
                        o.brutto=ROUND((t.wartnetwal*t.kurs*0.23)+t.wartnetwal*t.kurs,2),o.BruttoWal=ROUND((t.wartnetwal*0.23)+t.wartnetwal,2),o.CKwota=0,o.CKwotaWal=0,o.netto_bez_zaliczki=0,      
                        o.tabwartnetto1=0,o.tabwartnetto2=0,o.tabwartnetto3=0,o.tabwartnetto4=0,o.tabwartnetto5=0,o.tabwartnetto6=0,
                        o.tabwartnetto7=0,o.tabwartnetto8=0,o.tabwartnetto9=0,o.tabwartnetto10=0,o.tabwartnetto11=0,o.tabwartnetto12=0,
                        o.tabwartnetto13=0,o.tabwartnetto14=0,o.tabwartvat1=0,o.tabwartvat2=0,o.tabwartvat3=0,o.tabwartvat4=0, 
                        o.tabwartvat7=0,o.tabwartvat8=0,o.tabwartvat9=0,o.tabwartvat10=0, o.tabwartvat11=0,o.tabwartvat12=0,  
                        o.tabwartbrutto1=0,o.tabwartbrutto2=0,o.tabwartbrutto3=0,o.tabwartbrutto4=0,o.tabwartbrutto7=0,o.ewidenc=0,
                        o.tabwartbrutto8=0,o.tabwartbrutto9=0,o.tabwartbrutto10=0,o.tabwartbrutto11=0,o.tabwartbrutto12=0,
                        vat_bez_odliczenia_pojazd=0,vat_bez_odliczenia_paliwo=0,o.create_At = NOW(),
                        o.Family_GUID=_GUID 
                        WHERE o.GUID=(SELECT idnoper FROM oppo WHERE guid=_Local_SRCGUID) AND t.Family_GUID=_Local_SRCGUID;
        
                        
        
                        INSERT INTO opng SELECT * FROM t_opng;
                        INSERT INTO opng_vat SELECT _GUID,15,t.netto,t.vat,t.Brutto,t.nettowal,t.nettoWal*0.23,BruttoWal,0,1 FROM t_opng t;
        
                        DROP TABLE IF EXISTS t_opng2;
                        CREATE TEMPORARY TABLE t_opng2 SELECT * FROM t_opng;
                        UPDATE t_opng2 SET guid=_GUID2,rv_id=2073; -- zmienic na klucz w iregu 
                        INSERT INTO opng SELECT * FROM t_opng2; 
                        INSERT INTO opng_vat SELECT _GUID2,15,t.netto,t.vat,t.Brutto,t.nettowal,t.nettoWal*0.23,BruttoWal,0,1 FROM t_opng2 t;
                
                    END IF;
                END LOOP;
            CLOSE _c_proc;
        END; -- BEGIN
        SELECT COUNT(*) AS ile FROM t_wewn_poz;
    ELSE -- IF rodzaj=10
    -- tworzenie FV Wewn do ZT IM/UE
        SET _rv=(SELECT rv_id FROM opng WHERE guid=_SRCGUID);
        IF  _rv = '0' THEN  
            DROP TABLE IF EXISTS t_opng;
            SET _GUID=MD5(CONCAT('HT2',UUID()));
            SET _GUID2=MD5(CONCAT('HT2',UUID()));
            CREATE TEMPORARY TABLE t_opng 
            SELECT * FROM opng WHERE guid=_SRCGUID;
            

            UPDATE t_opng 
            SET idn=0, guid=_GUID,rodzaj=83, grupaoper=3,rv_id=2072, Crozliczone=0, CRozliczoneWal=0, 
            statusEDI=0,STATUS=0,status_obieg=0,status_przelewu=0,statusEmail=0,wyslano_przelew=0,
            CWN=1, rozrachunek=0, zaksiegowana = 0, fvrudowz = 0, wzordekr='', nrdokmag='', kancelaria_kierunek=0, 
            kurs=0, 
            nettowal=0,BruttoWal=0,CKwota=0,CKwotaWal=0,      
            tabwartnetto1=0,tabwartnetto2=0,tabwartnetto3=0,tabwartnetto4=0,tabwartnetto5=0,tabwartnetto6=0,
            tabwartnetto7=0,tabwartnetto8=0,tabwartnetto9=0,tabwartnetto10=0,tabwartnetto11=0,tabwartnetto12=0,
            tabwartnetto13=0,tabwartnetto14=0,tabwartvat1=0,tabwartvat2=0,tabwartvat3=0,tabwartvat4=0,
            tabwartvat7=0,tabwartvat8=0,tabwartvat9=0,tabwartvat10=-tabwartvat10, tabwartvat11=0,tabwartvat12=0,  
            tabwartbrutto1=0,tabwartbrutto2=0,tabwartbrutto3=-tabwartbrutto3,tabwartbrutto4=0,tabwartbrutto7=0,datadekretacji='',
            akcept_platn_kwota = 0, akcept_platn=0,wystawiono_note_ods = 0,
            tabwartbrutto8=0,tabwartbrutto9=0,tabwartbrutto10=0,tabwartbrutto11=0,tabwartbrutto12=0,vat_bez_odliczenia_pojazd=0,vat_bez_odliczenia_paliwo=0,create_At = NOW(),
            datawystaw=data_vat,datawplywu=data_vat,datasprzed=data_vat,Family_GUID=_SRCGUID,info6=CONCAT('Do faktury ',nrdokfin),statusEmail=0,
            statusKSeF=0,numerKSeF='',ksef_remotetime=NULL;

            INSERT INTO opng SELECT * FROM t_opng;
            CALL ht_clone_tools('CLONE_VAT',_SRCGUID,'',_GUID,'','fix');
            DROP TABLE IF EXISTS t_opng2;
            CREATE TEMPORARY TABLE t_opng2 SELECT * FROM t_opng;
            UPDATE t_opng2 SET guid=_GUID2,rv_id=2073; 
            INSERT INTO opng SELECT * FROM t_opng2;
            CALL ht_clone_tools('CLONE_VAT',_SRCGUID,'',_GUID2,'','fix');
            
        ELSE     -- _rv=0
            DROP TABLE IF EXISTS t_opng;
            SET _GUID=CONCAT('HT',UUID());
            CREATE TEMPORARY TABLE t_opng 
            SELECT * FROM opng WHERE guid=_SRCGUID;
            UPDATE t_opng 
            SET idn=0, guid=_GUID,rodzaj=83,  grupaoper=3,  rv_id=2029, Crozliczone=0, CRozliczoneWal=0, 
            statusEDI=0,STATUS=0,status_obieg=0,status_przelewu=0,statusEmail=0,wyslano_przelew=0,
            CWN=1, rozrachunek=0, zaksiegowana = 0, fvrudowz = 0, wzordekr='SW FV', nrdokmag='', kancelaria_kierunek=0,
            idnuser=IFNULL(IFNULL(@session.Registration.IdnUser, @session.CheckLogonUserLogin),idnuser),ewidenc=0
            ;
            IF _ParamA = 'storno' THEN  -- to jest kawalek gdy chcemy uzyskac dokument z odwrotnym znakiem
                UPDATE t_opng SET 
                netto=-netto, 
                vat=-vat, 
                brutto=-brutto,nettowal=-nettowal,BruttoWal=-BruttoWal,CKwota=-CKwota,CKwotaWal=-CKwotaWal,      
                tabwartnetto1=-tabwartnetto1,tabwartnetto2=-tabwartnetto2,tabwartnetto3=-tabwartnetto3,tabwartnetto4=-tabwartnetto4,tabwartnetto5=-tabwartnetto5,tabwartnetto6=-tabwartnetto6,
                tabwartnetto7=-tabwartnetto7,tabwartnetto8=-tabwartnetto8,tabwartnetto9=-tabwartnetto9,tabwartnetto10=-tabwartnetto10,tabwartnetto11=-tabwartnetto11,tabwartnetto12=-tabwartnetto12,
                tabwartnetto13=-tabwartnetto13,tabwartnetto14=-tabwartnetto14,tabwartvat1=-tabwartvat1,tabwartvat2=-tabwartvat2,tabwartvat3=-tabwartvat3,tabwartvat4=-tabwartvat4,
                tabwartvat7=-tabwartvat7,tabwartvat8=-tabwartvat8,tabwartvat9=-tabwartvat9,tabwartvat10=-tabwartvat10, tabwartvat11=-tabwartvat11,tabwartvat12=-tabwartvat12,  
                tabwartbrutto1=-tabwartbrutto1,tabwartbrutto2=-tabwartbrutto2,tabwartbrutto3=-tabwartbrutto3,tabwartbrutto4=-tabwartbrutto4,tabwartbrutto7=-tabwartbrutto7,
                tabwartbrutto8=-tabwartbrutto8,tabwartbrutto9=-tabwartbrutto9,tabwartbrutto10=-tabwartbrutto10,tabwartbrutto11=-tabwartbrutto11,tabwartbrutto12=-tabwartbrutto12,
                vat_bez_odliczenia_pojazd=-vat_bez_odliczenia_pojazd,vat_bez_odliczenia_paliwo=-vat_bez_odliczenia_paliwo,create_At = NOW(),
                statusKSeF=0,numerKSeF='',ksef_remotetime=NULL
                ;
            END IF;  
            INSERT INTO opng SELECT * FROM t_opng;
            IF _ParamA = 'storno' THEN
                CALL ht_clone_tools('CLONE_VAT',_SRCGUID,'',_GUID,'storno','fix');
            ELSE
                CALL ht_clone_tools('CLONE_VAT',_SRCGUID,'',_GUID,'','fix');
            END IF;
        END IF;      -- ELSE _rv=0
    END IF;     -- ELSE IF rodzaj=10
END IF;

IF (_MODE = 'CLONE_ZT_TO_SW' AND @session.globals.Owner NOT IN ('SEVENET')) THEN
 -- tworzenie FV Wewn do ZT IM/UE
    DROP TABLE IF EXISTS t_opng;
    
    SET _GUID=CONCAT('HT',UUID());
    
    CREATE TEMPORARY TABLE t_opng 
    SELECT * FROM opng WHERE guid=_SRCGUID;
    
    UPDATE t_opng SET 
        idn=0, guid=_GUID,rodzaj=83,  grupaoper=3,
        rv_id=2029, Crozliczone=0, CRozliczoneWal=0, datadekretacji='',
        akcept_platn_kwota = 0, akcept_platn=0,wystawiono_note_ods = 0,
        statusEDI=0,STATUS=0,status_obieg=0,status_przelewu=0,statusEmail=0,wyslano_przelew=0,
        CWN=1, rozrachunek=0, zaksiegowana = 0, fvrudowz = 0, wzordekr='', nrdokmag='', kancelaria_kierunek=0,
        idnuser=IFNULL(IFNULL(@session.Registration.IdnUser, @session.CheckLogonUserLogin),idnuser),ewidenc=0,jpkgtu='',jpkflags='',
        jpkTyp='',create_At = NOW(),idnattach=_SRCGUID,
        nrdokfin=IF(IFNULL(nrfvwewn,'')='',IF(@session.globals.Owner IN ('SKOK'),nrdokfin,nrwewn),nrfvwewn),
        statusKSeF=0,numerKSeF='',ksef_remotetime=NULL
        ;

    UPDATE t_opng SET vat_bez_odliczenia_pojazd=0,vat_bez_odliczenia_paliwo=0; -- życzenie SKOK; TODO: do ustalenia, czy to est słuszne dla wszystkich 

    IF _ParamA = 'storno' THEN  -- to jest kawalek gdy chcemy uzyskac dokument z odwrotnym znakiem
        UPDATE t_opng SET 
            netto=-netto,vat=-vat,brutto=-brutto,nettowal=-nettowal,BruttoWal=-BruttoWal,CKwota=-CKwota,CKwotaWal=-CKwotaWal,      
            tabwartnetto1=-tabwartnetto1,tabwartnetto2=-tabwartnetto2,tabwartnetto3=-tabwartnetto3,tabwartnetto4=-tabwartnetto4,tabwartnetto5=-tabwartnetto5,tabwartnetto6=-tabwartnetto6,
            tabwartnetto7=-tabwartnetto7,tabwartnetto8=-tabwartnetto8,tabwartnetto9=-tabwartnetto9,tabwartnetto10=-tabwartnetto10,tabwartnetto11=-tabwartnetto11,tabwartnetto12=-tabwartnetto12,
            tabwartnetto13=-tabwartnetto13,tabwartnetto14=-tabwartnetto14,tabwartvat1=-tabwartvat1,tabwartvat2=-tabwartvat2,tabwartvat3=-tabwartvat3,tabwartvat4=-tabwartvat4,
            tabwartvat7=-tabwartvat7,tabwartvat8=-tabwartvat8,tabwartvat9=-tabwartvat9,tabwartvat10=-tabwartvat10, tabwartvat11=-tabwartvat11,tabwartvat12=-tabwartvat12,  
            tabwartbrutto1=-tabwartbrutto1,tabwartbrutto2=-tabwartbrutto2,tabwartbrutto3=-tabwartbrutto3,tabwartbrutto4=-tabwartbrutto4,tabwartbrutto7=-tabwartbrutto7,
            tabwartbrutto8=-tabwartbrutto8,tabwartbrutto9=-tabwartbrutto9,tabwartbrutto10=-tabwartbrutto10,tabwartbrutto11=-tabwartbrutto11,tabwartbrutto12=-tabwartbrutto12,
            vat_bez_odliczenia_pojazd=-vat_bez_odliczenia_pojazd,vat_bez_odliczenia_paliwo=-vat_bez_odliczenia_paliwo
            ;
    END IF;  
    IF @session.globals.Owner  IN ('BALTIMA') THEN
        IF (SELECT COUNT(*) FROM opng WHERE idnattach=_SRCGUID AND rodzaj=83 AND deleted=0) >0  THEN
            SELECT "Dla wskazanego dokumentu istnieje SW FV" AS info;
            LEAVE SPROC;
        END IF;
    --    nie było ObjType
        UPDATE t_opng SET rodzajdowodu=REPLACE(rodzajdowodu,LEFT(rodzajdowodu,1),'S');
        SELECT n.rodzaj_typ,n.rodzajdowodu, YEAR(n.DataWystaw) AS Y INTO @Podrodzaj,@ResGUID,@Y FROM t_opng n;
        SELECT Nr INTO @Nr FROM erp_obj_counters WHERE ObjType = 'opng.nrdokfin' AND rodzaj=83 AND Podrodzaj=@Podrodzaj AND ResGUID=@ResGUID AND Y = @Y;
        UPDATE t_opng n SET n.nrdokfin=CONCAT(@ResGUID,'/',YEAR(n.datawystaw),'/',LPAD(@Nr,3,0));

        INSERT INTO opng SELECT * FROM t_opng;
        UPDATE t_opng n1,opng n2  SET n2.NrFvWewn=n1.nrdokfin WHERE n1.idnattach=n2.guid 
        AND n1.rodzaj IN (83) AND n2.rodzaj IN (5,62,81) AND n2.guid=_SRCGUID ;
--        UPDATE erp_obj_counters SET Nr=@Nr+1 WHERE rodzaj=83 AND Podrodzaj=@Podrodzaj AND ResGUID=@ResGUID;
    
        UPDATE erp_obj_counters SET Nr=@Nr+1 WHERE ObjType = 'opng.nrdokfin' AND rodzaj=83 AND Podrodzaj=@Podrodzaj AND ResGUID=@ResGUID AND Y = @Y;
    ELSE 
        INSERT INTO opng SELECT * FROM t_opng;
    END IF;
    
    IF _ParamA = 'storno' THEN
        CALL ht_clone_tools('CLONE_VAT',_SRCGUID,'',_GUID,'storno','fix');
    ELSE
        CALL ht_clone_tools('CLONE_VAT',_SRCGUID,'',_GUID,'','fix');
    END IF;
    CALL ht_clone_tools('CLONE_OPPO_BUDZET',_SRCGUID,'',_GUID,'','');
     
END IF;

-- tworzenie z zakupu zobowiazania, ale moze byc w ratach, i wtedy tyle dokumnetow ile podanych rat (_ParamA)
-- CALL ht_clone_tools('CLONE_ZT_ROMA','{006F8951-29C7-4931-B7A7-5103E5F6E380}','','3','','');
/*
IF (_MODE = 'CLONE_ZT_ROMA') THEN
    SET @Iter = 1;
    WHILE @Iter<= _ParamA
      SET @Iter = @Iter + 1;
      SET _GUID=concat('HT',uuid());
      insert into t2
        select replace(substring_index(substring_index(Zalecenia_techn,char(13),@Iter),char(13),-1),char(10),'') as linia
        from rcng 
        where guid in (select recepturaGUID from zmpo where idnNG=@GUID);
    END WHILE;
    
    UPDATE t_opng t SET
      t.guid=@guid,t.rodzaj=44,t.rv_id=0,t.grupaoper=11,t.fvrudowz=0,t.domagazynu=0,t.zmagazynu=0,
      t.ckwota=t.vat,t.ckwotawal=t.vat,t.crozliczone=0,t.crozliczonewal=0,
      t.waluta=0,t.waluta_rozliczen=0,
      t.kurs=1,t.kurs_rozliczen=1,
      t.brutto=t.vat,t.netto=0,t.nettowal=0,t.vat=0,
      t.tabwartvat10=0,t.tabwartnetto10=0,t.tabwartbrutto10=0,
      t.wzordekr='';
    
-- potrzeba sekcja, ktora zderozrachunkuje dokument zrodlowy (od Jacka)
    
    
    INSERT IGNORE INTO opng SELECT * FROM t_opng;
    
END IF;
*/

IF (_MODE = 'UPDATE_SW' ) THEN
    SET @family=(SELECT Family_GUID FROM opng WHERE guid=_SRCGUID);
    SET @guid_2=(SELECT guid FROM opng WHERE Family_GUID=@family AND guid<>_SRCGUID LIMIT 1);
    
    DROP TABLE IF EXISTS t_opng;
    CREATE TEMPORARY TABLE t_opng 
    SELECT * FROM opng_e WHERE guid=_SRCGUID;
    
    UPDATE opng o, t_opng t
        SET  
        o.datawystaw=t.datawystaw,o.datasprzed=t.datasprzed,o.datawplywu=t.datawplywu,o.data_vat=t.data_vat,
        o.tabela_kursow=t.tabela_kursow,
        o.netto=t.netto, o.nettowal=t.nettowal,
        o.vat=t.vat,o.kurs=t.kurs,
        o.kurs_rozliczen=t.kurs,o.idn_tab_kurs=t.idn_tab_kurs,o.datawaluty=t.datawaluty,
        o.brutto=t.brutto,o.BruttoWal=t.BruttoWal,    
        o.tabwartnetto1=t.tabwartnetto1,o.tabwartnetto2=t.tabwartnetto2,o.tabwartnetto3=t.tabwartnetto3,o.tabwartnetto4=t.tabwartnetto4,
        o.tabwartnetto5=t.tabwartnetto5,o.tabwartnetto6=t.tabwartnetto6,
        o.tabwartnetto7=t.tabwartnetto7,o.tabwartnetto8=t.tabwartnetto8,o.tabwartnetto9=t.tabwartnetto9,o.tabwartnetto10=t.tabwartnetto10,
        o.tabwartnetto11=t.tabwartnetto11,o.tabwartnetto12=t.tabwartnetto12,
        o.tabwartnetto13=t.tabwartnetto13,o.tabwartnetto14=t.tabwartnetto14,o.tabwartvat1=t.tabwartvat1,
        o.tabwartvat2=t.tabwartvat2,o.tabwartvat3=t.tabwartvat3,o.tabwartvat4=t.tabwartvat4,
        o.tabwartvat7=t.tabwartvat7,o.tabwartvat8=t.tabwartvat8,o.tabwartvat9=t.tabwartvat9,o.tabwartvat10=t.tabwartvat10, o.tabwartvat11=t.tabwartvat11,
        o.tabwartvat12=t.tabwartvat12,  
        o.tabwartbrutto1=t.tabwartbrutto1,o.tabwartbrutto2=t.tabwartbrutto2,o.tabwartbrutto3=t.tabwartbrutto3,o.tabwartbrutto4=t.tabwartbrutto4,
        o.tabwartbrutto7=t.tabwartbrutto7,o.ewidenc=t.ewidenc,
        o.tabwartbrutto8=t.tabwartbrutto8,o.tabwartbrutto9=t.tabwartbrutto9,o.tabwartbrutto10=t.tabwartbrutto10,
        o.tabwartbrutto11=t.tabwartbrutto11,o.tabwartbrutto12=t.tabwartbrutto12,
        o.vat_bez_odliczenia_pojazd=t.vat_bez_odliczenia_pojazd,o.vat_bez_odliczenia_paliwo=t.vat_bez_odliczenia_paliwo
    WHERE o.GUID=@guid_2;
                    
    DROP TABLE IF EXISTS t_opng_vat;
    CREATE TEMPORARY TABLE t_opng_vat
    SELECT * FROM opng_vat_e WHERE idnoper=_SRCGUID;        
    UPDATE t_opng_vat SET idnoper=@guid_2;
    DELETE FROM opng_vat WHERE idnoper=@guid_2;
    INSERT INTO opng_vat SELECT * FROM t_opng_vat;            
               
END IF;

IF _MODE = 'CLONE_TO_STFV' THEN
    CALL ht_clone_tools('CLONE_OP',_SRCGUID,_KontrGuid,_ParamA,_ParamB,_ParamC);
    CALL ht_clone_tools('CLONE_VAT',_SRCGUID,'',@ht_clone_tools.newguid,'','');

    SELECT if(zmagazynu=0,domagazynu,zmagazynu) INTO @mag FROM t_opng;
    
    UPDATE t_opng t SET
    t.rodzaj=1,t.rv_id=2021,t.grupaoper=0,t.fvrudowz=0,t.domagazynu=0,t.zmagazynu=@mag,t.cwn=1;
    UPDATE t_oppo t SET
    t.rodzaj=1,t.domagazynu=0,t.zmagazynu=@mag;
    INSERT INTO opng SELECT * FROM t_opng;
    INSERT INTO oppo SELECT * FROM t_oppo;
    
END IF;

IF _MODE = 'CLONE_TO_MGPZ' THEN
    CALL ht_clone_tools('CLONE_OP',_SRCGUID,_KontrGuid,_ParamA,_ParamB,_ParamC);
    SET @mag := _ParamA;
    
    UPDATE t_opng t SET
    t.rodzaj=12,t.rv_id=0,t.grupaoper=2,t.fvrudowz=0,t.domagazynu=@mag,t.zmagazynu=0,t.cwn=0,t.rozrachunek=0,
    t.ckwota=0,t.ckwotawal=0,
    t.create_At = NOW()
    ;
    
    IF @session.globals.Owner = 'STANPOL' THEN
      SELECT info1 into @lot from t_opng;
      
      select n.nrdokfin into @nrdokfin
      from opng n
      inner join oppo o on o.idnoperfin=n.GUID
      inner join t_opng t on t.idnattach=o.idnoper limit 1;
      
      UPDATE t_oppo t SET
        t.nrseryjny=if(t.nrseryjny='',@lot,t.nrseryjny),
        t.info=if(t.info='',@nrdokfin,t.info);
      UPDATE t_opng t SET t.nrdokfin=@nrdokfin;
      
    END IF;
    
    UPDATE t_oppo t SET
    t.rodzaj=12,t.domagazynu=@mag,t.zmagazynu=0,t.GUID_dostawy='';
    INSERT INTO opng SELECT * FROM t_opng;
    INSERT INTO oppo SELECT * FROM t_oppo;
    
END IF;

IF _MODE = 'CLONE_TO_MGPW' THEN
    CALL ht_clone_tools('CLONE_OP_WEW',_SRCGUID,_KontrGuid,_ParamA,_ParamB,_ParamC);
    SET @mag := _ParamA;
    
    UPDATE t_opng t SET
    t.rodzaj=13,t.rv_id=0,t.grupaoper=2,t.fvrudowz=0,t.domagazynu=@mag,t.zmagazynu=0,t.cwn=0,t.rozrachunek=0,
    t.ckwota=0,t.ckwotawal=0,
    t.create_At = NOW()
    ;
    
    UPDATE t_oppo t SET
    t.rodzaj=13,t.domagazynu=@mag,t.zmagazynu=0;
    INSERT INTO opng SELECT * FROM t_opng;
    INSERT INTO oppo SELECT * FROM t_oppo;

-- CALL ht_clone_tools('CLONE_TO_MGPW','PRZ_2011-12-31','','1','','');
    
END IF;

IF _MODE = 'CLONE_TO_MGWZ' THEN
    CALL ht_clone_tools('CLONE_OP',_SRCGUID,_KontrGuid,_ParamA,_ParamB,_ParamC);
    SET @mag := _ParamA;
    
    UPDATE t_opng t SET
    t.rodzaj=10,t.rv_id=0,t.grupaoper=2,t.fvrudowz=0,t.domagazynu=0,t.zmagazynu=@mag,t.cwn=0,t.rozrachunek=0,
    t.ckwota=0,t.ckwotawal=0;
    
    UPDATE t_oppo t SET
    t.rodzaj=10,t.domagazynu=0,t.zmagazynu=@mag;
    INSERT INTO opng SELECT * FROM t_opng;
    INSERT INTO oppo SELECT * FROM t_oppo;
    
END IF;


IF _MODE = 'CLONE_TO_PZRW' THEN
    CALL ht_clone_tools('CLONE_OP',_SRCGUID,_KontrGuid,_ParamA,_ParamB,_ParamC);
    SET @mag := (SELECT n.domagazynu FROM opng n WHERE n.guid=_SRCGUID);
    
    UPDATE t_opng t SET
        t.rodzaj=11,t.rv_id=0,t.grupaoper=2,t.fvrudowz=0,t.domagazynu=0,t.zmagazynu=@mag,
        t.cwn=0,t.rozrachunek=0,t.ckwota=0,t.ckwotawal=0;
    UPDATE t_oppo t SET t.rodzaj=11,t.domagazynu=0,t.zmagazynu=@mag;

    INSERT INTO opng SELECT * FROM t_opng;
    INSERT INTO oppo SELECT * FROM t_oppo;
END IF;


IF _MODE = 'CLONE_TO_MGKOR' THEN
    SET @ht_clone_tools.guiddostawy=1;
    CALL ht_clone_tools('CLONE_OP',_SRCGUID,_KontrGuid,_ParamA,_ParamB,_ParamC);
    SET @mag := (SELECT IF(zmagazynu=0,domagazynu,zmagazynu) FROM opng WHERE guid=_SRCGUID);
    
    SET @antyrodzaj := (SELECT o.antyrodzaj FROM operdoc o, t_opng t WHERE t.rodzaj=o.rodzaj);
    SET @kierunek := (SELECT magtyp FROM operdoc WHERE rodzaj=@antyrodzaj);
    
    UPDATE t_opng t SET
        t.datawplywu=CURRENT_DATE,t.datawystaw=CURRENT_DATE,t.datasprzed=CURRENT_DATE,t.rodzaj=@antyrodzaj,t.rv_id=0,t.fvrudowz=0,
        t.domagazynu=IF(@kierunek=0,@mag,0),t.zmagazynu=IF(@kierunek=2,@mag,0),t.cwn=0,t.rozrachunek=0,
        t.ckwota=0,t.ckwotawal=0,t.dotyczy=CONCAT('Korekta dokumentu ',(SELECT nrdokmag FROM opng WHERE guid=_SRCGUID)) ;
    
    UPDATE t_oppo t SET
        t.datawplywu=CURRENT_DATE,t.datawystaw=CURRENT_DATE,t.datasprzed=CURRENT_DATE,t.rodzaj=@antyrodzaj,t.domagazynu=IF(@kierunek=0,@mag,0),t.zmagazynu=IF(@kierunek=2,@mag,0);

    INSERT INTO opng SELECT * FROM t_opng;
    INSERT INTO oppo SELECT * FROM t_oppo;
END IF;

IF _MODE = 'CLONE_TO_MM_REZ' THEN
    SET @mag_rez := (SELECT param1 FROM Magazyny WHERE IdnMagazynu=(SELECT domagazynu FROM opng WHERE guid=_SRCGUID));
    IF @mag_rez= '' THEN
        SELECT "Dla docelowego magazynu brak ustawionego magazynu rezerw" AS MSG;
        LEAVE SPROC;
    END IF;
    
    SET @ht_clone_tools.guiddostawy=1;
    CALL ht_clone_tools('CLONE_OP',_SRCGUID,_KontrGuid,_ParamA,_ParamB,_ParamC);
    
    UPDATE t_opng t, opng n SET
        t.tymczasowa=0,t.zmagazynu=@mag_rez,t.dotyczy=CONCAT('Klon',n.nrdokmag), 
        t.nrdokmag=CONCAT(n.nrdokmag,'\REZ'),t.nrdokfin=n.nrdokfin WHERE n.guid=_SRCGUID;
    UPDATE t_oppo t,opng n SET t.zmagazynu=@mag_rez,t.tymczasowa=0 ;
    
    INSERT INTO opng SELECT * FROM t_opng;
    INSERT INTO oppo SELECT * FROM t_oppo;
    SET @guigrez := (SELECT DISTINCT(t.guid) FROM t_opng t);
    
    UPDATE opng SET domagazynu=@mag_rez WHERE guid=_SRCGUID;
    UPDATE oppo SET domagazynu=@mag_rez WHERE idnoper=_SRCGUID;
    CALL ht_oppo_mag_tool('UPDATE_OPNG_REC',_SRCGUID, '', '', '');
    CALL ht_oppo_mag_tool('UPDATE_OPNG_REC', @guigrez, '', '', '');
    SELECT "Dodatkowa operacja na magazyn rezerw została utworzona" AS MSG;
    
END IF;

IF _MODE = 'CLONE_TO_MGPZ_DEPOZYT' THEN
    SET @mag := _VarInt(_ParamA);
    IF @mag=0 THEN 
        LEAVE SPROC;
    END IF;

    CALL ht_clone_tools('CLONE_OP_from_zmng_AS_opng',_SRCGUID,_KontrGuid,_ParamA,_ParamB,_ParamC);
    
    UPDATE t_opng  SET rodzaj=12,rv_id=0,grupaoper=2,fvrudowz=0,domagazynu=@mag,zmagazynu=0,GUID_dostawy='',create_At = NOW(),
                        cwn=0,rozrachunek=0,ckwota=0,ckwotawal=0;
    INSERT INTO opng SELECT * FROM t_opng;
    INSERT INTO oppo SELECT * FROM t_oppo;
END IF;


IF _MODE = 'CLONE_TO_MGWZ_DODOSTAWY_CHECK' THEN
    SELECT count(*) as ile FROM oppo o,oppo d WHERE d.idnoper=_SRCGUID and o.GUID_dostawy=d.GUID;
END IF;

IF _MODE = 'CLONE_TO_MGWZ_DODOSTAWY' THEN
    SET @ht_clone_tools.guiddostawy=1;
    CALL ht_clone_tools('CLONE_OP',_SRCGUID,_KontrGuid,_ParamA,_ParamB,_ParamC);
    SET @ht_clone_tools.guiddostawy=0;
    SET @mag := _ParamA;
    
    UPDATE t_opng SET
        rodzaj=10,rv_id=0,grupaoper=2,fvrudowz=0,domagazynu=0,zmagazynu=@mag,
        cwn=0,rozrachunek=0,ckwota=0,ckwotawal=0;
    
    UPDATE t_oppo SET rodzaj=10,domagazynu=0,zmagazynu=@mag;

    INSERT INTO opng SELECT * FROM t_opng;
    INSERT INTO oppo SELECT * FROM t_oppo;
END IF;

IF (_MODE = 'CLONE_STFV_WAL_ROWN_VAT') or (_MODE = 'CLONE_ZTFV_WAL_ROWN_VAT') THEN
--  CALL ht_clone_tools('CLONE_STFV_WAL_ROWN_VAT','{006F8951-29C7-4931-B7A7-5103E5F6E380}','','','','');
    CALL ht_clone_tools('CLONE_OP',_SRCGUID,_KontrGuid,_ParamA,_ParamB,_ParamC);
    SET @GUID=concat('V',mid(_SRCGUID,2,38));
    
    UPDATE t_opng SET
        guid=@guid,rodzaj=43,rv_id=0,grupaoper=11,fvrudowz=0,domagazynu=0,zmagazynu=0,
        ckwota=vat,ckwotawal=vat,crozliczone=0,crozliczonewal=0,
        waluta=0,waluta_rozliczen=0,NettoDoRozrach=0,
        kurs=1,kurs_rozliczen=1,
        brutto=vat,netto=0,nettowal=0,vat=0,
        tabwartvat10=0,tabwartnetto10=0,tabwartbrutto10=0,
        wzordekr='',nierozliczony=2,kancelaria_kierunek=0,lp_ks_podawcza_str='',
        brutto=ckwota,tymczasowa=0,ilepoz=0,nettowal=0,odsetki_kredyt=0,roznice_kursowe=0,nrwewn_int='',
        BruttoWal=ckwota,calc_ver=0,netto_bez_zaliczki=0,symboper=0,odsetki=0;
      
    IF  (SELECT grupaoper FROM opng WHERE guid=_SRCGUID)=1 THEN
        UPDATE t_opng SET rodzaj=44, tymczasowa=0; 
    END IF;
    
    IF  (_MODE = 'CLONE_ZTFV_WAL_ROWN_VAT') THEN
        UPDATE t_opng t SET rodzaj=44, tymczasowa=0; -- sevenet rozrachunek tymczasowy niekoniecznie
    END IF;
    
    DELETE from opng WHERE guid=@guid and deleted=1; 
    INSERT IGNORE INTO opng SELECT * FROM t_opng;
END IF;

IF (_MODE = 'CLONE_STFV_WAL_ROWN_VAT_CHECK') or (_MODE = 'CLONE_ZTFV_WAL_ROWN_VAT_CHECK') THEN
    SELECT count(*) as jest from opng where GUID=concat('V',mid(_SRCGUID,2,38)) and deleted=0;
END IF;

-- call ht_clone_tools('KONKOL_PODZIEL_ZM',@srcguid,'','','','');

IF _MODE = 'KONKOL_PODZIEL_ZM' THEN
    DROP TEMPORARY TABLE IF EXISTS t_zmng;

    SET _GUID = CONCAT('HT',uuid());
    SET @.Clone.GUID = _GUID;
    CREATE TEMPORARY TABLE t_zmng SELECT * FROM zmng WHERE guid=_SRCGUID;
    -- ile do przeniesienia na dzis - to co spakowano
    SELECT count(*) as ilepoz,sum(zlecono<>0) as iledoprzeniesienia INTO @ilepoz,@iledoprzeniesienia FROM zmpo WHERE idnng=_SRCGUID;
    IF @iledoprzeniesienia>0 THEN
        UPDATE zmng SET terminrealizacji=CURRENT_DATE WHERE guid=_SRCGUID;
        UPDATE zmpo SET terminrealizacji=CURRENT_DATE WHERE idnng=_SRCGUID;
    END IF;
    IF @iledoprzeniesienia>0 AND @ilepoz<>@iledoprzeniesienia THEN
        UPDATE t_zmng t SET
            t.idn=0,
            t.guid=_GUID,t.nrzamw=CONCAT(t.nrzamw,'*'),
            t.status=0,t.ilepozzreal=0,t.wersja=0,
            t.localtime=now(),t.remotetime=NULL,
            t.idnuser = ifnull(IFNULL(@session.Registration.IdnUser, @session.CheckLogonUserLogin), t.idnuser)
        ;
        INSERT INTO zmng SELECT * FROM t_zmng;
        UPDATE zmpo SET idnng=_GUID WHERE idnng=_SRCGUID AND zlecono=0;
        CALL erp_vat_tools('Update.zam', _GUID, '', '', '', '');
        CALL erp_vat_tools('Update.zam', _SRCGUID, '', '', '', '');
    END IF;
    DROP TEMPORARY TABLE IF EXISTS t_zmng;
END IF;

IF _MODE IN ('CLONE_ZM','CLONE_ZM_TO_GUID') THEN
    DROP TABLE IF EXISTS t_zmng;
    DROP TABLE IF EXISTS t_zmpo;
    
    SET @.DEST.KontrGUID = _KontrGUID;
    
    IF (@.DEST.KontrGUID <> '') AND NOT EXISTS(SELECT k.GUID FROM kontrah k WHERE k.guid = @.DEST.KontrGUID) THEN
        SELECT "Nie znaleziono kontrahenta:" AS info, @.DEST.KontrGUID;
        LEAVE SPROC;
    END IF;
    
    SET _GUID = IF(_MODE='CLONE_ZM_TO_GUID',_ParamB,'');
    SET _GUID = IF(_GUID='',CONCAT('HT',uuid()),_GUID);
    SET @.Clone.GUID = _GUID;
    
    CREATE TEMPORARY TABLE t_zmng SELECT * FROM zmng WHERE guid=_SRCGUID;
    
    SELECT t.KontrGUID,t.PlatnikGUID,t.AreaGUID
    INTO @.SRC.KontrGUID,@.SRC.PlatnikGUID,@.SRC.AreaGUID
    FROM t_zmng t
    ;
    
    IF (@.DEST.KontrGUID <> '') THEN    
        SET 
            @.DEST.KontrGUID.Changed = (@.DEST.KontrGUID != @.SRC.KontrGUID)
        ;
    ELSE
        SET 
            @.DEST.KontrGUID.Changed = FALSE,
            _KontrGUID = @.SRC.KontrGUID
        ;
    END IF;

    CREATE TEMPORARY TABLE t_zmpo
    SELECT p.* FROM zmpo p, zmng n WHERE p.idnng=_SRCGUID and n.guid=_SRCGUID and n.wersja=p.wersja; 
    
    IF @session.globals.Owner = 'HYDROMEGA' THEN
        UPDATE t_zmng t, v_kkn2 v SET t.katcol2 = IF(v.nieaktywna,0,t.katcol2) WHERE t.katcol2=v.klucz;
        UPDATE t_zmng t,t_zmpo p SET p.kat2=t.katcol2 WHERE p.idnng=t.guid;
    END IF;  
    
    UPDATE t_zmng t SET
        t.idn=0,t.tymczasowa=1,
        t.guid=_GUID,t.nrzamw='*',t.nrzamwkontr='',
        t.status=0,t.ilepozzreal=0,t.wersja=0,
        t.TerminRealizacji_Plan = NULL,
        t.localtime=now(),t.remotetime=NULL,
        t.idnuser = ifnull(IFNULL(@session.Registration.IdnUser, @session.CheckLogonUserLogin), t.idnuser)
    ;
    
    UPDATE t_zmng t, kontrah k SET
        t.uwagi=concat('klon:',t.kontrsymbol,' zam:',t.nrzamw,'  dnia:',t.datawystaw),
        t.guid=_GUID,t.klasacenowa=k.klasacenowa,t.kontrguid=_KontrGuid,t.akwizytorguid=k.akwizytorguid
    WHERE k.guid=_KontrGuid AND _KontrGuid<>'';
    
        
    IF (_ParamA=108 or _ParamC='UPDATE_zamowienieGUID') THEN -- docelowo zapotrzebowanie - przechowujemy guid
        UPDATE t_zmpo t SET zamowienieGUID=guid;
    END IF;  
    
    UPDATE t_zmpo t SET
        t.idn=0,t.tymczasowa=1, t.zrealizowano=0, t.zlecono=0, t.spakowano = 0, t.commision_guid = '',
        guid=concat('HT',uuid()),idnng=_GUID,t.localtime=now(),t.remotetime=NULL,t.wersja=0;
END IF;

IF _MODE = 'CLONE_ZM_NEW' THEN
    DROP TABLE IF EXISTS t_zmng;
    DROP TABLE IF EXISTS t_zmpo;
    
    IF _KontrGUID != '' THEN
                    set @_KontrGUID = _KontrGUID;
        IF NOT EXISTS(
            SELECT k.GUID FROM kontrah k WHERE k.GUID = _KontrGUID
        ) THEN
            SELECT "Nie znaleziono kontrahenta:" AS info, _KontrGUID;
            LEAVE SPROC;
        END IF;
    END IF;
    
    
    SET _GUID=concat('HT',uuid());
    
    CREATE TEMPORARY TABLE t_zmng SELECT n.* FROM zmng n WHERE n.guid = _SRCGUID;
    
    IF _KontrGUID = '' THEN
        SELECT n.KontrGUID INTO _KontrGUID FROM t_zmng n WHERE n.GUID = _SRCGUID;
    END IF;
    SET @_KontrGUID = _KontrGUID;

    SELECT n.Calc_ver INTO _Calc_ver FROM t_zmng n WHERE n.GUID = _SRCGUID;
    
    CREATE TEMPORARY TABLE t_zmpo SELECT p.* FROM t_zmng n, zmpo p WHERE p.idnng = n.GUID AND n.wersja = p.wersja; 
    
    IF @session.globals.Owner = 'HYDROMEGA' THEN
        UPDATE t_zmng t, v_kkn2 v SET t.katcol2 = IF(v.nieaktywna,0,t.katcol2) WHERE t.katcol2=v.klucz;
        UPDATE t_zmng t,t_zmpo p SET p.kat2=n.katcol2 WHERE p.idnng=n.guid;
    END IF;  

    UPDATE t_zmng t 
    SET
        t.idn = 0, t.tymczasowa = 1,
        t.guid = _GUID, t.nrzamw = '*', t.nrzamwkontr = '',
        t.status = 0, t.ilepozzreal = 0, t.wersja = 0,
        t.TerminRealizacji_Plan = NULL,
        t.localtime = NOW(),
        t.remotetime = NULL,
        t.idnuser = IFNULL(IFNULL(@session.Registration.IdnUser, @session.CheckLogonUserLogin), t.idnuser)
    ;
    
    IF _Calc_ver != 0 THEN
    --    Gdyby bylo = 0 to i tak przeliczamy wszystko w swiecie E czyli takze Kontrahenta
        UPDATE t_zmng t, kontrah k 
        SET
            t.uwagi = CONCAT('klon:',t.kontrsymbol,' zam:', t.nrzamw,'  dnia:', t.datawystaw),
            t.guid = _GUID,
            t.klasacenowa = k.klasacenowa,
            t.kontrguid = _KontrGuid, t.akwizytorguid = k.akwizytorguid
        WHERE 
            k.guid = _KontrGuid AND _KontrGuid <> ''
        ;
    END IF;
        
    IF (_ParamA=108 or _ParamC='UPDATE_zamowienieGUID') THEN -- docelowo zapotrzebowanie - przechowujemy guid
        UPDATE t_zmpo t SET zamowienieGUID=guid;
    END IF;  
    
    UPDATE t_zmpo t 
    SET
        t.idn = 0,
        t.guid = CONCAT('HT', UUID()),
        t.idnng = _GUID,
        t.tymczasowa = 1, t.zrealizowano = 0, t.zlecono = 0, 
        t.spakowano = 0, t.commision_guid = '',
        t.localtime = NOW(),
        t.remotetime = NULL,
        t.wersja = 0
    ;
    CALL _Session_Refresh_Variables('', '', '');
END IF; -- CLONE_ZM_NEW

IF _MODE = 'CLONE_ZMZP_TO_ZMZA' THEN    
    -- nie sprawdzam zrodlowego rodzaju
    SET @rodzaj=108; -- zapotrzebowanie
    SET @_magtyp=3;

    CALL ht_clone_tools('CLONE_ZM',_SRCGUID,'',@rodzaj,_ParamB,_ParamC);
    
    
    DELETE t FROM t_zmpo t WHERE t.magtyp=0 or t.usluga=6 or t.ilosc=0; -- bez pozycji przychodowych 
    DELETE t FROM t_zmpo t, TowrNg n WHERE n.guid=t.idntowr and n.wyroznik in ('W','PRZY','RHS'); -- bez pozycji dot wyrobow, przyrzadow i RHS
    -- tel Janusz 20250127 - wyłączenie usuwania RYS 
    DELETE t FROM t_zmpo t, zmpo p WHERE t.zamowienieGUID=p.zamowienieGUID and t.zamowienieGUID<>''; 
    SELECT count(*),max(idnng) INTO @ilepoz,@guidzm FROM t_zmpo;
    IF @ilepoz>0 THEN
        UPDATE t_zmng t SET 
            t.rodzaj=@rodzaj,t.datawystaw=CURRENT_DATE,t.datawplywu=CURRENT_DATE,t.ilepoz=@ilepoz,t.ilepozzreal=0,t.status=0,
            t.terminrealizacji=IF(t.terminrealizacji<CURRENT_DATE,CURRENT_DATE,t.terminrealizacji);
        UPDATE t_zmpo t SET t.rodzaj=@rodzaj,t.magtyp=@_magtyp,
            t.terminrealizacji=IF(t.terminrealizacji<CURRENT_DATE,CURRENT_DATE,t.terminrealizacji);
        INSERT INTO zmng SELECT * FROM t_zmng;
        INSERT INTO zmpo SELECT * FROM t_zmpo;
        CALL ht_pr_tool('AGG_ZM', @guidzm, 'DELETE', '', '', '');
        SELECT CONCAT('OK utworzono zapotrzebowanie - ilość pozycji: ',@ilepoz) as status;
    ELSE
        SELECT CONCAT('Dla wszystkich pozycji zlecenia było już zapotrzebowanie - nie tworzę') as status;
    END IF;
    -- dodać agregację
END IF;


IF _MODE = 'CLONE_ZMZP_TO_ZMDD' THEN    
    -- nie sprawdzam zrodlowego rodzaju
    SET @rodzaj=28; -- zapotrzebowanie
    SET @_magtyp=0;
    
    IF @session.globals.Owner = 'PBUCH' THEN
        SET _ParamC = 'UPDATE_zamowienieGUID'; -- zeby pozniej brac tylko te nie z updatowane.
    END IF;
    
    CALL ht_clone_tools('CLONE_ZM',_SRCGUID,'',@rodzaj,_ParamB,_ParamC);
    
    
    DELETE t FROM t_zmpo t WHERE t.magtyp=0; -- bez pozycji przychodowych 
    DELETE t FROM t_zmpo t, zmpo p WHERE t.zamowienieGUID=p.zamowienieGUID and t.zamowienieGUID<>''; 
    SELECT count(*) INTO @ilepoz FROM t_zmpo;
    IF @ilepoz>0 THEN
        UPDATE t_zmng t SET 
            t.rodzaj=@rodzaj,t.datawystaw=CURRENT_DATE,t.datawplywu=CURRENT_DATE,t.ilepoz=@ilepoz,t.ilepozzreal=0,t.status=0,
            t.terminrealizacji=IF(t.terminrealizacji<CURRENT_DATE,CURRENT_DATE,t.terminrealizacji);
        UPDATE t_zmpo t SET t.rodzaj=@rodzaj,t.magtyp=@_magtyp,
            t.terminrealizacji=IF(t.terminrealizacji<CURRENT_DATE,CURRENT_DATE,t.terminrealizacji);

        INSERT INTO zmng SELECT * FROM t_zmng;
        INSERT INTO zmpo SELECT * FROM t_zmpo;
        SELECT CONCAT('OK utworzono zamówienie DD - ilość pozycji: ',_VarStr(@ilepoz)) as status;
    ELSE
        SELECT CONCAT('Dla wszystkich pozycji zlecenia było już stworzone zamówienie DD - nie tworzę') as status;
    END IF;
END IF;


IF _MODE = 'CLONE_ZM_TO_ZM' THEN
    CALL ht_clone_tools('CLONE_ZM',_SRCGUID,'',_ParamA,_ParamB,_ParamC);
    SET @_magtyp := if(_ParamA in (27,52,91),2,0);
    
    IF _ParamA=87 THEN -- oferta
      SET @_magtyp := 3;
    END IF;  
    
    IF @session.globals.Owner = 'HYDROMEGA_zablokowane_mail_20150304_RG' THEN
    UPDATE t_zmpo t SET
        t.zamowienieGUID = IF(t.rodzaj=108, '', t.zamowienieGUID);
    END IF;  
    
    IF @session.globals.Owner = 'TRANSBUD' THEN
        UPDATE t_zmpo t  SET t.idnmagazyn=1,t.kat3=0,t.MagazynWys=1;
        UPDATE t_zmpo t,  kontrah k SET t.kat0=k.katcol0,t.kat1=k.katcol1,t.kat2=k.katcol2,
        t.kat3=k.katcol3,t.kat4=k.katcol4 WHERE t.kontrguid=k.guid;
        UPDATE t_zmng t SET t.datawplywu=CURRENT_DATE,t.katcol3=0,t.info5='',t.MagazynWys=1,t.idnmagazyn=1;
        UPDATE t_zmng t,  kontrah k SET
        t.katcol0=k.katcol0,t.katcol1=k.katcol1,t.katcol2=k.katcol2,t.katcol3=k.katcol3,t.katcol4=k.katcol4
        WHERE t.kontrguid=k.guid;
    END IF; 
    
    UPDATE t_zmng t SET t.rodzaj=IFNULL(_ParamA, t.rodzaj),t.datawystaw=CURRENT_DATE,t.terminrealizacji=CURRENT_DATE;

    UPDATE t_zmpo t SET t.rodzaj=IFNULL(_ParamA, t.rodzaj),t.magtyp=@_magtyp,t.terminrealizacji=CURRENT_DATE;

    INSERT INTO zmng SELECT * FROM t_zmng;
    INSERT INTO zmpo SELECT * FROM t_zmpo;
END IF;

IF _MODE = 'CLONE_ZM_PIEKARNIA' THEN
    SET @.jmam.debug = IFNULL(@.jmam.debug, 0);
    SET @.CLON.with.calc = IFNULL(@.CLON.with.calc, 0);
    -- na razie nie SET @.CLON.with.calc = IFNULL(@.CLON.with.calc, IF(@session.globals.Owner = 'JARZEBINSCY', 1, 0);
    CALL ht_clone_tools('CLONE_ZM',_SRCGUID,'',_ParamA,_ParamB,_ParamC);
    
    -- LOCK TABLES numdok WRITE;
    IF NOT @.jmam.debug THEN
        UPDATE numdok SET nr=nr+1 WHERE rodzaj=27 and magazyn=1;
        SELECT nr into @numer FROM numdok WHERE rodzaj=27 and magazyn=1;
    ELSE
        SELECT nr + 1 into @numer FROM numdok WHERE rodzaj=27 and magazyn=1;
    END IF;
    -- UNLOCK TABLES;
    

    UPDATE t_zmng t SET
        t.datawystaw=CURRENT_DATE,t.datawplywu=CURRENT_DATE,
        t.nrzamw=lpad(@numer,6,'0'),t.terminrealizacji=_ParamA, t.tymczasowa=0;
    
    UPDATE t_zmpo t SET t.terminrealizacji=_ParamA, t.tymczasowa=0, t.ilosc=t.ilosc_pierwotna,t.ilosc_zmiana = 0;

    DELETE t FROM t_zmpo t, v_ktw0 k WHERE k.klucz=t.kat5 AND k.param1='NIE_KLONUJ';
    
    ALTER TABLE t_zmpo ADD INDEX (idntowr,idnmagazyn);
        
    UPDATE t_zmpo t, TowrPo p SET
        p.zamowiono_oo = p.zamowiono_oo + t.ilosc
    WHERE p.idntowr=t.idntowr AND p.magazyn=t.idnmagazyn;

    IF @.CLON.with.calc THEN
        CALL C_HT_OPZM('recreate.`TE_xxxx`', '', 'ZM', 'TE', '', '', '', '', '' ,'', '');
        INSERT IGNORE INTO TE_zmng SELECT * FROM t_zmng;
        INSERT IGNORE INTO TE_zmpo SELECT * FROM t_zmpo;
        SET @_GUID = (SELECT n.GUID FROM TE_zmng n LIMIT 1);        -- SELECT @_GUID;

        CALL C_HT_OPZM('TE.PO.POST', '', 'ZM', 'TE', @_GUID, '', '', '', '', '', '');
        CALL C_HT_xxNgPo_DO('PO.CALC_LP', 'ZM', 'n:TE;p:TE', @_GUID, '', '', '', IF(@session.globals.Owner = 'KONKOL', '2', ''), '', '');
        --    nalicz ceny ale ... Tylko_nowe_i_Wymuszone czyli majace IDN = 0 lub ExtFlags zawierające %(<-Ceny)%
        -- CALL C_HT_OPZM('TE.xxpo<-POZYCJE_CENYRABAT', '', 'ZM', 'TE', @_GUID, '', '', '', '', '', 'Tylko_nowe_i_Wymuszone');
        CALL C_HT_OPZM('TE.NG.POST', '', 'ZM', 'TE', @_GUID, '', '', '', '', '', '');
        IF NOT @.jmam.debug THEN
            INSERT INTO zmng SELECT * FROM TE_zmng;
            INSERT INTO zmpo SELECT * FROM TE_zmpo;
        END IF;
    END IF;

    IF NOT @.CLON.with.calc THEN
        SET @.jmam.INS = 0;
        IF NOT @.jmam.debug THEN
            SET @.jmam.INS = 1;
            INSERT INTO zmng SELECT * FROM t_zmng;
            INSERT INTO zmpo SELECT * FROM t_zmpo;
        END IF;
    END IF;
END IF;

IF _MODE = 'CLONE_ZM_PIEKARNIA_ALL' THEN
    -- select guid from tb_zmng limit 1 into _SRCGUID;
    -- CALL ht_clone_tools('CLONE_ZM_PIEKARNIA_ALL', '', '', '2011-10-06','','');
    BEGIN
        DECLARE _Local_SRCGUID VARCHAR(38);
        
        DECLARE _done BOOL DEFAULT FALSE;
        DECLARE _c_proc CURSOR FOR
            SELECT 
                guid
            FROM tb_zmng
            ;
        
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET _done = TRUE;
        OPEN _c_proc;
            loop_CLONE_ZM_PIEKARNIA_ALL: LOOP
                FETCH _c_proc INTO
                    _Local_SRCGUID
                ;
                IF _done THEN
                    LEAVE loop_CLONE_ZM_PIEKARNIA_ALL;
                ELSE
                    CALL ht_clone_tools('CLONE_ZM_PIEKARNIA', _Local_SRCGUID, '', _ParamA, _ParamB, _ParamC);
                END IF;
            END LOOP;
        CLOSE _c_proc;
    END;            
    SELECT count(*) as ile FROM tb_zmng;
END IF;

IF _MODE = 'CLONE_VAT' THEN
    -- mode, ktory klonuje rekordy z tabeli opng_vat, do wywolania z innych modow, podajemy _SRCGUID, guid docelowy (_GUID) (_ParamA)
    -- i ewentualnie 'storno' jako _ParamB
    -- CALL ht_clone_tools('CLONE_VAT',_SRCGUID,'',_GUID,'','');
    -- CALL ht_clone_tools('CLONE_VAT',_SRCGUID,'',_GUID,'storno','');
    -- w _ParamB może być 'storno'
    -- w _ParamC może być 'fix'
    DROP TABLE IF EXISTS t_opng_vat;
    
    CREATE TEMPORARY TABLE t_opng_vat 
    SELECT * FROM opng_vat WHERE idnoper=_SRCGUID;
    
    UPDATE t_opng_vat t SET t.idnoper=_ParamA;

    IF _ParamB = 'storno' THEN 
        UPDATE t_opng_vat SET 
            Netto=-Netto, Vat=-Vat, Brutto=-Brutto, 
            NettoWal=-NettoWal, VatWal=-VatWal, BruttWal=-BruttoWal;     
    END IF;

    IF _ParamC = 'fix' THEN 
        -- było ... UPDATE t_opng_vat SET fixed=1 WHERE netto<>0 or brutto<>0;     
        -- od 31 V 2022 dajemy fixed=2 aby edycja była całkowicie zablokowane (przelicz. PLN również) - zad. 55995 spr. BALTIMY
        UPDATE t_opng_vat SET fixed=2 WHERE netto<>0 or brutto<>0;     
    END IF;

    INSERT INTO opng_vat SELECT * FROM t_opng_vat;
END IF;

IF _MODE = 'CLONE_OPPO_BUDZET' THEN
    -- mode, ktory klonuje rekordy z tabeli oppo_budzet, do wywolania z innych modow, podajemy _SRCGUID, guid docelowy (_GUID) (_ParamA)
    -- CALL ht_clone_tools('CLONE_OPPO_BUDZET',_SRCGUID,'',_GUID,'','');
    DROP TABLE IF EXISTS t_oppo_budzet;
    
    CREATE TEMPORARY TABLE t_oppo_budzet
    SELECT * FROM oppo_budzet WHERE idnoper=_SRCGUID;
    UPDATE t_oppo_budzet t SET t.idnoper=_ParamA,t.idn=0;
    INSERT INTO oppo_budzet SELECT * FROM t_oppo_budzet;
END IF;

IF _MODE = 'CLONE_TO_KANCELARIA' THEN
    IF (SELECT IFNULL(rodzaj,'') FROM zmng WHERE guid=_SRCGUID) NOT IN (27,28) THEN
        SELECT "Pismo nie zarejestrowane - Zły rodzaj dokumentu pierwotnego" AS MSG;
        LEAVE SPROC;
    END IF;        

    IF (SELECT COUNT(*) FROM opng WHERE guid=MD5(_SRCGUID))  >0 THEN
        SELECT "Pismo nie zarejestrowane - Dla danego dokumentu został już utworzony dokument wychodzący" AS MSG;
        LEAVE SPROC;
    END IF;
         
    SELECT MD5(GUID) INTO @GUID_NG FROM zmng WHERE guid=_SRCGUID;
    
    DROP TEMPORARY TABLE IF EXISTS t_clone;
    CREATE TEMPORARY TABLE t_clone
    SELECT z.rodzaj,z.GUID,z.datawystaw,z.kontrguid,z.idnuser,(SELECT p.towrnazwa FROM zmpo p WHERE p.idnNG=z.GUID LIMIT 1) AS opis,z.katcol0,
        if(z.rodzaj=27,z.osobaGUID,(SELECT o.osobaGUID from _user_accounts o where o.login=z.idnuser limit 1)) as osobaGUID 
    FROM zmng z 
    WHERE z.guid=_SRCGUID;

    INSERT INTO opng (GUID,Family_GUID,rodzaj,nrwewn,datasprzed,datawystaw,datawplywu,grupaoper,kontridn,kontrsymbol,
        dotyczy,idnuser,kontrnazwa,kontrnip,kontradres,kontrguid,platnikGUID,ugrpGUID,osobaGUID,lp_ks_podawcza_str,info5,
        Calc_Ver,kancelaria_kierunek,CreatorGUID,katcol0,create_At)
    SELECT @GUID_NG,t.GUID,104,'',t.datawystaw,t.datawystaw,t.datawystaw,4,k.idn,k.symbol,
        CONCAT(IF(t.rodzaj=27,'ZM OO ','ZM DD '),t.opis),t.idnuser,k.nazwa,k.nip,'k.adres',t.kontrguid,t.kontrguid,'ALL',t.osobaGUID,'','e-mail',
        4,2,@CREATOR,t.katcol0,NOW() 
    FROM t_clone t 
    LEFT JOIN kontrah k ON t.kontrguid=k.guid AND IFNULL(t.kontrguid,'')<>'';
    
    CALL erp_obj_counters_values_tools('EXECUTE', 'opng.lp_ks_podawcza_str', 104, 0, @GUID_NG, 'opng', 'clear.before', '', '');    
    CALL erp_obj_counters_values_tools('EXECUTE', 'opng.nrwewn', 104, 0, @GUID_NG, 'opng', 'clear.before', '', '');    
    
    SELECT nrwewn INTO @numer_wewn FROM opng WHERE guid=@GUID_NG;
        
    UPDATE zmng SET nrzamw=@numer_wewn, info6=CONCAT('Pismo wychodzące zarejestrowane ',NOW()) WHERE guid= _SRCGUID;

    SELECT "Pismo wychodzące zostało poprawnie zarejestrowane" AS MSG;
END IF;

-- ht_clone_tools('MAG_CLEAN','','',rodzaj,zmagazynu,domagazynu);
-- ht_clone_tools('MAG_CLEAN','','',11,1516,0);

IF _MODE IN ('MAG_CLEAN','MAG_CLEAN_MSG') THEN
    SET @debug='x';
    SET 
      @.UserGUID = (@UG := IFNULL(@SYSTEM.Client.Session.log_USER_GUID, IFNULL(@session.INFO.User_GUID, @session.Registration.UserGUID))),
      @.UserLogin = IFNULL(@SYSTEM.Client.Session.log_USER, IFNULL(@session.INFO.User_Login, @session.Registration.UserLogin));
    SET @.UserLogin = ifnull(@.UserLogin,'root');

    -- CALL ht_clone_tools('CLONE_OP_TO_OP',_SRCGUID,'','','','');
    SET _Rodzaj=_VarINT(_ParamA);
    SET _Rodzaj=IF(_Rodzaj not in (9,10,11),11,_Rodzaj);
    SELECT guid,_VarINT(_ParamB),IF(_Rodzaj=9,_VarINT(_ParamC),0)
    into _SRCGUID,_Mag,_MagDo
    FROM opng
    WHERE rodzaj=_Rodzaj and deleted=0 and kontrguid='' 
    ORDER BY idn desc limit 1;
    -- SELECT _SRCGUID,_MAG,_MagDo;
    CALL ht_clone_tools('CLONE_OP',_SRCGUID,'','','','');
    TRUNCATE t_oppo;
    UPDATE t_opng set zmagazynu=_MAG,domagazynu=_MagDo,datawystaw=CURRENT_DATE,datawplywu=CURRENT_DATE,datasprzed=CURRENT_DATE,
    uwagi='',info1='',info2='',info3='',info4='',katcol0=0,katcol1=0,katcol2=0,katcol3=0,katcol4=0,idnuser=@.UserLogin;
    INSERT INTO t_oppo (guid,idnoper,idnoperfin,datawystaw,datawplywu,datasprzed,rodzaj,tymczasowa,idntowr,ilosc,
        towrsymb,towrnazwa,jednostka,zmagazynu,domagazynu,
        kat0,kat1,kat2,kat3,kat4,kat5,kat6,kat7,kat8,kat9)
    SELECT uuid(),t.guid,t.guid,t.datawystaw,t.datawplywu,t.datasprzed,t.rodzaj,t.tymczasowa,p.idntowr,p.ilosc,
        tw.symbol,tw.nazwa,tw.jednostka,t.zmagazynu,t.domagazynu,
        t.katcol0,t.katcol1,t.katcol2,t.katcol3,t.katcol4,tw.katcol0,tw.katcol1,tw.katcol2,tw.katcol3,tw.katcol4
    FROM t_opng t, TowrPo p,TowrNg tw 
    WHERE p.idntowr=tw.guid AND p.magazyn=_MAG AND p.ilosc>0;
    
    IF @Session.globals.Owner IN ('PLISZKA') THEN
        UPDATE t_opng SET Calc_Ver = 3;
        UPDATE t_oppo SET Calc_Ver = 3;
    END IF;

    SELECT COUNT(*),MAX(idnoper) INTO @ile,@ht_clone_tools.newguid FROM t_oppo;
    IF @ile>0 THEN
        INSERT INTO opng SELECT * FROM t_opng;
        INSERT INTO oppo SELECT * FROM t_oppo;
        INSERT IGNORE INTO log (useridn,czas,miejsce,czynnosc,GUIDlink,IDSession,osobaguid,info)
            SELECT  @.UserLogin,now(),3,2,@ht_clone_tools.newguid,'',@.UserGUID,'Czyszczenie magazynu';
        IF _MODE='MAG_CLEAN_MSG' THEN    
            SELECT CONCAT("Utworzono dokument. ilość pozycji: ",_VarInt(@ile)) as msg;
        END IF;
    ELSE
        IF _MODE='MAG_CLEAN_MSG' THEN    
            SELECT "Magazyn jest już pusty!" as msg;
        END IF;
    END IF;
END IF;

END$$


DELIMITER ;

SHOW WARNINGS;

/*
wykorzystanie ht_clone_tools

FDBCZleceniaProd
PPM StworzZapotrzebowanie
call ht_clone_tools(''CLONE_ZMZP_TO_ZMZA'',''%GUID'','''','''','''','''')

PPM StworzRecepture
call ht_clone_tools(''CLONE_ZMZP_TO_RCNG'',''%GUID'','''','''','''','''')

PPM StworzZmDD
call ht_clone_tools(''CLONE_ZMZP_TO_ZMDD'',''%GUID'','''','''','''','''')

FDBCKancelaria
PPM CloneOneOper
CALL ht_clone_tools(''CLONE_OP_TO_OP'', ''%GUID'',  '''' , ''KANCELARIA'', '''', '''')

FDBCRozrachunki
PPM CLONE_STFV_WAL_ROWN_VAT
CALL ht_clone_tools(''%s'', ''%s'',  '''' , '''', '''', '''')
Mode:
CLONE_STFV_WAL_ROWN_VAT_CHECK
CLONE_STFV_WAL_ROWN_VAT

PPM CLONE_ZTFV_WAL_ROWN_VAT
CALL ht_clone_tools(''%s'', ''%s'',  '''' , '''', '''', '''')
Mode:
CLONE_ZTFV_WAL_ROWN_VAT_CHECK
CLONE_ZTFV_WAL_ROWN_VAT

PPM CloneOneOper
CALL ht_clone_tools(''CLONE_OP_TO_OP'', ''%GUID'',  '''' , '''', '''', '''')


FDBCSprzedaz
PPM CLONE_TO_PZRW
CALL ht_clone_tools(''CLONE_TO_PZRW'', ''%srcGUID'',  '''' , ''%Mag'', '''', '''')

PPM CzyszczenieStanuMagazynu
CALL ht_clone_tools(''MAG_CLEAN_MSG'','''','''',%Rodzaj,%zmagazynu,%domagazynu);

PPM CLONE_TO_MGMMREZ
CALL ht_clone_tools(''CLONE_TO_MM_REZ'', ''%srcGUID'',  '''' , '''', '''', '''')

PPM KorektaDoDokMag
CALL ht_clone_tools(''CLONE_TO_MGKOR'',''%GUID'', '''', %Mag, '''','''')

PPM RWzOP
CALL ht_clone_tools(''CLONE_OP_TO_MGRW'', '''',  '''' , ''%Mag'', ''%Rodzaj'', ''%Daty'')

PPM CLONE_TO_MGMM
CALL ht_clone_tools(''CLONE_OP_TO_MGMM'', '''',  '''' , ''%Mag'', ''%Rodzaj'', ''%Daty'')

PPM CloneSelOper
CALL ht_clone_tools(''CLONE_OP_TO_MGWZ'', '''',  '''' , ''%From'', ''%To'', ''%Daty'')

PPM CLONE_TO_MGWZ_Z_DOSTAW
CALL ht_clone_tools(''@Mode'', ''%SrcGUID'',  '''' , ''%Mag'', '''', '''')
Mode:
CLONE_TO_MGWZ_DODOSTAWY_CHECK
CLONE_TO_MGWZ_DODOSTAWY

PPM CloneOneOper
CALL ht_clone_tools(''CLONE_OP_TO_OP'', ''%s'',  '''' , '''', '''', '''')

PPM CLONE_ZTFV_WAL_ROWN_VAT
CALL ht_clone_tools(''%s'', ''%s'',  '''' , '''', '''', '''')
Mode:
CLONE_ZTFV_WAL_ROWN_VAT_CHECK
CLONE_ZTFV_WAL_ROWN_VAT

PPM CLONE_TO_MGPZ
CALL ht_clone_tools(''CLONE_TO_MGPZ'', ''%s'',  '''' , ''%s'', '''', '''')

PPM CLONE_TO_MGWZ
CALL ht_clone_tools(''CLONE_TO_MGWZ'', ''%s'',  '''' , ''%s'', '''', '''')

PPM CLONE_STFV_WAL_ROWN_VAT
CALL ht_clone_tools(''%s'', ''%s'',  '''' , '''', '''', '''')
Mode:
CLONE_STFV_WAL_ROWN_VAT_CHECK
CLONE_STFV_WAL_ROWN_VAT

PPM KlonujFVwewnzUEiIM
CALL ht_clone_tools(''CLONE_ZT_TO_SW'',''%s'','''','''','''','''')

EZakupESimple
PasteHeader
call ht_clone_tools(''CLONE_FROM_OP'',''%s'','''','''',''%s'','''')

ERatyWizard
CALL ht_clone_tools(''%s'', ''%s'', '''', %s, '''', '''');
Mode:
'tworz.rozrach.init
tworz.rozrach.apply

EOpngE
DoApplyUpdate rodzaj = CWeFV
CALL ht_clone_tools(''UPDATE_SW'', ''%s'', '''','''','''','''')
*/


/*
$Log: ht_clone_tools.sql,v $
Revision 1.166  2026/01/22 11:30:44  jmam
Zgrywanie  stan na 22 I 2026 $send$

Revision 1.165  2026/01/21 12:51:38  apro
ksef

Revision 1.164  2025/10/09 11:50:59  apro
mod. dla HM -ZMZA/ZMDD  termin realizacji nie wcześniejszy niz dziś

Revision 1.163  2025/06/06 05:45:20  apro
sev - czyszczenie info2

Revision 1.162  2025/05/12 12:23:33  apro
alias..
$SEND$

Revision 1.161  2025/05/09 13:03:56  apro
$SEND$
t.round

Revision 1.160  2025/05/06 13:18:53  apro
HYD - zlecenia nieaktywne

Revision 1.159  2025/04/03 12:16:37  apro
MPGK - klonowanie z data biezącą lub oryginalną

Revision 1.158  2025/03/27 06:22:57  apro
rozliczenia

Revision 1.157  2025/03/05 13:38:03  apro
poprawka dzielenia RO - kursy

Revision 1.156  2025/02/25 09:31:16  waliant
$SEND$ Warningi, mnostwo warningow

Revision 1.155  2025/02/20 06:49:22  apro
podział rozrach na raty - crist zerowanie oryginału

Revision 1.154  2025/02/14 11:25:38  apro
harmonogramy Crist

Revision 1.153  2025/01/29 10:07:24  apro
crist

Revision 1.152  2024/08/14 05:53:54  apro
przywrócenie CRIST - NrFVWewn

Revision 1.151  2024/08/08 07:47:49  apro
porządki c.d.

Revision 1.150  2024/08/08 07:42:41  apro
porządki, czyszczenie lp_ks_podawcza_str w CLONE_STFV_WAL_ROWN_VAT

Revision 1.149  2024/07/31 05:40:02  apro
reformat

Revision 1.148  2024/07/30 13:23:20  apro
reformat; porządki w kodzie

Revision 1.147  2024/07/30 12:26:54  apro
podział plików

Revision 1.146  2024/07/30 12:17:56  apro
HYDROMEGA ZMZA bez RHS

Revision 1.145  2024/07/26 05:27:04  slon
no message

Revision 1.144  2024/07/02 08:09:53  jmam
$SEND$ - prace z V - VI 2024 - popr. numeracji i tabelki vat

Revision 1.143  2023/12/21 23:58:25  rafalg
no message

Revision 1.142  2023/11/16 07:09:42  apro
czyszczenie nierozliczony (na 2)
$SEND$

Revision 1.141  2023/11/03 10:13:10  rafalg
zmiana dla skok

Revision 1.140  2023/09/12 07:33:46  apro
crist - NrFvWewn do nrdokfin w klonowaniu do SW

Revision 1.139  2023/08/17 10:02:52  rafalg
poprawka statusemail

Revision 1.138  2023/07/31 05:53:00  apro
$SEND$
czyszczenie nierozliczony

Revision 1.137  2023/07/24 10:20:36  apro
mod dla RO xx

Revision 1.136  2023/06/27 05:53:45  apro
Prabuty

Revision 1.135  2023/06/20 11:55:07  rafalg
zmiany dla baltima

Revision 1.134  2023/03/31 08:56:02  rafalg
zerowanie statusu email

Revision 1.133  2022/12/19 06:50:18  apro
pułapka, błąd w log

Revision 1.132  2022/11/25 13:24:47  rafalg
no message

Revision 1.131  2022/07/22 09:41:30  rafalg
zmiany SEVENET

Revision 1.130  2022/07/11 06:03:56  apro
zamienione pola
$SEND$

Revision 1.129  2022/03/01 12:33:45  apro
create_at.... błędne aliasy
$SEND$

Revision 1.128  2022/03/01 12:15:58  rafalg
poprawka
$SEND$

Revision 1.127  2022/02/22 08:57:26  apro
$SEND$

Revision 1.126  2022/02/18 17:15:22  rafalg
psm

Revision 1.125  2022/02/16 06:23:39  apro
kopiowanie

Revision 1.124  2021/10/29 09:31:55  rafalg
wylaczenie z klonowania czesci nowych pol

Revision 1.123  2021/07/21 10:02:51  rafalg
modyfikacja zmiennej  idnuser

Revision 1.122  2021/05/17 10:23:49  apro
popr. MAG_CLEAN;
porzadki z UTF

Revision 1.121  2021/04/12 12:54:17  rafalg
poprawka

Revision 1.120  2021/03/10 07:40:38  rafalg
zerowanie wystawiono note w op_to_op

Revision 1.119  2021/01/26 10:59:52  rafalg
zmiany dla VENSKA

Revision 1.118  2020/12/18 09:28:16  rafalg
Tworzenie SW dla VEnskiej

Revision 1.117  2020/11/02 13:18:06  rafalg
korekta SEVENET

Revision 1.116  2020/10/27 08:20:31  rafalg
poprawka w SW SEVENET

Revision 1.115  2020/08/18 11:47:47  rafalg
ZADANIE 53417, 52924

Revision 1.114  2020/08/10 05:40:50  apro
oppo_budzet, poprawki dla SKOKu

Revision 1.113  2019/05/30 11:17:56  rafalg
Korekta to kacelaria

Revision 1.111  2019/05/29 11:18:35  rafalg
Zmiany w clone_to_kancelaria

Revision 1.110  2019/05/24 11:01:31  rafalg
CLONE_TO_KANCELARIA

Revision 1.109  2019/04/12 08:41:59  rafalg
Zmiany dla HUAPOL (IFDEF RELACOM)

Revision 1.108  2018/12/04 09:40:00  rafalg
Zmiany w RO WN

Revision 1.107  2018/10/26 10:59:20  rafalg
zerowanie wartosci magazynowej dla SW

Revision 1.106  2018/09/06 10:39:09  apro
porządki z polliterkami

Revision 1.105  2018/07/12 05:06:31  apro
$SEND$
dodanie klonowaia budżetu

Revision 1.104  2018/05/17 12:11:06  rafalg
Modyfikacja "rozbijanie na raty"

Revision 1.103  2018/03/26 14:13:49  jmam
$SEND$

Revision 1.102  2018/03/20 12:34:43  rafalg
Zmiany @ loginu uzytkownika

Revision 1.101  2018/03/13 13:20:44  rafalg
zmiany w mag_cor

Revision 1.100  2018/02/14 06:08:12  rafalg
poprawka w klonowaniu dla crist

Revision 1.99  2018/01/10 08:44:25  rafalg
Tworzenie rozrachunk體 dla crist-a

Revision 1.98  2017/10/20 12:45:23  rafalg
przeliczanie oppo_mag w mag_rez

Revision 1.97  2017/09/29 13:13:42  rafalg
Klonowanie przez magazyn rezer - CRIST

Revision 1.96  2017/09/07 08:50:29  rafalg
Czyszczenie p锟絣 grp_ przy klonowaniu oppo

Revision 1.95  2017/08/28 06:49:59  rafalg
Tworzenie SW dla SEVENET

Revision 1.94  2017/08/07 10:09:58  rafalg
Poprawka SEL

Revision 1.93  2017/08/04 06:30:19  rafalg
Dodanie CLONE_TO_MGKOR

Revision 1.92  2017/07/28 08:10:19  rafalg
#Column 'lp' in field list is ambiguous#

Zmiany w CLONE_OP_SEL

Revision 1.91  2017/05/18 11:08:07  apro
$SEND$ nie ten katcol :)

Revision 1.90  2017/05/18 10:42:19  apro
dodanie opcji nie klonuj w v_ktw0 - JARZ
$SEND$

Revision 1.89  2017/04/19 05:16:28  rafalg
Zmiana uztkownika przy tworzeniu SW

Revision 1.88  2017/04/14 05:11:19  apro
kosmetyka - log na koniec

Revision 1.87  2017/04/14 05:08:59  apro
poprawki podziału dla KONKOLa

Revision 1.86  2017/04/11 10:36:23  apro
Specjalne klonowanie (podział) zam dla KONKOLA

Revision 1.85  2017/03/29 13:09:46  jmam
$SEND$

Revision 1.84  2017/03/29 12:40:29  jmam
$SEND$

Revision 1.83  2017/03/22 08:55:04  apro
wcięcia

Revision 1.82  2017/03/21 15:40:07  jmam
$SEND$

Revision 1.81  2017/03/21 11:40:41  rafalg
no message

Revision 1.80  2017/03/21 10:00:54  jmam
$SEND$

Revision 1.79  2017/03/15 12:44:58  jmam
$SEND$

Revision 1.78  2017/03/02 07:12:28  apro
kosmetyka - czyszczenie napisow i UTF8

Revision 1.77  2017/02/10 09:18:23  jmam
$SEND$

Revision 1.76  2016/11/29 15:31:57  jmam
$SEND$

Revision 1.75  2016/10/12 11:35:19  rafalg
Czyszczenie 'GUID_dostawy'   w klonach PZ z dokumentow rozchodowych

Revision 1.74  2016/05/17 09:14:17  apro
poprawki klonowania storna

Revision 1.73  2016/05/13 06:55:35  apro
deduplikacja kodu

Revision 1.72  2016/04/13 11:53:37  apro
poprawka CLONE_OP - niesłusznie był tam klonowany opng_vat - to nie ten mod!

Revision 1.71  2016/03/04 07:23:21  rafalg
Zmiany w CLONE_ZM_TO_ZM TRANSBUD

Revision 1.70  2016/02/04 12:09:53  rafalg
Zmiany w klonowaniu zam dla TRANSBUDU

Revision 1.69  2016/02/02 07:10:48  slon
w CLONE_ZT_TO_SW zerowanie wartosci kancelaria_kierunek.

Revision 1.68  2015/12/04 12:47:42  rafalg
zerowanie wartosci przy tworzeniu WZ z zaznaczonych dokumentow.

Revision 1.67  2015/10/22 06:23:27  slon
dodanie zerowania idnwz

Revision 1.66  2015/07/16 12:11:16  max
[crm:040284]

Revision 1.65  2015/06/26 06:19:28  apro
poprawka klonowania

Revision 1.64  2015/05/11 09:44:21  slon
no message

Revision 1.63  2015/05/08 10:46:20  slon
pbuch

Revision 1.62  2015/04/01 08:12:21  apro
dodanie klonowania ZP -> receptura

*/
