 SET NAMES UTF8;
DELIMITER $$

DROP PROCEDURE IF EXISTS ht_banki $$
CREATE DEFINER=`root`@`localhost` PROCEDURE ht_banki(
    IN _MODE VARCHAR(150),
    IN _IDNBank INT,
    IN _GUID VARCHAR(38),
    IN _PARAM_A VARCHAR(250),
    IN _PARAM_B VARCHAR(250)
)

-- CALL ht_banki('IMPORT_INIT',0,'','','');
-- CALL ht_banki('IMPORT_CLEAN',0,'','','');
-- CALL ht_banki('IMPORT_ALL',_IDNBANK,_GUID,_PARAM_A,_PARAM_B);
-- CALL ht_banki('internal.getkontrah',0,'',_PARAM_A,_PARAM_B);
-- INSERT INTO t_bank (GUID,lp,data,kwota,opis,kontrahnazwa,kontrahbankkonto,kontrGUID) ...

SPROC: BEGIN

    -- DECLARE _BNGUID VARCHAR(38) DEFAULT '';
    DECLARE _KontrGUID VARCHAR(38) DEFAULT '';
    
    SET @ht_banki_result := -1;

    IF _MODE = 'IMPORT_INIT' THEN
        CALL ht_banki('IMPORT_CLEAN',0,'','','');
    -- struktura przejsciowa dla Seby - docelowo do usuniecia
        CREATE TEMPORARY TABLE temp_bank ( 
        idnkontrah INT NOT NULL, 
        data DATE NOT NULL , 
        kwota DOUBLE( 16, 4 ) NOT NULL , 
        mc INT NOT NULL , 
        lp INT , 
        rok INT NOT NULL,
        opis VARCHAR(250) NOT NULL,
        GUID VARCHAR(38) NOT NULL,
        subkonto VARCHAR(38),
        HT_Uwagi VARCHAR(50) NOT NULL,
        kontrahnazwa VARCHAR(200) NOT NULL,
        kontrahNrKonta VARCHAR(50) NOT NULL,
        kontrahbankkonto VARCHAR(150) NOT NULL,
        idnbank INT NOT NULL,
        kontrGUID VARCHAR(38),
        dochod INT NOT NULL DEFAULT 0,
        KEY idnkontrah (idnkontrah),
        UNIQUE KEY GUID (GUID) 
        );
        -- docelowa tabela tymcz. z ktorej importowane sa zapisy
        
        CREATE TEMPORARY TABLE t_bank ( 
        GUID VARCHAR(38) NOT NULL,
        lp INT, 
        data DATE NOT NULL , 
        kwota DOUBLE(16,4) NOT NULL, -- konwencja: - kwota dodatnia to BN WN
        opis VARCHAR(250) NOT NULL,
        kontrahnazwa VARCHAR(200) NOT NULL,
        kontrahbankkonto VARCHAR(150) NOT NULL,
        kontrGUID VARCHAR(38),
        KEY kontrguid (kontrguid),
        UNIQUE KEY GUID (GUID) 
        );
        
                
    END IF;
    
    IF _MODE = 'IMPORT_CLEAN' THEN
        DROP TEMPORARY TABLE IF EXISTS temp_bank;
        DROP TEMPORARY TABLE IF EXISTS t_bank;
    END IF;

/*
    IF _MODE = 'ALL' THEN
        SET @ht_bank_result := -1;
        BEGIN
            DECLARE done BOOL DEFAULT FALSE;
            DECLARE c_proc CURSOR FOR
                SELECT GUID FROM t_bank;
            DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
            OPEN c_proc;
              loop2: LOOP
                FETCH c_proc INTO _BNGUID;
                IF done THEN
                    LEAVE loop2;
                ELSE
                    CALL ht_banki('IMPORT_ONE',_IDNBANK,_BNGUID,_PARAM_A,_PARAM_B);
                END IF;
            END LOOP;
            CLOSE c_proc;
            SELECT 0 as status, "OK" as info;
        END;
         
    END IF;
*/    

    IF _MODE = 'internal.getkontrah' THEN

        UPDATE t_opng t, kontrah k SET 
            t.platnikguid=k.platnikguid,t.kontrsymbol=k.symbol,t.kontrnazwa=k.nazwa,t.kontrnip=k.nip,
            t.kontradres=CONCAT(IFNULL(CONCAT(k.ulica,', '),''),ifnull(k.zipcode,''),' ',k.nazwamiasta),
            t.katcol0=k.katcol0,t.katcol1=k.katcol1,t.katcol2=k.katcol2,t.katcol3=k.katcol3,t.katcol4=k.katcol4,
-- TODO: sprawdzic pobieranie kontaFK
            t.kontofk=if(t.rodzaj=36,k.kontofk,k.kontofk2),
            t.kontrpodzialnip=k.podzialnip

        WHERE t.kontrguid=k.guid;
    END IF;

    IF _MODE = 'IMPORT_ALL' THEN
    
        DROP TEMPORARY TABLE IF EXISTS t_opng;
        CREATE TEMPORARY TABLE t_opng like opng;
        ALTER TABLE t_opng DROP COLUMN idn;
        ALTER TABLE t_opng add column idn int not null default 0 first;
        
        IF _PARAM_B LIKE '%DELETE%' THEN
            DELETE o FROM opng o, t_bank t WHERE o.GUID=t.GUID AND o.CRozliczonewal=0;
        END IF;

        INSERT INTO t_opng (rodzaj,cwn,pozycjawyciagu,nrraportu,nrkasy,guid,datawystaw,zaplacono, kontrguid,rozrachunek,remotetime,opis)
        SELECT
            IF(t.kwota>0,36,37) as rodzaj,
            IF(t.kwota>0,0,1) as cwn,
            lp as pozycjawyciagu,
            CONCAT('WB',t.data) as nrwyciagu,
            _IDNBank as nrkasy,
            t.guid,
            t.data as datawystaw,
            t.kwota as zaplacono,
            t.kontrguid,1 as rozrachunek,
            now() as remotetime,
            opis
        FROM t_bank t
        ;
        
        CALL ht_banki('internal.getkontrah',0,'',_PARAM_A,_PARAM_B);

        UPDATE t_opng o, operdoc d SET
            o.datasprzed=o.datawystaw,o.datawplywu=o.datawystaw,o.dataplatnosci=o.datawystaw,o.ugrpguid='ALL',
            o.platnikguid=o.kontrguid,
            o.rodzajdowodu=d.rodzajdowodu,o.rv_id=d.rv_id,o.grupaoper=d.grupa,o.gruparozrach=d.rztyp,
            o.ckwota=abs(o.zaplacono),o.ckwotawal=abs(o.zaplacono),o.kurs=1,o.kurs_rozliczen=1
        WHERE d.rodzaj=o.rodzaj;

        INSERT IGNORE INTO opng SELECT * FROM t_opng;

        DROP TEMPORARY TABLE t_opng;

        SET @ht_banki_result := -1;

    END IF;
    
END$$

DELIMITER ;

/*****************************************************
REWIZJE
******************************************************
$Log: ht_banki.sql,v $
Revision 1.3  2025/02/14 11:24:37  apro
zabezpieczenie przed duplikatami

Revision 1.2  2024/10/09 13:17:22  apro
kosmetyka

Revision 1.1  2015/04/30 08:41:46  apro
*** empty log message ***

*/
