-- --------------------------------------------------------
-- Host:                         127.0.0.1
-- Server version:               10.4.32-MariaDB - mariadb.org binary distribution
-- Server OS:                    Win64
-- HeidiSQL Version:             12.12.0.7122
-- --------------------------------------------------------

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!50503 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;


-- Dumping database structure for eksamena6v2
CREATE DATABASE IF NOT EXISTS `eksamena6v2` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci */;
USE `eksamena6v2`;

-- Dumping structure for table eksamena6v2.datums
CREATE TABLE IF NOT EXISTS `datums` (
  `id_datums` int(10) NOT NULL AUTO_INCREMENT COMMENT 'Unikāls numurs',
  `datums_no` date NOT NULL COMMENT 'Sākuma datums',
  `datums_lidz` date NOT NULL COMMENT 'Beigu datums',
  PRIMARY KEY (`id_datums`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='No kura līdz kuram datumam dotā informācija';

-- Dumping data for table eksamena6v2.datums: ~1 rows (approximately)
INSERT INTO `datums` (`id_datums`, `datums_no`, `datums_lidz`) VALUES
	(1, '2024-02-01', '2024-02-29');

-- Dumping structure for view eksamena6v2.dokumenta_nr
-- Creating temporary table to overcome VIEW dependency errors
CREATE TABLE `dokumenta_nr` (
	`Rēķina Nr.` VARCHAR(1) NOT NULL COMMENT 'Rēķina numurs' COLLATE 'utf8mb4_general_ci',
	`Līguma Nr.` VARCHAR(1) NULL COMMENT 'Līguma dotais numurs' COLLATE 'utf8mb4_general_ci',
	`Izdots` VARCHAR(1) NULL COLLATE 'utf8mb4_general_ci'
);

-- Dumping structure for table eksamena6v2.eka
CREATE TABLE IF NOT EXISTS `eka` (
  `id_eka` int(10) NOT NULL AUTO_INCREMENT COMMENT 'Unikāls numurs',
  `adrese` varchar(100) NOT NULL DEFAULT '' COMMENT 'Dotā adrese',
  `eka_info` varchar(20) NOT NULL DEFAULT '' COMMENT 'Dotās adreses informācija',
  PRIMARY KEY (`id_eka`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Ēkas informācija';

-- Dumping data for table eksamena6v2.eka: ~1 rows (approximately)
INSERT INTO `eka` (`id_eka`, `adrese`, `eka_info`) VALUES
	(1, 'Alkšņu iela 36, Jelgava, Latvija         ', 'PRIVĀTMĀJA');

-- Dumping structure for table eksamena6v2.ligums
CREATE TABLE IF NOT EXISTS `ligums` (
  `id_ligums` int(10) NOT NULL AUTO_INCREMENT COMMENT 'Unikāls numurs',
  `liguma_nr` varchar(20) NOT NULL DEFAULT '' COMMENT 'Līguma dotais numurs',
  `izdots` date NOT NULL COMMENT 'Līguma izdotais datums',
  PRIMARY KEY (`id_ligums`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Līguma informācija';

-- Dumping data for table eksamena6v2.ligums: ~1 rows (approximately)
INSERT INTO `ligums` (`id_ligums`, `liguma_nr`, `izdots`) VALUES
	(1, '30734110003', '2024-03-07');

-- Dumping structure for table eksamena6v2.mervienibas
CREATE TABLE IF NOT EXISTS `mervienibas` (
  `id_mervieniba` int(10) NOT NULL AUTO_INCREMENT COMMENT 'Unikāls numurs',
  `mervienibas` varchar(5) NOT NULL DEFAULT '' COMMENT 'Mērvienības nosaukums',
  PRIMARY KEY (`id_mervieniba`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Mērvienības dati priekš skaitītāja';

-- Dumping data for table eksamena6v2.mervienibas: ~3 rows (approximately)
INSERT INTO `mervienibas` (`id_mervieniba`, `mervienibas`) VALUES
	(1, 'kWh'),
	(2, 'A'),
	(3, 'gab');

-- Dumping structure for table eksamena6v2.pakalpojums
CREATE TABLE IF NOT EXISTS `pakalpojums` (
  `id_pakalpojums` int(10) NOT NULL AUTO_INCREMENT COMMENT 'Unikāls numurs',
  `rekins_id` int(11) NOT NULL COMMENT 'Rēķina id',
  `pakal_nosauk` varchar(50) NOT NULL COMMENT 'Pakalpojuma nosaukums',
  `id_skaititajs` int(11) NOT NULL COMMENT 'Skaitītāja id',
  `termina_ilg` varchar(20) DEFAULT NULL COMMENT 'Pakalpojuma termiņa ilgums',
  `apjoms` decimal(6,2) DEFAULT NULL COMMENT 'Pakalpojuma apjoms',
  `cena` decimal(7,6) DEFAULT NULL COMMENT 'Pakalpojuma cena',
  `mervieniba_id` int(11) DEFAULT NULL COMMENT 'Mērvienības id',
  `pvn_id` int(11) DEFAULT NULL COMMENT 'PVN id',
  PRIMARY KEY (`id_pakalpojums`) USING BTREE,
  KEY `FK_pakalpojums_rēķins` (`rekins_id`),
  KEY `FK_pakalpojums_mērvienības` (`mervieniba_id`),
  KEY `FK_pakalpojums_pvn` (`pvn_id`),
  KEY `FK_pakalpojums_skaitītājs` (`id_skaititajs`),
  CONSTRAINT `FK_pakalpojums_mērvienības` FOREIGN KEY (`mervieniba_id`) REFERENCES `mervienibas` (`id_mervieniba`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `FK_pakalpojums_pvn` FOREIGN KEY (`pvn_id`) REFERENCES `pvn` (`id_pvn`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `FK_pakalpojums_rēķins` FOREIGN KEY (`rekins_id`) REFERENCES `rekins` (`id_rekins`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `FK_pakalpojums_skaitītājs` FOREIGN KEY (`id_skaititajs`) REFERENCES `skaititajs` (`id_skaititajs`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Pakalpojuma informācija';

-- Dumping data for table eksamena6v2.pakalpojums: ~6 rows (approximately)
INSERT INTO `pakalpojums` (`id_pakalpojums`, `rekins_id`, `pakal_nosauk`, `id_skaititajs`, `termina_ilg`, `apjoms`, `cena`, `mervieniba_id`, `pvn_id`) VALUES
	(1, 1, '\nElektroenerģija ELEKTRUM IZDEVĪGAIS (beztermiņa)', 1, 'beztermina', 0.00, 0.000000, NULL, 1),
	(2, 1, '\nElektroenerģija 1 laika zonā', 1, '', 342.11, 0.156950, 1, 1),
	(3, 1, '\nPārvades un sadales pakalpojumi  PAMATA-1 3F', 1, '', 0.00, 0.000000, NULL, 1),
	(4, 1, '\nMaksa par elektroenerģijas piegādi', 1, '', 342.11, 0.039620, 1, 1),
	(5, 1, '\nMaksa par jaudas uzturēšanu', 1, '', 32.00, 0.820000, 2, 1),
	(6, 1, '\nMēneša maksa', 1, '', 1.00, 0.830000, 3, 1);

-- Dumping structure for table eksamena6v2.pvn
CREATE TABLE IF NOT EXISTS `pvn` (
  `id_pvn` int(10) NOT NULL AUTO_INCREMENT COMMENT 'Unikāls numurs',
  `pvn` decimal(4,2) NOT NULL DEFAULT 0.00 COMMENT 'PVN daudzums',
  PRIMARY KEY (`id_pvn`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='PVN informācija';

-- Dumping data for table eksamena6v2.pvn: ~1 rows (approximately)
INSERT INTO `pvn` (`id_pvn`, `pvn`) VALUES
	(1, 21.00);

-- Dumping structure for view eksamena6v2.rekina_dati
-- Creating temporary table to overcome VIEW dependency errors
CREATE TABLE `rekina_dati` (
	`rekina_nr` VARCHAR(1) NULL COMMENT 'Rēķina numurs' COLLATE 'utf8mb4_general_ci',
	`rekina_datums` DATE NULL COMMENT 'Rēķina izdotais datums',
	`adrese` VARCHAR(1) NULL COMMENT 'Dotā adrese' COLLATE 'utf8mb4_general_ci',
	`eka_info` VARCHAR(1) NULL COMMENT 'Dotās adreses informācija' COLLATE 'utf8mb4_general_ci',
	`pakal_nosauk` VARCHAR(1) NULL COMMENT 'Pakalpojuma nosaukums' COLLATE 'utf8mb4_general_ci',
	`skaititaja_nr` INT(11) NULL COMMENT 'Skaitītāja numurs',
	`radijums_no` DATE NULL COMMENT 'Rādijums no datuma',
	`radijums_lidz` DATE NULL COMMENT 'Rādījums līdz datumam',
	`periods_no` DATE NULL COMMENT 'Sākuma datums',
	`periods_lidz` DATE NULL COMMENT 'Beigu datums',
	`apjoms` DECIMAL(6,2) NULL COMMENT 'Pakalpojuma apjoms',
	`mervieniba` VARCHAR(1) NULL COMMENT 'Mērvienības nosaukums' COLLATE 'utf8mb4_general_ci',
	`cena` DECIMAL(7,6) NULL COMMENT 'Pakalpojuma cena',
	`summa_bez_pvn` DECIMAL(8,2) NULL,
	`pvn_likme` DECIMAL(4,2) NULL COMMENT 'PVN daudzums',
	`pvn_summa` DECIMAL(10,2) NULL,
	`summa_ar_pvn` DECIMAL(11,2) NULL,
	`rekina_kopsumma_bez_pvn` DECIMAL(30,2) NULL,
	`rekina_kopejais_pvn` DECIMAL(32,2) NULL,
	`REKINA_SUMMA_KOPA` DECIMAL(33,2) NULL
);

-- Dumping structure for table eksamena6v2.rekins
CREATE TABLE IF NOT EXISTS `rekins` (
  `id_rekins` int(10) NOT NULL AUTO_INCREMENT COMMENT 'Unikāls numurs',
  `ligums_id` int(10) NOT NULL DEFAULT 1,
  `rekina_nr` varchar(15) NOT NULL DEFAULT '' COMMENT 'Rēķina numurs',
  `izdots` date NOT NULL COMMENT 'Rēķina izdotais datums',
  PRIMARY KEY (`id_rekins`) USING BTREE,
  KEY `FK_rēķins_līgums` (`ligums_id`),
  CONSTRAINT `FK_rēķins_līgums` FOREIGN KEY (`ligums_id`) REFERENCES `ligums` (`id_ligums`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Rēķina informācija';

-- Dumping data for table eksamena6v2.rekins: ~0 rows (approximately)
INSERT INTO `rekins` (`id_rekins`, `ligums_id`, `rekina_nr`, `izdots`) VALUES
	(1, 1, '307901529310', '2024-03-07');

-- Dumping structure for table eksamena6v2.skaititajs
CREATE TABLE IF NOT EXISTS `skaititajs` (
  `id_skaititajs` int(10) NOT NULL AUTO_INCREMENT COMMENT 'Unikāls numurs',
  `eka_id` int(10) NOT NULL COMMENT 'Ēkas id',
  `skaititaja_nr` int(11) NOT NULL COMMENT 'Skaitītāja numurs',
  `datums_id` int(10) NOT NULL COMMENT 'Skaitītāja datums',
  `radijums_no` date DEFAULT NULL COMMENT 'Rādijums no datuma',
  `radijums_lidz` date DEFAULT NULL COMMENT 'Rādījums līdz datumam',
  PRIMARY KEY (`id_skaititajs`) USING BTREE,
  KEY `FK_skaitītājs_datums` (`datums_id`),
  KEY `FK_skaitītājs_ēka` (`eka_id`),
  CONSTRAINT `FK_skaitītājs_datums` FOREIGN KEY (`datums_id`) REFERENCES `datums` (`id_datums`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `FK_skaitītājs_ēka` FOREIGN KEY (`eka_id`) REFERENCES `eka` (`id_eka`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Skaitītāja informācija';

-- Dumping data for table eksamena6v2.skaititajs: ~1 rows (approximately)
INSERT INTO `skaititajs` (`id_skaititajs`, `eka_id`, `skaititaja_nr`, `datums_id`, `radijums_no`, `radijums_lidz`) VALUES
	(1, 1, 2147483647, 1, '2024-02-01', '2024-02-29');

-- Removing temporary table and create final VIEW structure
DROP TABLE IF EXISTS `dokumenta_nr`;
CREATE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW `dokumenta_nr` AS SELECT rekina_nr AS "Rēķina Nr.", liguma_nr AS "Līguma Nr.", DATE_FORMAT(ligums.izdots,"%d.%m.%Y") AS "Izdots"
FROM rekins
LEFT JOIN ligums
ON rekins.ligums_id = id_ligums 
;

-- Removing temporary table and create final VIEW structure
DROP TABLE IF EXISTS `rekina_dati`;
CREATE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW `rekina_dati` AS SELECT 
    r.rekina_nr,
    r.izdots AS rekina_datums,
    e.adrese,
    e.eka_info,
    p.pakal_nosauk,
    s.skaititaja_nr,
    s.radijums_no,
    s.radijums_lidz, 
    d.datums_no AS periods_no,
    d.datums_lidz AS periods_lidz,
    p.apjoms,
    m.mervienibas AS mervieniba,
    p.cena,
    ROUND(p.apjoms * p.cena, 2) AS summa_bez_pvn,
    pv.pvn AS pvn_likme,
    ROUND((p.apjoms * p.cena) * (pv.pvn / 100), 2) AS pvn_summa,
    ROUND((p.apjoms * p.cena) * (1 + pv.pvn / 100), 2) AS summa_ar_pvn,
    
    ROUND(SUM(p.apjoms * p.cena) OVER(PARTITION BY p.rekins_id), 2) AS rekina_kopsumma_bez_pvn,
    ROUND(SUM((p.apjoms * p.cena) * (pv.pvn / 100)) OVER(PARTITION BY p.rekins_id), 2) AS rekina_kopejais_pvn,
    ROUND(SUM((p.apjoms * p.cena) * (1 + pv.pvn / 100)) OVER(PARTITION BY p.rekins_id), 2) AS REKINA_SUMMA_KOPA

FROM pakalpojums AS p
INNER JOIN rekins AS r ON p.rekins_id = r.id_rekins
LEFT JOIN skaititajs AS s ON p.id_skaititajs = s.id_skaititajs
LEFT JOIN eka AS e ON s.eka_id = e.id_eka
LEFT JOIN datums AS d ON s.datums_id = d.id_datums
LEFT JOIN mervienibas AS m ON p.mervieniba_id = m.id_mervieniba
LEFT JOIN pvn AS pv ON p.pvn_id = pv.id_pvn 
;

/*!40103 SET TIME_ZONE=IFNULL(@OLD_TIME_ZONE, 'system') */;
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IFNULL(@OLD_FOREIGN_KEY_CHECKS, 1) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40111 SET SQL_NOTES=IFNULL(@OLD_SQL_NOTES, 1) */;
