-- Table structure for table `EreaderLocatiesLog`
--

CREATE TABLE `EreaderLocatiesLog` (
  `LogId` int(11) NOT NULL AUTO_INCREMENT,
  `DTLog` datetime DEFAULT NULL,
  `LogGebruiker` char(5) DEFAULT NULL,
  `Klantid` int(11) NOT NULL,
  `Ean` varchar(13) DEFAULT NULL,
  `Bestandsnaam` varchar(255) NOT NULL,
  `Locatie` enum('Nieuw','Archief','Kast') DEFAULT 'Archief',
  `AanvraagStatus` enum('Aangevraagd','Bevestigd') DEFAULT NULL,
  `AanvraagLocatie` enum('Nieuw','Archief','Kast') DEFAULT NULL,
  `DTclient` datetime DEFAULT NULL,
  `DTserver` datetime DEFAULT NULL,
  `Clientid` varchar(100) DEFAULT NULL,
  `DTarchief` datetime DEFAULT NULL,
  `DTdownload` datetime DEFAULT NULL,
  `DTrecent` datetime DEFAULT NULL,
  `Nieuw` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`LogId`),
  KEY `bestandsnaam,` (`Bestandsnaam`,`Klantid`),
  KEY `Datumtijd` (`DTLog`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `EreaderMarkeringen`
--

CREATE TABLE `EreaderMarkeringen` (
  `Markeringid` int(11) NOT NULL AUTO_INCREMENT,
  `Bestandsnaam` varchar(255) NOT NULL,
  `Klantid` int(11) NOT NULL,
  `MarkeringType` enum('Markering','Notitie') NOT NULL,
  `StartPad` varchar(255) NOT NULL,
  `StartLocatie` varchar(255) NOT NULL,
  `StartPositie` int(11) NOT NULL,
  `EindPad` varchar(255) NOT NULL,
  `EindLocatie` varchar(255) NOT NULL,
  `EindPositie` int(11) NOT NULL,
  `Ean` char(13) DEFAULT NULL,
  `Inhoud` mediumtext,
  `DTclient` datetime DEFAULT NULL,
  `DTserver` datetime DEFAULT NULL,
  `Verwijderd` tinyint(1) DEFAULT '0',
  `Clientid` varchar(100) DEFAULT NULL,
  `Hoofdstuk` varchar(255) DEFAULT NULL,
  `GeselecteerdeTekst` text,
  PRIMARY KEY (`Markeringid`),
  KEY `Bestandsnaam` (`Bestandsnaam`),
  KEY `Klantid` (`Klantid`),
  KEY `MarkeringType` (`MarkeringType`),
  KEY `zoeken` (`Bestandsnaam`,`Klantid`,`MarkeringType`,`Ean`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `EreaderSynchronisaties`
--

CREATE TABLE `EreaderSynchronisaties` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Klantid` int(11) DEFAULT NULL,
  `DT` datetime DEFAULT NULL,
  `Type` enum('verdeling','markeringen') DEFAULT NULL,
  `Clientid` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `ExactArtikelen`
--

CREATE TABLE `ExactArtikelen` (
  `Code` varchar(20) NOT NULL DEFAULT '',
  `Titel` varchar(255) DEFAULT NULL,
  `Auteur` varchar(255) DEFAULT NULL,
  `Prijs` decimal(8,2) NOT NULL,
  `VastePrijs` decimal(8,2) NOT NULL DEFAULT '0.00',
  `ActiePrijs` decimal(8,2) NOT NULL DEFAULT '0.00',
  `BriefCode` varchar(20) DEFAULT NULL,
  `BackorderCode` int(11) DEFAULT NULL,
  `ExactArtikel` tinyint(4) DEFAULT '0',
  `BTWCode` char(1) NOT NULL,
  `ArtikelGroep` char(4) NOT NULL,
  `Boeksoort` char(1) NOT NULL,
  `Bindwijze` varchar(255) NOT NULL,
  `Magazijnsoort` varchar(5) NOT NULL,
  `Magazijnlocatienummer` char(4) NOT NULL,
  `NietInpakken` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`Code`),
  KEY `BTWCode` (`BTWCode`),
  KEY `ArtikelGroep` (`ArtikelGroep`),
  CONSTRAINT `ExactArtikelen_ibfk_1` FOREIGN KEY (`BTWCode`) REFERENCES `BTWCodes` (`BTWCode`),
  CONSTRAINT `ExactArtikelen_ibfk_2` FOREIGN KEY (`ArtikelGroep`) REFERENCES `ArtikelGroepen` (`ArtikelGroep`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`pieter`@`%`*/ /*!50003 TRIGGER `after_insert_exactArtikelen` AFTER INSERT ON `ExactArtikelen` 
    FOR EACH ROW BEGIN
	
	INSERT INTO `ExactArtikelenLog` SET 
		DTLog=NOW(),
		LogGebruiker=@initials,
		`Code` = NEW.Code,
		Titel = NEW.Titel,
		Auteur = NEW.Auteur,
		Prijs = NEW.Prijs,
		VastePrijs = NEW.VastePrijs,
		ActiePrijs = NEW.ActiePrijs,
		BriefCode = NEW.BriefCode,
		BackorderCode = NEW.BackorderCode,
		ExactArtikel = NEW.ExactArtikel,
		BTWCode = NEW.BTWCode,
		ArtikelGroep = NEW.ArtikelGroep,
		Boeksoort = NEW.Boeksoort,
		Bindwijze = NEW.Bindwijze,
		Magazijnsoort = NEW.Magazijnsoort,
		Magazijnlocatienummer = NEW.Magazijnlocatienummer;
    END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`sander`@`%`*/ /*!50003 TRIGGER `before_update_exactartikelen` BEFORE UPDATE ON `ExactArtikelen` 
    FOR EACH ROW BEGIN
	DECLARE _Aantal INT;
	DECLARE _BTWCode CHAR(1);
	DECLARE _ArtikelGroep CHAR(4);
	
	SELECT COUNT(*) INTO _Aantal FROM ExactArtikelenRestrictie WHERE `Code` = OLD.`Code` AND ( BTWCode != NEW.BTWCode OR ArtikelGroep != NEW.ArtikelGroep );
	IF _Aantal > 0 THEN
		SELECT BTWCode, ArtikelGroep INTO _BTWCode, _ArtikelGroep FROM ExactArtikelenRestrictie WHERE `Code` = OLD.`Code`;
		SET NEW.BTWCode = _BTWCode;
		SET NEW.ArtikelGroep = _ArtikelGroep;
	END IF;
	
    END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`pieter`@`%`*/ /*!50003 TRIGGER `after_update_exactArtikelen` AFTER UPDATE ON `ExactArtikelen` 
    FOR EACH ROW BEGIN
	
	INSERT INTO `ExactArtikelenLog` SET 
		DTLog=NOW(),
		LogGebruiker=@initials,
		`Code` = NEW.Code,
		Titel = NEW.Titel,
		Auteur = NEW.Auteur,
		Prijs = NEW.Prijs,
		VastePrijs = NEW.VastePrijs,
		ActiePrijs = NEW.ActiePrijs,
		BriefCode = NEW.BriefCode,
		BackorderCode = NEW.BackorderCode,
		ExactArtikel = NEW.ExactArtikel,
		BTWCode = NEW.BTWCode,
		ArtikelGroep = NEW.ArtikelGroep,
		Boeksoort = NEW.Boeksoort,
		Bindwijze = NEW.Bindwijze,
		Magazijnsoort = NEW.Magazijnsoort,
		Magazijnlocatienummer = NEW.Magazijnlocatienummer;
    END */;;
DELIMITER ;

--
-- Table structure for table `ExactArtikelenLog`
--

CREATE TABLE `ExactArtikelenLog` (
  `Code` varchar(20) NOT NULL DEFAULT '',
  `Titel` varchar(255) DEFAULT NULL,
  `Auteur` varchar(255) DEFAULT NULL,
  `Prijs` decimal(8,2) DEFAULT NULL,
  `VastePrijs` decimal(8,2) DEFAULT NULL,
  `ActiePrijs` decimal(8,2) DEFAULT NULL,
  `BriefCode` varchar(20) DEFAULT NULL,
  `BackorderCode` int(11) DEFAULT NULL,
  `ExactArtikel` tinyint(4) DEFAULT '0',
  `BTWCode` char(1) NOT NULL,
  `ArtikelGroep` char(4) NOT NULL,
  `Boeksoort` char(1) NOT NULL,
  `Bindwijze` varchar(255) NOT NULL,
  `Magazijnsoort` varchar(5) NOT NULL,
  `Magazijnlocatienummer` char(4) NOT NULL,
  `LogId` int(11) NOT NULL AUTO_INCREMENT,
  `LogGebruiker` char(4) DEFAULT NULL,
  `DTLog` datetime DEFAULT NULL,
  PRIMARY KEY (`LogId`),
  KEY `DTLog` (`DTLog`),
  KEY `Code` (`Code`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `ExactArtikelenRestrictie`
--

CREATE TABLE `ExactArtikelenRestrictie` (
  `Code` varchar(20) NOT NULL,
  `BTWCode` char(1) DEFAULT NULL,
  `ArtikelGroep` char(4) DEFAULT NULL,
  PRIMARY KEY (`Code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `ExactBackorders`
--

CREATE TABLE `ExactBackorders` (
  `ID` int(11) NOT NULL,
  `OrderID` int(11) NOT NULL,
  `DT` date DEFAULT NULL,
  PRIMARY KEY (`ID`),
  KEY `OrderID` (`OrderID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Facturen`
--

CREATE TABLE `Facturen` (
  `FactuurID` int(11) NOT NULL DEFAULT '0',
  `OrderID` int(11) NOT NULL DEFAULT '0',
  `DT` date DEFAULT NULL,
  `Bedrag` decimal(12,2) DEFAULT NULL,
  `OpenBedrag` decimal(12,2) DEFAULT NULL,
  `Status` enum('nieuw','open','betaald') DEFAULT NULL,
  PRIMARY KEY (`FactuurID`,`OrderID`),
  KEY `DT` (`DT`),
  KEY `Status` (`Status`),
  KEY `OrderID` (`OrderID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `FactuurTeksten`
--

CREATE TABLE `FactuurTeksten` (
  `Ean` char(13) NOT NULL,
  `Tekst` mediumtext NOT NULL,
  `Volgorde` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`Ean`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Hooks`
--

CREATE TABLE `Hooks` (
  `Hook` char(64) DEFAULT NULL,
  `Klantid` int(11) DEFAULT NULL,
  `Cleardate` date DEFAULT NULL,
  KEY `Hook` (`Hook`),
  KEY `Cleardate` (`Cleardate`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Temporary table structure for view `HuidigeOrderstatussen`
--

/*!50001 DROP VIEW IF EXISTS `HuidigeOrderstatussen`*/;
/*!50001 CREATE TABLE `HuidigeOrderstatussen` (
  `StatusId` tinyint NOT NULL,
  `BestellingId` tinyint NOT NULL,
  `Resultaat` tinyint NOT NULL,
  `Gebruiker` tinyint NOT NULL,
  `DT` tinyint NOT NULL,
  `Naam` tinyint NOT NULL,
  `Omschrijving` tinyint NOT NULL,
  `ToonAlsOpenOrder` tinyint NOT NULL,
  `Volgorde` tinyint NOT NULL
) ENGINE=MyISAM */;

--
-- Table structure for table `HulpBijBestellingenHistory`
--

CREATE TABLE `HulpBijBestellingenHistory` (
  `Ean` char(13) NOT NULL,
  `DT` date NOT NULL,
  `Recommendation` int(11) DEFAULT NULL,
  PRIMARY KEY (`Ean`,`DT`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `IPHistorie`
--

CREATE TABLE `IPHistorie` (
  `Klantid` int(11) NOT NULL,
  `IPAdres` char(16) NOT NULL,
  `DTLaatsteBezoek` datetime DEFAULT NULL,
  PRIMARY KEY (`IPAdres`,`Klantid`),
  KEY `Klantid` (`Klantid`,`DTLaatsteBezoek`),
  KEY `IPAdres` (`IPAdres`,`Klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `IdealBestellingStatus`
--

CREATE TABLE `IdealBestellingStatus` (
  `BestellingId` int(11) NOT NULL,
  `TransactionId` char(16) NOT NULL DEFAULT '0',
  `TransactionStatus` enum('open','expired','completed','new','error','cancelled') NOT NULL DEFAULT 'new',
  `Expiration` datetime NOT NULL DEFAULT '1980-01-01 00:00:00',
  `Totaal` decimal(6,2) NOT NULL DEFAULT '0.00',
  `Message` varchar(255) NOT NULL DEFAULT '',
  `Kenmerk` varchar(20) NOT NULL DEFAULT '',
  PRIMARY KEY (`BestellingId`,`TransactionId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `InventarisatieLogging`
--

CREATE TABLE `InventarisatieLogging` (
  `DT` date NOT NULL,
  `Mgt` decimal(12,2) NOT NULL DEFAULT '0.00',
  `Com` decimal(12,2) NOT NULL DEFAULT '0.00',
  `NCOI` decimal(12,2) NOT NULL DEFAULT '0.00',
  PRIMARY KEY (`DT`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `Kadobonnen`
--

CREATE TABLE `Kadobonnen` (
  `Bonid` int(11) NOT NULL AUTO_INCREMENT,
  `Bonnummer` varchar(12) DEFAULT NULL,
  `Bonverstrekkerid` int(11) NOT NULL DEFAULT '0',
  `Koperid` int(11) DEFAULT NULL,
  `Klantid` int(11) DEFAULT NULL,
  `Startdatum` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `Vervaldatum` date DEFAULT '0000-00-00',
  `Prijs` double(8,4) DEFAULT '0.0000',
  `Waarde` double(8,4) DEFAULT '0.0000',
  `Saldo` double(8,4) DEFAULT '0.0000',
  `Overdraagbaar` tinyint(4) DEFAULT '0',
  `Combineerbaar` tinyint(4) DEFAULT '1',
  `Geblokkeerd` tinyint(4) DEFAULT '1',
  `Koperboodschap` mediumblob,
  `Empty1` mediumblob,
  `Empty2` mediumblob,
  `Empty3` mediumblob,
  `Empty4` mediumblob,
  `Empty5` mediumblob,
  `Empty6` mediumblob,
  `Nietvoorboeken` tinyint(4) DEFAULT '0',
  `AlleenProducttype` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`Bonid`),
  KEY `i1` (`Bonnummer`),
  KEY `i2` (`Bonverstrekkerid`),
  KEY `i3` (`Koperid`),
  KEY `i4` (`Klantid`),
  KEY `i5` (`Startdatum`),
  KEY `i6` (`Vervaldatum`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KassaKoopjes`
--

CREATE TABLE `KassaKoopjes` (
  `Ean` char(13) NOT NULL,
  `type` enum('ramsj','regulier') NOT NULL,
  `toonvanaf` date NOT NULL,
  `startvoorraad` int(11) NOT NULL,
  `verkochtsinds` int(11) NOT NULL,
  `isactief` int(11) NOT NULL,
  PRIMARY KEY (`Ean`,`type`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KassaKoopjesViews`
--

CREATE TABLE `KassaKoopjesViews` (
  `Ean` char(13) NOT NULL,
  `DT` date NOT NULL,
  `Views` int(11) DEFAULT '0',
  `Clicks` int(11) DEFAULT '0',
  PRIMARY KEY (`Ean`,`DT`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantAanbevolenBasis`
--

CREATE TABLE `KlantAanbevolenBasis` (
  `Klantid` int(11) NOT NULL,
  `Ean` char(13) NOT NULL,
  `DTBesteld` date DEFAULT NULL,
  `Reden` enum('besteld','inbezit','rating') DEFAULT 'besteld',
  PRIMARY KEY (`Klantid`,`Ean`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantAanbevolenBerekend`
--

CREATE TABLE `KlantAanbevolenBerekend` (
  `Klantid` int(11) NOT NULL DEFAULT '0',
  `DT` datetime DEFAULT NULL,
  PRIMARY KEY (`Klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantAanbevolenEans`
--

CREATE TABLE `KlantAanbevolenEans` (
  `Klantid` int(11) NOT NULL DEFAULT '0',
  `RecommendedEan` char(13) NOT NULL DEFAULT '',
  `Positie` float NOT NULL DEFAULT '0',
  `DTOntstaan` datetime DEFAULT NULL,
  `Status` tinyint(4) NOT NULL,
  PRIMARY KEY (`Klantid`,`RecommendedEan`),
  KEY `NewIndex1` (`Positie`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantAanbevolenEans2`
--

CREATE TABLE `KlantAanbevolenEans2` (
  `Klantid` int(11) NOT NULL DEFAULT '0',
  `RecommendedEan` char(13) CHARACTER SET latin1 NOT NULL DEFAULT '',
  `Positie` tinyint(4) NOT NULL DEFAULT '0',
  `AantalReden` tinyint(4) NOT NULL,
  `BoekVerschijningsFactor` float NOT NULL,
  `SorteerFactor` float NOT NULL,
  `DTOntstaan` date DEFAULT NULL,
  `DTBijgewerkt` date NOT NULL,
  `Wissen` tinyint(4) DEFAULT NULL,
  PRIMARY KEY (`Klantid`,`RecommendedEan`),
  KEY `NewIndex1` (`Positie`),
  KEY `RecommendedEan` (`RecommendedEan`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `KlantAanbevolenExcludeBron`
--

CREATE TABLE `KlantAanbevolenExcludeBron` (
  `Klantid` int(11) NOT NULL,
  `Ean` char(13) NOT NULL,
  `DT` datetime NOT NULL,
  `Reden` char(20) NOT NULL,
  PRIMARY KEY (`Klantid`,`Ean`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantAanbevolenGemaild`
--

CREATE TABLE `KlantAanbevolenGemaild` (
  `Klantid` int(11) NOT NULL DEFAULT '0',
  `RecommendedEan` char(13) NOT NULL DEFAULT '',
  `DT` datetime DEFAULT NULL,
  `Variant` enum('A','B') DEFAULT NULL,
  `MessageId` char(32) DEFAULT NULL,
  PRIMARY KEY (`Klantid`,`RecommendedEan`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantAanbevolenGezien`
--

CREATE TABLE `KlantAanbevolenGezien` (
  `Klantid` int(11) NOT NULL DEFAULT '0',
  `Ean` char(13) NOT NULL DEFAULT '',
  `DTGezien` date DEFAULT NULL,
  PRIMARY KEY (`Klantid`,`Ean`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantAanbevolenReden`
--

CREATE TABLE `KlantAanbevolenReden` (
  `Klantid` int(11) NOT NULL DEFAULT '0',
  `RecommendedEan` char(13) NOT NULL DEFAULT '',
  `Ean` char(13) NOT NULL DEFAULT '',
  PRIMARY KEY (`Klantid`,`RecommendedEan`,`Ean`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantAanbevolenReden2`
--

CREATE TABLE `KlantAanbevolenReden2` (
  `Klantid` int(11) NOT NULL DEFAULT '0',
  `RecommendedEan` char(13) CHARACTER SET latin1 NOT NULL,
  `Ean` char(13) CHARACTER SET latin1 NOT NULL,
  `Positie` tinyint(1) unsigned NOT NULL,
  `BestelDatumFactor` float NOT NULL,
  `Sorteer` float NOT NULL,
  `DTOnstaan` date NOT NULL,
  `DTBijgewerkt` date NOT NULL,
  PRIMARY KEY (`Klantid`,`RecommendedEan`,`Ean`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `KlantAdresboek`
--

CREATE TABLE `KlantAdresboek` (
  `AdresboekId` int(11) NOT NULL AUTO_INCREMENT,
  `Klantid` int(11) NOT NULL,
  `Geslacht` varchar(5) NOT NULL,
  `Voorletters` varchar(5) NOT NULL,
  `Achternaam` varchar(35) NOT NULL,
  `Bedrijfsnaam` varchar(35) NOT NULL,
  `Bedrijfsnaam2` varchar(35) NOT NULL,
  `Afdeling` varchar(35) NOT NULL,
  `Straatnaam` varchar(50) NOT NULL,
  `Huisnummer` int(11) NOT NULL,
  `HuisnummerToevoeging` varchar(5) NOT NULL,
  `Postcode` varchar(7) NOT NULL,
  `Plaatsnaam` varchar(50) NOT NULL,
  PRIMARY KEY (`AdresboekId`),
  UNIQUE KEY `Voorletters` (`Klantid`,`Voorletters`,`Achternaam`,`Bedrijfsnaam`,`Straatnaam`,`Huisnummer`,`HuisnummerToevoeging`,`Postcode`,`Plaatsnaam`),
  CONSTRAINT `KlantAdresboek_ibfk_1` FOREIGN KEY (`Klantid`) REFERENCES `Klanten` (`Klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `KlantBoekTrefwoorden`
--

CREATE TABLE `KlantBoekTrefwoorden` (
  `Ean` char(13) NOT NULL,
  `Trefwoordid` int(11) NOT NULL,
  `Klantid` int(11) NOT NULL,
  KEY `Ean` (`Ean`),
  KEY `Trefwoordid` (`Trefwoordid`),
  KEY `Klantid` (`Klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantCookiePolicy`
--

CREATE TABLE `KlantCookiePolicy` (
  `Klantid` int(11) NOT NULL,
  `CookieValue` int(11) NOT NULL,
  PRIMARY KEY (`Klantid`),
  CONSTRAINT `KlantCookiePolicy_ibfk_1` FOREIGN KEY (`Klantid`) REFERENCES `Klanten` (`Klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `KlantFavorieten`
--

CREATE TABLE `KlantFavorieten` (
  `Klantid` int(11) DEFAULT NULL,
  `Ean` char(13) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantKenmerken`
--

CREATE TABLE `KlantKenmerken` (
  `Klantid` int(11) NOT NULL,
  `Kenmerk` char(6) NOT NULL,
  PRIMARY KEY (`Klantid`,`Kenmerk`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantMailchimp`
--

CREATE TABLE `KlantMailchimp` (
  `Klantid` int(11) NOT NULL,
  `DT` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`Klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantMailinglistLog`
--

CREATE TABLE `KlantMailinglistLog` (
  `DT` datetime NOT NULL,
  `KlantId` int(11) NOT NULL DEFAULT '0',
  `Email` varchar(255) NOT NULL,
  `Mailinglistid` int(11) NOT NULL DEFAULT '0',
  `Subscribe` tinyint(4) DEFAULT '0',
  `Sync` tinyint(4) DEFAULT '0',
  PRIMARY KEY (`DT`,`KlantId`,`Email`,`Mailinglistid`),
  KEY `DT` (`DT`),
  KEY `Sync` (`Sync`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `KlantPorto`
--

CREATE TABLE `KlantPorto` (
  `Klantid` int(11) NOT NULL,
  `PortoGratisNavEnquete` tinyint(1) NOT NULL,
  `PortoStrippenKaart` int(11) NOT NULL,
  `PortoGratisExp` date NOT NULL DEFAULT '2020-01-01',
  `PortoStrippenExp` date NOT NULL DEFAULT '2020-01-01',
  PRIMARY KEY (`Klantid`),
  CONSTRAINT `KlantPorto_ibfk_1` FOREIGN KEY (`Klantid`) REFERENCES `Klanten` (`Klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `KlantRecentieWaarderingen`
--

CREATE TABLE `KlantRecentieWaarderingen` (
  `Klantrecentieid` int(11) NOT NULL,
  `Klantid` int(11) NOT NULL,
  `Nuttig` tinyint(1) DEFAULT '1',
  KEY `Klantrecentieid` (`Klantrecentieid`),
  KEY `Klantid` (`Klantid`),
  KEY `Nuttig` (`Nuttig`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantRecenties`
--

CREATE TABLE `KlantRecenties` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Klantid` int(11) NOT NULL,
  `Ean` char(13) CHARACTER SET latin1 NOT NULL,
  `DT` datetime DEFAULT NULL,
  `Anonymous` tinyint(1) DEFAULT '0',
  `Authorised` tinyint(1) DEFAULT '1',
  `Stemmen` tinyint(1) DEFAULT '0',
  `Nuttig` int(11) DEFAULT '0',
  `Titel` varchar(255) DEFAULT NULL,
  `Recentie` text,
  `Moderated` tinyint(1) NOT NULL,
  `IP` varchar(16) DEFAULT NULL,
  `Type` enum('reactie','recensie','auteurbijdrage') DEFAULT 'reactie',
  PRIMARY KEY (`Id`),
  KEY `Klantid` (`Klantid`),
  KEY `Artikelcode` (`Ean`),
  KEY `Authorised` (`Authorised`,`DT`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `KlantRecenties_Tellingen`
--

CREATE TABLE `KlantRecenties_Tellingen` (
  `Ean` char(13) NOT NULL DEFAULT '',
  `lezersrecensies` tinyint(4) DEFAULT NULL,
  `auteursbijdragen` tinyint(4) DEFAULT NULL,
  `last_lezers_dt` date DEFAULT NULL,
  `last_auteurs_dt` date DEFAULT NULL,
  PRIMARY KEY (`Ean`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantTrefwoorden`
--

CREATE TABLE `KlantTrefwoorden` (
  `Klantid` int(11) NOT NULL,
  `Trefwoordid` int(11) NOT NULL,
  `Publiek` tinyint(1) DEFAULT '1',
  KEY `Trefwoordid` (`Trefwoordid`),
  KEY `Publiek` (`Publiek`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantTwitter`
--

CREATE TABLE `KlantTwitter` (
  `KlantId` int(11) NOT NULL,
  `TwitterId` int(11) DEFAULT NULL,
  `oAuthToken` varchar(75) DEFAULT NULL,
  PRIMARY KEY (`KlantId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantUitgever`
--

CREATE TABLE `KlantUitgever` (
  `klantId` int(11) NOT NULL,
  `uitgeverId` int(11) NOT NULL,
  PRIMARY KEY (`klantId`,`uitgeverId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantVinken`
--

CREATE TABLE `KlantVinken` (
  `Klantid` int(11) NOT NULL,
  `A` tinyint(1) NOT NULL DEFAULT '0',
  `FAC` tinyint(1) NOT NULL DEFAULT '0',
  `G` tinyint(1) NOT NULL DEFAULT '0',
  `KNK` tinyint(1) NOT NULL DEFAULT '0',
  `KNM` tinyint(1) NOT NULL DEFAULT '0',
  `WAN` tinyint(1) NOT NULL DEFAULT '0',
  `WANAFG` tinyint(1) NOT NULL DEFAULT '0',
  `OPL` tinyint(1) NOT NULL DEFAULT '0',
  `EDR` tinyint(1) NOT NULL DEFAULT '0',
  `EXP` tinyint(1) NOT NULL DEFAULT '0',
  `EXPWAN` tinyint(1) NOT NULL DEFAULT '0',
  `FAIL` tinyint(1) NOT NULL DEFAULT '0',
  `VERW` tinyint(1) NOT NULL DEFAULT '0',
  `VerhuisStatus` enum('0','1','2','3','4') NOT NULL DEFAULT '0',
  `Mailen` tinyint(1) NOT NULL DEFAULT '0',
  `Emailen` tinyint(1) NOT NULL DEFAULT '0',
  `VouchersMaken` tinyint(1) NOT NULL DEFAULT '0',
  `Institutioneel` tinyint(1) NOT NULL DEFAULT '0',
  `AchterafFactureren` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`Klantid`),
  KEY `is_die_tutioneel` (`Institutioneel`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantWijzigingen`
--

CREATE TABLE `KlantWijzigingen` (
  `Klantid` int(11) DEFAULT NULL,
  `Type` varchar(500) DEFAULT NULL,
  `DT` datetime DEFAULT NULL,
  `Wie` varchar(255) DEFAULT NULL,
  KEY `Klantid` (`Klantid`,`DT`),
  KEY `NewIndex1` (`DT`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Klanten`
--

CREATE TABLE `Klanten` (
  `Klantid` int(11) NOT NULL AUTO_INCREMENT,
  `Wachtwoord` varchar(200) DEFAULT NULL,
  `WachtwoordZout` char(16) DEFAULT NULL,
  `WachtwoordAlgo` char(8) DEFAULT NULL,
  `WachtwoordAantal` int(11) DEFAULT NULL,
  `WachtwoordEncrypted` varchar(41) NOT NULL,
  `Emailadres` varchar(200) DEFAULT NULL,
  `Emailadres_oud` varchar(200) DEFAULT NULL,
  `Geabonneerd` smallint(6) DEFAULT '0',
  `Magbestellen` smallint(6) DEFAULT '1',
  `Heefttoegang` smallint(6) DEFAULT '1',
  `Redenontzegging` mediumblob,
  `Siteid` int(11) DEFAULT NULL,
  `Herkomstid` int(11) DEFAULT '0',
  `Domeincheck` smallint(6) DEFAULT '0',
  `DTaanmaak` datetime DEFAULT NULL,
  `DTlaatstebezoek` datetime DEFAULT NULL,
  `Aantalbezoeken` int(11) DEFAULT '0',
  `Exactid` int(11) DEFAULT '0',
  `Winkelkarmail` smallint(6) DEFAULT '1',
  `IP` varchar(15) DEFAULT NULL,
  `IPlaatstebezoek` varchar(15) DEFAULT NULL,
  `Mailcode` varchar(10) DEFAULT 'K',
  `AdresStatus` enum('unauthorized','authorized','locked') NOT NULL DEFAULT 'unauthorized',
  `DTLock` datetime DEFAULT NULL,
  `Bankrekening` varchar(18) NOT NULL,
  `Bankrekening_oud` varchar(18) NOT NULL,
  `Girorekening` varchar(18) NOT NULL,
  `ReferrerDomain` varchar(200) NOT NULL,
  `DTGewaardeerdeKlant` datetime DEFAULT NULL,
  `GeenOplichter` tinyint(4) NOT NULL DEFAULT '0',
  `BankrekeningIncasso` varchar(18) NOT NULL,
  `InitieleOptOutVink` tinyint(4) NOT NULL DEFAULT '0',
  `Notities` mediumtext NOT NULL,
  `NotitiePopup` tinyint(4) NOT NULL DEFAULT '0',
  `DTWijziging` datetime DEFAULT NULL,
  `AutorisatieNodig` tinyint(4) NOT NULL DEFAULT '0',
  `FactuurKlantid` int(11) NOT NULL,
  `AanmaakGebruiker` char(3) NOT NULL,
  `OntvangtStemMail` tinyint(4) NOT NULL DEFAULT '1',
  `Betaalmethode` char(1) DEFAULT 'A',
  `Betalingsconditie` int(11) NOT NULL DEFAULT '14',
  `AutomatischGeautoriseerd` tinyint(4) DEFAULT NULL,
  `ExperianCheck` tinyint(4) NOT NULL,
  `Twitter` varchar(50) DEFAULT NULL,
  `Linkedin` varchar(255) DEFAULT NULL,
  `ExactEmailadres` varchar(200) DEFAULT NULL,
  `LockGebruiker` char(3) NOT NULL,
  `DTExactSynchronisatie` datetime DEFAULT NULL,
  `InExact` tinyint(4) DEFAULT '0',
  `VerstuurCompleteOrderDefault` tinyint(4) NOT NULL DEFAULT '0',
  `AutorisatieReden` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`Klantid`),
  KEY `Siteid` (`Siteid`),
  KEY `Herkomstid` (`Herkomstid`),
  KEY `Domeincheck` (`Domeincheck`),
  KEY `Aantalbezoeken_index` (`Aantalbezoeken`),
  KEY `DTaanmaak_Index` (`DTaanmaak`),
  KEY `DTlaatstebezoek_Index` (`DTlaatstebezoek`),
  KEY `Exactid` (`Exactid`),
  KEY `Emailadres` (`Emailadres`),
  KEY `ReferrerDomain` (`ReferrerDomain`),
  KEY `IP` (`IP`),
  KEY `AutorisatieNodig` (`AutorisatieNodig`),
  KEY `AutomatischGeautoriseerd` (`AutomatischGeautoriseerd`,`AdresStatus`),
  KEY `AdresStatus` (`AdresStatus`,`AutomatischGeautoriseerd`,`AutorisatieNodig`),
  KEY `InExact` (`InExact`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`thijs`@`%`*/ /*!50003 TRIGGER `before_insert_klanten` BEFORE INSERT ON `Klanten` 
    FOR EACH ROW BEGIN
	IF NOT( get_lock( "klantid-autoincr-fubar", 15 ) )
	THEN
		signal sqlstate "45000" set message_text = "Doodslot: kon het volgende KlantID niet bepalen.";
	END IF;
	SET NEW.Klantid = ( SELECT MAX(Klantid) + 1 FROM Managementboek_Klanten.Klanten WHERE Klantid < 6000000 );
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`pieter`@`%`*/ /*!50003 TRIGGER `after_insert_klanten` AFTER INSERT ON `Klanten` 
    FOR EACH ROW BEGIN
	INSERT IGNORE INTO KlantVinken SET 
		Klantid=NEW.Klantid,
		A = 0,
		FAC = 0,
		G = 0,
		KNK = 0,
		KNM = 0,
		WAN = 0,
		WANAFG = 0,
		OPL = 0,
		EDR = 0,
		EXP = 0,
		EXPWAN = 0,
		FAIL = 0,
		VERW = 0,
		VerhuisStatus = 0,
		Mailen = 1,
		Emailen = 1;	
		
	INSERT IGNORE INTO Managementboek_Nieuwsbrieven.`Nieuwsbrief_Vinkjes` ( Klantid, OptIn, InitieleOptIn, DTOptIn ) VALUES ( NEW.Klantid, NEW.InitieleOptOutVink, NEW.InitieleOptOutVink, NOW() );	
	
	DO RELEASE_LOCK( "klantid-autoincr-fubar" );
	
    END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`sander`@`%`*/ /*!50003 TRIGGER `before_update_klanten` BEFORE UPDATE ON `Klanten` 
    FOR EACH ROW BEGIN
    
	
	IF
	    NEW.AdresStatus = 'unauthorized' AND OLD.AdresStatus != 'unauthorized'
	THEN
	   SET NEW.InExact = 0;
	   SET NEW.DTExactSynchronisatie = NULL;	
	   SET NEW.AutomatischGeautoriseerd = 0;
	END IF;
        
	CALL log_klanten_wijziging( NEW.Klantid, 'Wachtwoord', OLD.Wachtwoord, NEW.Wachtwoord, @context, @initials );
	CALL log_klanten_wijziging( NEW.Klantid, 'Emailadres', OLD.Emailadres, NEW.Emailadres, @context, @initials );
	CALL log_klanten_wijziging( NEW.Klantid, 'Exactid', OLD.Exactid, NEW.Exactid, @context, @initials );
	CALL log_klanten_wijziging( NEW.Klantid, 'Mailcode', OLD.Mailcode, NEW.Mailcode, @context, @initials );
	CALL log_klanten_wijziging( NEW.Klantid, 'AdresStatus', OLD.AdresStatus, NEW.AdresStatus, @context, @initials );
	CALL log_klanten_wijziging( NEW.Klantid, 'Bankrekening', OLD.Bankrekening, NEW.Bankrekening, @context, @initials );
	CALL log_klanten_wijziging( NEW.Klantid, 'BankrekeningIncasso', OLD.BankrekeningIncasso, NEW.BankrekeningIncasso, @context, @initials );
    END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`sander`@`%`*/ /*!50003 TRIGGER `after_update_klanten` AFTER UPDATE ON `Klanten` 
    FOR EACH ROW BEGIN
        DECLARE SUB INT;
        
    
    SELECT COUNT(*) INTO SUB FROM Klantmailinglist WHERE Klantid = NEW.Klantid AND Mailinglistid = 1;
    
    IF SUB > 0 AND OLD.Emailadres != NEW.Emailadres AND OLD.Emailadres IS NOT NULL AND NEW.Emailadres IS NOT NULL THEN
        REPLACE INTO KlantMailinglistLog VALUES ( NOW(), NEW.Klantid, OLD.Emailadres, 1, 0, 0 );
        REPLACE INTO KlantMailinglistLog VALUES ( NOW(), NEW.Klantid, NEW.Emailadres, 1, 1, 0 );
    END IF;
    END */;;
DELIMITER ;

--
-- Table structure for table `KlantenBlogAuteurs`
--

CREATE TABLE `KlantenBlogAuteurs` (
  `Klantid` int(11) NOT NULL,
  `BlogAuteurid` int(11) NOT NULL,
  `Blogid` int(11) NOT NULL,
  PRIMARY KEY (`Klantid`,`BlogAuteurid`,`Blogid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KlantenMetAanbevelingen`
--

CREATE TABLE `KlantenMetAanbevelingen` (
  `Klantid` int(11) NOT NULL DEFAULT '0',
  `HeeftAanbevelingen` tinyint(4) DEFAULT NULL,
  PRIMARY KEY (`Klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `KlantenWijzigingen`
--

CREATE TABLE `KlantenWijzigingen` (
  `Klantid` int(11) DEFAULT NULL,
  `DT` datetime DEFAULT NULL,
  `Veldnaam` varchar(100) DEFAULT NULL,
  `Voor` varchar(255) DEFAULT NULL,
  `Na` varchar(255) DEFAULT NULL,
  `Omschrijving` varchar(255) DEFAULT NULL,
  `Gebruiker` varchar(255) DEFAULT NULL,
  KEY `NewIndex1` (`Klantid`,`DT`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `Klanten_Zonder_Optin`
--

CREATE TABLE `Klanten_Zonder_Optin` (
  `Klantid` int(11) NOT NULL DEFAULT '0',
  KEY `Klantid` (`Klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Temporary table structure for view `Klanten_met_adres`
--

/*!50001 DROP VIEW IF EXISTS `Klanten_met_adres`*/;
/*!50001 CREATE TABLE `Klanten_met_adres` (
  `volledigenaam` tinyint NOT NULL,
  `ExperianCheck` tinyint NOT NULL,
  `Klantid` tinyint NOT NULL,
  `Wachtwoord` tinyint NOT NULL,
  `Emailadres` tinyint NOT NULL,
  `Emailadres_oud` tinyint NOT NULL,
  `Geabonneerd` tinyint NOT NULL,
  `Magbestellen` tinyint NOT NULL,
  `Heefttoegang` tinyint NOT NULL,
  `Redenontzegging` tinyint NOT NULL,
  `Siteid` tinyint NOT NULL,
  `Herkomstid` tinyint NOT NULL,
  `Domeincheck` tinyint NOT NULL,
  `DTaanmaak` tinyint NOT NULL,
  `DTlaatstebezoek` tinyint NOT NULL,
  `Aantalbezoeken` tinyint NOT NULL,
  `Exactid` tinyint NOT NULL,
  `Winkelkarmail` tinyint NOT NULL,
  `IP` tinyint NOT NULL,
  `IPlaatstebezoek` tinyint NOT NULL,
  `Mailcode` tinyint NOT NULL,
  `AdresStatus` tinyint NOT NULL,
  `DTLock` tinyint NOT NULL,
  `Bankrekening` tinyint NOT NULL,
  `Bankrekening_oud` tinyint NOT NULL,
  `ReferrerDomain` tinyint NOT NULL,
  `DTGewaardeerdeKlant` tinyint NOT NULL,
  `GeenOplichter` tinyint NOT NULL,
  `BankrekeningIncasso` tinyint NOT NULL,
  `Adresid` tinyint NOT NULL,
  `Voornaam` tinyint NOT NULL,
  `Voornaam_oud` tinyint NOT NULL,
  `Achternaam` tinyint NOT NULL,
  `Achternaam_oud` tinyint NOT NULL,
  `Bedrijfsnaam` tinyint NOT NULL,
  `Bedrijfsnaam_oud` tinyint NOT NULL,
  `Bedrijfsnaam2` tinyint NOT NULL,
  `Afdeling` tinyint NOT NULL,
  `Afdeling_oud` tinyint NOT NULL,
  `Functie` tinyint NOT NULL,
  `Functie_oud` tinyint NOT NULL,
  `Adres` tinyint NOT NULL,
  `Adres_oud` tinyint NOT NULL,
  `Postcode` tinyint NOT NULL,
  `Postcode_oud` tinyint NOT NULL,
  `Plaats` tinyint NOT NULL,
  `Plaats_oud` tinyint NOT NULL,
  `Telefoonnummer` tinyint NOT NULL,
  `Telefoonnummer_oud` tinyint NOT NULL,
  `Faxnummer` tinyint NOT NULL,
  `Faxnummer_oud` tinyint NOT NULL,
  `Geslacht` tinyint NOT NULL,
  `Geslacht_oud` tinyint NOT NULL,
  `DTadreswijziging` tinyint NOT NULL,
  `Adrestype` tinyint NOT NULL,
  `Straatnaam` tinyint NOT NULL,
  `Straatnaam_oud` tinyint NOT NULL,
  `Huisnummer` tinyint NOT NULL,
  `Huisnummer_oud` tinyint NOT NULL,
  `Huisnummertoevoeging` tinyint NOT NULL,
  `Huisnummertoevoeging_oud` tinyint NOT NULL,
  `ExactEmailadres` tinyint NOT NULL,
  `Notities` tinyint NOT NULL,
  `InExact` tinyint NOT NULL,
  `AutomatischGeautoriseerd` tinyint NOT NULL,
  `AutorisatieReden` tinyint NOT NULL,
  `AutorisatieNodig` tinyint NOT NULL,
  `Betalingsconditie` tinyint NOT NULL,
  `Mobielnummer` tinyint NOT NULL,
  `Linkedin` tinyint NOT NULL,
  `Twitter` tinyint NOT NULL,
  `FactuurKlantid` tinyint NOT NULL
) ENGINE=MyISAM */;

--
-- Table structure for table `Klantmailinglist`
--

CREATE TABLE `Klantmailinglist` (
  `Klantid` int(11) NOT NULL DEFAULT '0',
  `Mailinglistid` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`Klantid`,`Mailinglistid`),
  UNIQUE KEY `X` (`Mailinglistid`,`Klantid`),
  KEY `Mailinglistid` (`Mailinglistid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`sander`@`%`*/ /*!50003 TRIGGER `after_insert_Klantmailinglist` AFTER INSERT ON `Klantmailinglist` 
    FOR EACH ROW BEGIN
	DECLARE Email VARCHAR(255);
	SELECT K.`Emailadres` INTO Email FROM Klanten K WHERE KlantId = NEW.Klantid;
	IF NOT Email IS NULL THEN
		REPLACE INTO KlantMailinglistLog SET DT = NOW(), Klantid = NEW.Klantid, Email = Email, Mailinglistid = NEW.Mailinglistid, Subscribe = 1;
		
	END IF;
	
	INSERT IGNORE INTO Managementboek_Nieuwsbrieven.`Nieuwsbrief_Vinkjes` SET Klantid = NEW.Klantid;
	UPDATE Managementboek_Nieuwsbrieven.`Nieuwsbrief_Vinkjes` SET OptIn = 1, OptOut=0, DTOptIn = NOW() WHERE Klantid = NEW.Klantid;
    END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`sander`@`%`*/ /*!50003 TRIGGER `before_delete_Klantmailinglist` BEFORE DELETE ON `Klantmailinglist` 
    FOR EACH ROW BEGIN
	DECLARE Email VARCHAR(255);
	
	IF NOT IFNULL(@mailchimp,0) = 1 THEN
		SELECT K.`Emailadres` INTO Email FROM Klanten K WHERE KlantId = OLD.Klantid;
		IF NOT Email IS NULL THEN
			REPLACE INTO KlantMailinglistLog SET DT = NOW(), Klantid = OLD.Klantid, Email = Email, Mailinglistid = OLD.Mailinglistid, Subscribe = 0;
		END IF;	
	END IF;
	
	UPDATE Managementboek_Nieuwsbrieven.`Nieuwsbrief_Vinkjes` SET OptIn = 0, OptOut=1, DTOptOut=NOW() WHERE Klantid = OLD.Klantid;
    END */;;
DELIMITER ;

--
-- Table structure for table `Korting_Klanten`
--

CREATE TABLE `Korting_Klanten` (
  `KlantID` int(11) NOT NULL DEFAULT '0',
  `Percentage` decimal(5,2) NOT NULL DEFAULT '0.00',
  PRIMARY KEY (`KlantID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Korting_Klanten_Ean`
--

CREATE TABLE `Korting_Klanten_Ean` (
  `Klantid` int(11) NOT NULL DEFAULT '0',
  `Ean` char(13) NOT NULL DEFAULT '',
  `Percentage` decimal(5,2) DEFAULT NULL,
  PRIMARY KEY (`Klantid`,`Ean`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Korting_Klanten_Uitgever`
--

CREATE TABLE `Korting_Klanten_Uitgever` (
  `Klantid` int(11) NOT NULL DEFAULT '0',
  `UitgeverID` int(11) NOT NULL DEFAULT '0',
  `Percentage` decimal(11,2) DEFAULT NULL,
  PRIMARY KEY (`Klantid`,`UitgeverID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `KredietControle`
--

CREATE TABLE `KredietControle` (
  `KlantId` int(11) NOT NULL,
  `IsBedrijf` tinyint(4) NOT NULL,
  `IPAdres` char(16) NOT NULL,
  `AantalBestellingen` int(11) NOT NULL,
  `OpenFacturenTotaal` int(11) NOT NULL,
  `OpenBedragTotaal` decimal(8,2) NOT NULL,
  `OpenFacturenDownloads` int(11) NOT NULL,
  `OpenBedragDownloads` decimal(8,2) NOT NULL,
  `OudsteOpenFactuur` int(11) NOT NULL,
  `OudsteBestelling` int(11) NOT NULL,
  `GebruikHandmatigeVelden` tinyint(4) NOT NULL,
  `HandMaxOpenBedrag` int(11) NOT NULL,
  `HandMaxOpenPosten` int(11) NOT NULL,
  `HandMaxDownloadBedrag` int(11) NOT NULL,
  `HandMaxPostOuderdom` int(11) NOT NULL,
  `AantalBetalingen` int(11) NOT NULL,
  `FormuleMultiplier` decimal(3,1) NOT NULL DEFAULT '1.0',
  `MaxOpenPosten` int(11) NOT NULL DEFAULT '2',
  `MaxOpenBedrag` int(11) NOT NULL DEFAULT '125',
  `VooruitBetalen` tinyint(4) DEFAULT '1',
  PRIMARY KEY (`KlantId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Mailing_Groups`
--

CREATE TABLE `Mailing_Groups` (
  `Groupid` int(11) NOT NULL AUTO_INCREMENT,
  `Mailingid` int(11) NOT NULL DEFAULT '0',
  `SortOrder` int(11) NOT NULL DEFAULT '0',
  `Titel` varchar(255) NOT NULL DEFAULT '',
  `Rule_odd` varchar(4) NOT NULL DEFAULT '',
  `Rule_min` int(11) NOT NULL DEFAULT '0',
  `Rule_max` int(11) NOT NULL DEFAULT '0',
  `Rule_ordered` varchar(4) NOT NULL DEFAULT '',
  `Rule_EANs` text NOT NULL,
  `Rule_days` int(11) NOT NULL DEFAULT '0',
  `Rule_geslacht` varchar(4) DEFAULT NULL,
  PRIMARY KEY (`Groupid`),
  KEY `Mailingid` (`Mailingid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Mailing_List`
--

CREATE TABLE `Mailing_List` (
  `Mailingid` int(11) NOT NULL AUTO_INCREMENT,
  `DT` datetime DEFAULT NULL,
  `Titel` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`Mailingid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Mailing_Run`
--

CREATE TABLE `Mailing_Run` (
  `Runid` int(11) NOT NULL DEFAULT '0',
  `Klantid` int(11) NOT NULL DEFAULT '0',
  `Groupid` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`Runid`,`Klantid`),
  KEY `Groupid` (`Groupid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Mailing_Runs`
--

CREATE TABLE `Mailing_Runs` (
  `Runid` int(11) NOT NULL AUTO_INCREMENT,
  `Mailingid` int(11) NOT NULL DEFAULT '0',
  `DT` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`Runid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Mailinglist`
--

CREATE TABLE `Mailinglist` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Naam` varchar(200) DEFAULT NULL,
  `ListOrder` int(11) DEFAULT NULL,
  `Optout` tinyint(4) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `ManComJurKoppeling`
--

CREATE TABLE `ManComJurKoppeling` (
  `ManId` int(11) NOT NULL,
  `ComId` int(11) DEFAULT NULL,
  `JurId` int(11) DEFAULT NULL,
  `Kunstmatig` tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`ManId`),
  UNIQUE KEY `ComId` (`ComId`),
  UNIQUE KEY `JurId` (`JurId`),
  CONSTRAINT `ManComJurKoppeling_ibfk_1` FOREIGN KEY (`ManId`) REFERENCES `Klanten` (`Klantid`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `ManComJurKoppeling_ibfk_2` FOREIGN KEY (`ComId`) REFERENCES `Computerboek_Klanten`.`Klanten` (`Klantid`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `ManComJurKoppeling_ibfk_3` FOREIGN KEY (`JurId`) REFERENCES `Juridischboek_Klanten`.`Klanten` (`Klantid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `MatrixCheckValues`
--

CREATE TABLE `MatrixCheckValues` (
  `CheckId` int(11) NOT NULL,
  `Ean` char(13) CHARACTER SET latin1 NOT NULL,
  `DT` datetime NOT NULL,
  `CheckValue` decimal(6,2) NOT NULL,
  PRIMARY KEY (`CheckId`,`Ean`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `MatrixChecks`
--

CREATE TABLE `MatrixChecks` (
  `CheckId` int(11) NOT NULL AUTO_INCREMENT,
  `Sectie` char(30) NOT NULL,
  `SectieVolgorde` int(11) NOT NULL DEFAULT '0',
  `Omschrijving` char(100) NOT NULL,
  `Ster0` tinyint(4) NOT NULL DEFAULT '0',
  `Ster1` tinyint(4) NOT NULL DEFAULT '0',
  `Ster2` tinyint(4) NOT NULL DEFAULT '0',
  `Ster3` tinyint(4) NOT NULL DEFAULT '0',
  `Ster4` tinyint(4) NOT NULL DEFAULT '0',
  `Ster5` tinyint(4) NOT NULL DEFAULT '0',
  `Ster6` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`CheckId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `MatrixLastRun`
--

CREATE TABLE `MatrixLastRun` (
  `EAN` char(13) CHARACTER SET latin1 NOT NULL,
  `DT` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`EAN`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `Miscdata`
--

CREATE TABLE `Miscdata` (
  `Naam` varchar(200) NOT NULL,
  `XML` longblob,
  PRIMARY KEY (`Naam`),
  KEY `Naam` (`Naam`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Notificatie`
--

CREATE TABLE `Notificatie` (
  `Klantid` int(11) DEFAULT NULL,
  `Notificatiestring` varchar(255) DEFAULT NULL,
  KEY `Klantid` (`Klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `NuttigStemmen`
--

CREATE TABLE `NuttigStemmen` (
  `StemType` char(5) NOT NULL DEFAULT '',
  `Id` int(11) NOT NULL DEFAULT '0',
  `KlantId` int(11) NOT NULL DEFAULT '0',
  `Nuttig` tinyint(4) DEFAULT NULL,
  PRIMARY KEY (`StemType`,`Id`,`KlantId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `OptOutVinkLogging`
--

CREATE TABLE `OptOutVinkLogging` (
  `KlantID` int(11) DEFAULT NULL,
  `DT` datetime DEFAULT NULL,
  `IP` char(16) DEFAULT NULL,
  `NieuweStatus` tinyint(4) DEFAULT NULL,
  `Referrer` text,
  KEY `KlantID` (`KlantID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `OrderkopStatusPlat`
--

CREATE TABLE `OrderkopStatusPlat` (
  `BestellingId` int(11) NOT NULL,
  `exact_export` tinyint(4) NOT NULL DEFAULT '0',
  `exact_controle` tinyint(4) NOT NULL DEFAULT '0',
  `factuur_sturen_niet_nodig` tinyint(4) NOT NULL DEFAULT '0',
  `factuur_geprint` tinyint(4) NOT NULL DEFAULT '0',
  `gefactureerd` tinyint(4) NOT NULL DEFAULT '0',
  `bevestigd` tinyint(4) NOT NULL DEFAULT '0',
  `is_geparkeerd` tinyint(4) NOT NULL DEFAULT '0',
  `ingepakt` tinyint(4) NOT NULL DEFAULT '0',
  `geannuleerd` tinyint(4) NOT NULL DEFAULT '0',
  `betaald` tinyint(4) NOT NULL DEFAULT '0',
  `openstaande_post_aangemaakt` tinyint(4) NOT NULL DEFAULT '0',
  `afgesloten` tinyint(4) NOT NULL DEFAULT '0',
  `vink_open` tinyint(4) NOT NULL DEFAULT '0',
  `niet_inpakken` tinyint(4) NOT NULL DEFAULT '0',
  `pakket_afgeleverd_volgens_postnl` tinyint(4) NOT NULL DEFAULT '0',
  `voorgemeld_bij_postnl` tinyint(4) NOT NULL DEFAULT '0',
  `inpakbevestiging_verzonden` tinyint(4) NOT NULL DEFAULT '0',
  `gecrediteerd` tinyint(4) NOT NULL DEFAULT '0',
  `enquete_verstuurd` tinyint(4) NOT NULL DEFAULT '0',
  `enquete_ingevuld` tinyint(4) NOT NULL DEFAULT '0',
  `opmerking_ingevuld` tinyint(4) NOT NULL DEFAULT '0',
  `opmerking_gemaild` tinyint(4) NOT NULL DEFAULT '0',
  `opmerking_verwerkt` tinyint(4) NOT NULL DEFAULT '0',
  `contact_opnemen` tinyint(4) NOT NULL DEFAULT '0',
  `contact_opgenomen` tinyint(4) NOT NULL DEFAULT '0',
  `enquete_opvolgen` tinyint(4) NOT NULL DEFAULT '0',
  `volledig_geleverd_backorder` tinyint(4) NOT NULL DEFAULT '0',
  `in_backorder_gezet` tinyint(4) NOT NULL DEFAULT '0',
  `momenteel_in_backorder` tinyint(4) NOT NULL DEFAULT '0',
  `leveren_via_cb` tinyint(4) NOT NULL DEFAULT '0',
  `uitgevoerd_via_cb` tinyint(4) NOT NULL DEFAULT '0',
  `achteraf_factureren` tinyint(4) NOT NULL DEFAULT '0',
  `achteraf_gefactureerd` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`BestellingId`),
  KEY `open_bestelling` (`exact_export`,`exact_controle`,`factuur_sturen_niet_nodig`,`factuur_geprint`,`gefactureerd`,`bevestigd`,`is_geparkeerd`,`ingepakt`,`geannuleerd`,`betaald`,`openstaande_post_aangemaakt`,`afgesloten`),
  KEY `enquetes` (`enquete_verstuurd`,`enquete_ingevuld`,`opmerking_ingevuld`,`opmerking_gemaild`,`opmerking_verwerkt`,`contact_opnemen`,`contact_opgenomen`),
  KEY `vink_open` (`vink_open`),
  KEY `vink_enquete` (`enquete_opvolgen`),
  KEY `vink_backorder` (`momenteel_in_backorder`),
  KEY `leveren_via_cb` (`leveren_via_cb`,`uitgevoerd_via_cb`),
  KEY `BestellingId` (`BestellingId`,`achteraf_factureren`),
  CONSTRAINT `fk_bestellingid` FOREIGN KEY (`BestellingId`) REFERENCES `BestellingAll` (`Bestellingid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`thijs`@`%`*/ /*!50003 TRIGGER `before_update_orderkopstatusplat` BEFORE UPDATE ON `OrderkopStatusPlat` 
    FOR EACH ROW BEGIN
	
	IF OLD.gefactureerd = 0
		AND ( NEW.factuur_geprint = 1 OR NEW.factuur_sturen_niet_nodig = 1 )
		AND NEW.exact_controle = 1
	THEN
		SET NEW.gefactureerd = 1;
	END IF;
	
	SET NEW.vink_open = ( NEW.bevestigd = 1
		AND NEW.geannuleerd = 0
		AND NEW.ingepakt = 0 AND NEW.gecrediteerd = 0
		AND NEW.afgesloten = 0 AND NEW.volledig_geleverd_backorder = 0
		AND ( NEW.gefactureerd = 0 OR NEW.niet_inpakken = 0 )
	);
	
	SET NEW.momenteel_in_backorder = (
		NEW.in_backorder_gezet = 1 AND NEW.volledig_geleverd_backorder = 0
	);
	
	SET NEW.enquete_opvolgen = (
		( NEW.opmerking_ingevuld = 1 AND NEW.opmerking_gemaild = 0 AND NEW.opmerking_verwerkt = 0 ) OR
		( NEW.contact_opnemen = 1 AND NEW.contact_opgenomen = 0 )
	);
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`thijs`@`%`*/ /*!50003 TRIGGER `after_update_orderkopstatusplat` AFTER UPDATE ON `OrderkopStatusPlat` 
    FOR EACH ROW BEGIN
	
	IF IFNULL( @skip_orderkopstatus_update, 0 ) = 0 THEN
		SET @skip_orderkopstatus_update = 1;
		
		
		IF NEW.bevestigd = 1                        AND OLD.bevestigd = 0                        THEN INSERT INTO BestellingStatus VALUES (  2, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.gefactureerd = 1                     AND OLD.gefactureerd = 0                     THEN INSERT INTO BestellingStatus VALUES (  5, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.is_geparkeerd = 1                    AND OLD.is_geparkeerd = 0                    THEN INSERT INTO BestellingStatus VALUES (  6, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.exact_export = 1                     AND OLD.exact_export = 0                     THEN INSERT INTO BestellingStatus VALUES (  8, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.exact_controle = 1                   AND OLD.exact_controle = 0                   THEN INSERT INTO BestellingStatus VALUES (  9, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.ingepakt = 1                         AND OLD.ingepakt = 0                         THEN INSERT INTO BestellingStatus VALUES ( 15, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.geannuleerd = 1                      AND OLD.geannuleerd = 0                      THEN INSERT INTO BestellingStatus VALUES ( 16, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.betaald = 1                          AND OLD.betaald = 0                          THEN INSERT INTO BestellingStatus VALUES ( 21, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.openstaande_post_aangemaakt = 1      AND OLD.openstaande_post_aangemaakt = 0      THEN INSERT INTO BestellingStatus VALUES ( 23, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.in_backorder_gezet = 1               AND OLD.in_backorder_gezet = 0               THEN INSERT INTO BestellingStatus VALUES ( 25, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.gecrediteerd = 1                     AND OLD.gecrediteerd = 0                     THEN INSERT INTO BestellingStatus VALUES ( 29, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.volledig_geleverd_backorder = 1      AND OLD.volledig_geleverd_backorder = 0      THEN INSERT INTO BestellingStatus VALUES ( 30, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.niet_inpakken = 1                    AND OLD.niet_inpakken = 0                    THEN INSERT INTO BestellingStatus VALUES ( 32, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.afgesloten = 1                       AND OLD.afgesloten = 0                       THEN INSERT INTO BestellingStatus VALUES ( 33, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.voorgemeld_bij_postnl = 1            AND OLD.voorgemeld_bij_postnl = 0            THEN INSERT INTO BestellingStatus VALUES ( 36, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.pakket_afgeleverd_volgens_postnl = 1 AND OLD.pakket_afgeleverd_volgens_postnl = 0 THEN INSERT INTO BestellingStatus VALUES ( 37, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.factuur_sturen_niet_nodig = 1        AND OLD.factuur_sturen_niet_nodig = 0        THEN INSERT INTO BestellingStatus VALUES ( 41, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.inpakbevestiging_verzonden = 1       AND OLD.inpakbevestiging_verzonden = 0       THEN INSERT INTO BestellingStatus VALUES ( 45, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.enquete_verstuurd = 1                AND OLD.enquete_verstuurd = 0                THEN INSERT INTO BestellingStatus VALUES ( 50, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.enquete_ingevuld = 1                 AND OLD.enquete_ingevuld = 0                 THEN INSERT INTO BestellingStatus VALUES ( 52, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.opmerking_ingevuld = 1               AND OLD.opmerking_ingevuld = 0               THEN INSERT INTO BestellingStatus VALUES ( 53, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.opmerking_gemaild = 1                AND OLD.opmerking_gemaild = 0                THEN INSERT INTO BestellingStatus VALUES ( 54, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.opmerking_verwerkt = 1               AND OLD.opmerking_verwerkt = 0               THEN INSERT INTO BestellingStatus VALUES ( 55, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.contact_opnemen = 1                  AND OLD.contact_opnemen = 0                  THEN INSERT INTO BestellingStatus VALUES ( 56, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.contact_opgenomen = 1                AND OLD.contact_opgenomen = 0                THEN INSERT INTO BestellingStatus VALUES ( 57, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.leveren_via_cb = 1                   AND OLD.leveren_via_cb = 0                   THEN INSERT INTO BestellingStatus VALUES ( 61, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.uitgevoerd_via_cb = 1                AND OLD.uitgevoerd_via_cb = 0                THEN INSERT INTO BestellingStatus VALUES ( 62, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.achteraf_factureren = 1              AND OLD.achteraf_factureren = 0              THEN INSERT INTO BestellingStatus VALUES ( 63, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.achteraf_gefactureerd = 1            AND OLD.achteraf_gefactureerd = 0            THEN INSERT INTO BestellingStatus VALUES ( 64, OLD.BestellingId, 'gelukt', @current_initials, NOW() ); END IF;		
		
		
		IF NEW.bevestigd = 0                        AND OLD.bevestigd = 1                        THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId =  2; END IF;
		IF NEW.gefactureerd = 0                     AND OLD.gefactureerd = 1                     THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId =  5; END IF;
		IF NEW.is_geparkeerd = 0                    AND OLD.is_geparkeerd = 1                    THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId =  6; END IF;
		IF NEW.exact_export = 0                     AND OLD.exact_export = 1                     THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId =  8; END IF;
		IF NEW.exact_controle = 0                   AND OLD.exact_controle = 1                   THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId =  9; END IF;
		IF NEW.ingepakt = 0                         AND OLD.ingepakt = 1                         THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 15; END IF;
		IF NEW.geannuleerd = 0                      AND OLD.geannuleerd = 1                      THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId IN ( 16, 24 ); END IF;
		IF NEW.betaald = 0                          AND OLD.betaald = 1                          THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 21; END IF;
		IF NEW.openstaande_post_aangemaakt = 0      AND OLD.openstaande_post_aangemaakt = 1      THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 23; END IF;
		IF NEW.in_backorder_gezet = 0               AND OLD.in_backorder_gezet = 1               THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 25; END IF;
		IF NEW.gecrediteerd = 0                     AND OLD.gecrediteerd = 1                     THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 29; END IF;
		IF NEW.volledig_geleverd_backorder = 0      AND OLD.volledig_geleverd_backorder = 1      THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 30; END IF;
		IF NEW.niet_inpakken = 0                    AND OLD.niet_inpakken = 1                    THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 32; END IF;
		IF NEW.afgesloten = 0                       AND OLD.afgesloten = 1                       THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 33; END IF;
		IF NEW.voorgemeld_bij_postnl = 0            AND OLD.voorgemeld_bij_postnl = 1            THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 36; END IF;
		IF NEW.pakket_afgeleverd_volgens_postnl = 0 AND OLD.pakket_afgeleverd_volgens_postnl = 1 THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 37; END IF;
		IF NEW.factuur_sturen_niet_nodig = 0        AND OLD.factuur_sturen_niet_nodig = 1        THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 41; END IF;
		IF NEW.inpakbevestiging_verzonden = 0       AND OLD.inpakbevestiging_verzonden = 1       THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 45; END IF;
		IF NEW.enquete_verstuurd = 0                AND OLD.enquete_verstuurd = 1                THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 50; END IF;
		IF NEW.enquete_ingevuld = 0                 AND OLD.enquete_ingevuld = 1                 THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 52; END IF;
		IF NEW.opmerking_ingevuld = 0               AND OLD.opmerking_ingevuld = 1               THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 53; END IF;
		IF NEW.opmerking_gemaild = 0                AND OLD.opmerking_gemaild = 1                THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 54; END IF;
		IF NEW.opmerking_verwerkt = 0               AND OLD.opmerking_verwerkt = 1               THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 55; END IF;
		IF NEW.contact_opnemen = 0                  AND OLD.contact_opnemen = 1                  THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 56; END IF;
		IF NEW.contact_opgenomen = 0                AND OLD.contact_opgenomen = 1                THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 57; END IF;
		IF NEW.leveren_via_cb = 0                   AND OLD.leveren_via_cb = 1                   THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 61; END IF;
		IF NEW.uitgevoerd_via_cb = 0                AND OLD.uitgevoerd_via_cb = 1                THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 62; END IF;
		
		IF NEW.achteraf_factureren = 0              AND OLD.achteraf_factureren = 1              THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 63; END IF;
		IF NEW.achteraf_gefactureerd = 0            AND OLD.achteraf_gefactureerd = 1            THEN DELETE FROM BestellingStatus WHERE BestellingId = OLD.BestellingId AND StatusId = 64; END IF;
				
		SET @skip_orderkopstatus_update = 0;
	END IF;
	
END */;;
DELIMITER ;

--
-- Table structure for table `OrderregelEigenaren`
--

CREATE TABLE `OrderregelEigenaren` (
  `Id` int(11) NOT NULL,
  `OEKlant` tinyint(1) NOT NULL,
  `OEKlantenservice` tinyint(1) NOT NULL,
  `OEWacht` tinyint(1) NOT NULL,
  `OEMagazijn` tinyint(1) NOT NULL,
  `OEBoekhouding` tinyint(1) NOT NULL,
  `OEControl` tinyint(1) NOT NULL,
  `OEBackorder` tinyint(1) NOT NULL,
  `DT` datetime DEFAULT NULL,
  PRIMARY KEY (`Id`),
  KEY `OEKlant` (`OEKlant`),
  KEY `OEKlantenservice` (`OEKlantenservice`),
  KEY `OEWacht` (`OEWacht`),
  KEY `OEMagazijn` (`OEMagazijn`),
  KEY `OEControl` (`OEControl`),
  KEY `OEBoekhouding` (`OEBoekhouding`),
  KEY `OEBackorder` (`OEBackorder`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `OrderregelStatus`
--

CREATE TABLE `OrderregelStatus` (
  `StatusId` int(11) NOT NULL,
  `Id` int(11) NOT NULL,
  `Resultaat` enum('gelukt','mislukt') DEFAULT NULL,
  `Gebruiker` char(2) DEFAULT NULL,
  `DT` datetime DEFAULT NULL,
  KEY `NewIndex1` (`DT`),
  KEY `NewIndex2` (`Id`,`StatusId`),
  KEY `NewIndex4` (`StatusId`,`DT`),
  CONSTRAINT `FK_OrderregelStatus` FOREIGN KEY (`Id`) REFERENCES `Bestellingen` (`Id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`main`@`%`*/ /*!50003 TRIGGER `after_insert_orderregelStatus` AFTER INSERT ON `OrderregelStatus` 
    FOR EACH ROW BEGIN
	DECLARE heeftNietInpakken INT;
	DECLARE eersteKeer INT;
	
	DECLARE myAantal,myBackorderOrigineel,myBestellingid,myOrigineelBestellingid,myKlantid,myAantalTotaal INT(11);
	DECLARE myEan varchar(255) CHARACTER SET latin1;
	declare myOmschrijving VARCHAR(255);
	
	DECLARE oudeVolgorde, nieuweVolgorde INT(11);
	
	IF IFNULL( @skip_orderregelstatus_update, 0 ) = 0
	THEN
		SET @skip_orderregelstatus_update = 1;
		IF NEW.StatusId = 1 THEN UPDATE OrderregelStatusPlat SET `aangemaakt` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 2 THEN UPDATE OrderregelStatusPlat SET `bevestigd` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 5 THEN UPDATE OrderregelStatusPlat SET `gefactureerd` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 6 THEN UPDATE OrderregelStatusPlat SET `is_geparkeerd` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 7 THEN UPDATE OrderregelStatusPlat SET `factuurnummer_toegewezen` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 8 THEN UPDATE OrderregelStatusPlat SET `exact_export` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 9 THEN UPDATE OrderregelStatusPlat SET `exact_controle` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 11 THEN UPDATE OrderregelStatusPlat SET `exact_factuur_verwerkt` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 14 THEN UPDATE OrderregelStatusPlat SET `etiket_geprint` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 15 THEN UPDATE OrderregelStatusPlat SET `ingepakt` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 16
		OR NEW.StatusId = 24 THEN UPDATE OrderregelStatusPlat SET `geannuleerd` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 17 THEN UPDATE OrderregelStatusPlat SET `factuur_geprint` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 18 THEN UPDATE OrderregelStatusPlat SET `pakketlabel_geprint` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 19 THEN UPDATE OrderregelStatusPlat SET `brieflabel_geprint` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 20 THEN UPDATE OrderregelStatusPlat SET `betaald_via_ideal` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 21 THEN UPDATE OrderregelStatusPlat SET `betaald` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 23 THEN UPDATE OrderregelStatusPlat SET `openstaande_post_aangemaakt` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 25 THEN UPDATE OrderregelStatusPlat SET `in_backorder_gezet` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 26 THEN UPDATE OrderregelStatusPlat SET `oud_handmatig_verwerkt` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 27 THEN UPDATE OrderregelStatusPlat SET `automatisch_geclassificeerd` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 28 THEN UPDATE OrderregelStatusPlat SET `handmatig_geclassificeerd` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 29 THEN UPDATE OrderregelStatusPlat SET `gecrediteerd` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 30 THEN UPDATE OrderregelStatusPlat SET `volledig_geleverd_backorder` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 31 THEN UPDATE OrderregelStatusPlat SET `samengevoegd_met_eerdere_order` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 32 THEN UPDATE OrderregelStatusPlat SET `niet_inpakken` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 33 THEN UPDATE OrderregelStatusPlat SET `afgesloten` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 34 THEN UPDATE OrderregelStatusPlat SET `factuur_per_mail_verzonden` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 35 THEN UPDATE OrderregelStatusPlat SET `pdf_factuur_gecontroleerd` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 36 THEN UPDATE OrderregelStatusPlat SET `voorgemeld_bij_postnl` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 37 THEN UPDATE OrderregelStatusPlat SET `pakket_afgeleverd_volgens_postnl` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 38 THEN UPDATE OrderregelStatusPlat SET `kan_gedownload_worden` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 39 THEN UPDATE OrderregelStatusPlat SET `pakbon_geprint` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 40 THEN UPDATE OrderregelStatusPlat SET `uit_backorder_gehaald` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 41 THEN UPDATE OrderregelStatusPlat SET `factuur_sturen_niet_nodig` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 42 THEN UPDATE OrderregelStatusPlat SET `hoeft_niet_betaald_te_worden` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 43 THEN UPDATE OrderregelStatusPlat SET `uitgevoerd_naar_exact_via_mari` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 44 THEN UPDATE OrderregelStatusPlat SET `wacht_op_compleet` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 45 THEN UPDATE OrderregelStatusPlat SET `inpakbevestiging_verzonden` = 1 WHERE Id = NEW.Id; END IF;
		IF NEW.StatusId = 46 THEN UPDATE OrderregelStatusPlat SET `niet_reserveren` = 1 WHERE Id = NEW.Id; END IF;
				
		SET @skip_orderregelstatus_update = 0;
	END IF;
	
	SELECT    BS.Ean, BS.Aantal, BS.Bestellingid, BS.BackorderOrigineel, BA.OrigineelBestellingid, BA.Klantid, BS.Omschrijving, BS.Aantal + BS.AantalBackorder
		INTO  myEan,  myAantal,  myBestellingid,  myBackorderOrigineel,  myOrigineelBestellingid,  myKlantid,  myOmschrijving,  myAantalTotaal
		FROM Bestellingen BS 
			LEFT JOIN BestellingAll BA USING (Bestellingid)
		WHERE BS.Id = NEW.Id;	
	
	SET eersteKeer = (SELECT CASE WHEN 
		(SELECT COUNT(*) FROM OrderregelStatus
			WHERE Id=NEW.Id 
			AND StatusId = NEW.StatusId) = 1 THEN 1 ELSE 0 END);
	
	IF NEW.StatusId=2
	THEN
		IF myBackorderOrigineel > 0
		THEN
			INSERT INTO Test_Voorraadbeheer.DevLog (LOG,DT)
			VALUES (
				CONCAT(
					myOrigineelBestellingid,'-',
					myAantal,'-',
					myBackorderOrigineel,'-',
					myEan,'-',
					myKlantid,'-',
					myOmschrijving),
				NOW()
			);
			
			
			SELECT Voorraadbeheer.maakVoorraadreservering(get_administratie(),
					myEan,
					-1*myAantal,
					myOrigineelBestellingid,
					myBackorderOrigineel,
					myKlantid,
					'uit backorder',
					NULL,
					myOmschrijving)
				INTO @myResevering;				
		END IF;
	ELSEIF NEW.StatusId=15
	THEN
		IF eersteKeer = 1 AND heeft_orderregelStatus(NEW.Id,32) = 0
		THEN		
			
			SELECT Voorraadbeheer.maakVoorraadmutatie(get_administratie(),
					myEan,
					-1*myAantal,
					myBestellingid,
					NEW.Id,
					'ingepakt',
					myOrigineelBestellingid,
					myOmschrijving)
				INTO @myVoorraadmutatie;							
		END IF;
	ELSEIF NEW.StatusId = 29  OR New.StatusId = 30  OR New.StatusId=33  OR NEW.StatusId=24  OR NEW.StatusId=21
	THEN
		
		IF NEW.StatusId = 29  AND heeft_orderregelStatus(NEW.Id,32) = 0 AND heeft_orderregelStatus(NEW.Id,15) = 0
		THEN
			SELECT Voorraadbeheer.maakVoorraadreservering(get_administratie(),
					myEan,
					-1*myAantalTotaal,
					myBestellingid,
					NEW.Id,
					myKlantid,
					'gecrediteerd',
					myOrigineelBestellingid,
					myOmschrijving)
				INTO @myResevering;						 
		ELSEIF NEW.StatusId=33
		THEN
			IF myAantal > 0
			THEN
				SELECT Voorraadbeheer.maakVoorraadreservering(get_administratie(),
						myEan,
						-1*myAantalTotaal,
						myBestellingid,
						NEW.Id,
						myKlantid,
						'afgesloten',
						myOrigineelBestellingid,
						myOmschrijving)
					INTO @myResevering;	
			END IF;
		END IF;
	ELSEIF NEW.StatusId IN (32)
	THEN
		
		IF myAantal > 0
		THEN
			SELECT Voorraadbeheer.maakVoorraadreservering(get_administratie(),
					myEan,
					-1*myAantalTotaal,
					myBestellingid,
					NEW.Id,
					myKlantid,
					'niet inpakken',
					myOrigineelBestellingid,
					myOmschrijving)
				INTO @myResevering;
		END IF;
	END IF;
END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`pieter`@`%`*/ /*!50003 TRIGGER `after_delete_orderregelStatus` AFTER DELETE ON `OrderregelStatus` 
    FOR EACH ROW BEGIN    
	DECLARE myAantal,myAantalBackorder,myBestellingid,myKlantid INT(11);
	DECLARE myOmschrijving VARCHAR(255);
	DECLARE myAfgerond TINYINT(1);
	DECLARE myEan VARCHAR(13) CHARACTER SET latin1;
	
	
	IF IFNULL( @skip_orderregelstatus_update, 0 ) = 0 THEN
		SET @skip_orderregelstatus_update = 1;
		IF OLD.StatusId = 1 THEN UPDATE OrderregelStatusPlat SET `aangemaakt` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 2 THEN UPDATE OrderregelStatusPlat SET `bevestigd` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 5 THEN UPDATE OrderregelStatusPlat SET `gefactureerd` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 6 THEN UPDATE OrderregelStatusPlat SET `is_geparkeerd` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 7 THEN UPDATE OrderregelStatusPlat SET `factuurnummer_toegewezen` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 8 THEN UPDATE OrderregelStatusPlat SET `exact_export` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 9 THEN UPDATE OrderregelStatusPlat SET `exact_controle` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 11 THEN UPDATE OrderregelStatusPlat SET `exact_factuur_verwerkt` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 14 THEN UPDATE OrderregelStatusPlat SET `etiket_geprint` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 15 THEN UPDATE OrderregelStatusPlat SET `ingepakt` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 16 OR OLD.StatusId = 24 THEN UPDATE OrderregelStatusPlat SET `geannuleerd` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 17 THEN UPDATE OrderregelStatusPlat SET `factuur_geprint` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 18 THEN UPDATE OrderregelStatusPlat SET `pakketlabel_geprint` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 19 THEN UPDATE OrderregelStatusPlat SET `brieflabel_geprint` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 20 THEN UPDATE OrderregelStatusPlat SET `betaald_via_ideal` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 21 THEN UPDATE OrderregelStatusPlat SET `betaald` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 23 THEN UPDATE OrderregelStatusPlat SET `openstaande_post_aangemaakt` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 25 THEN UPDATE OrderregelStatusPlat SET `in_backorder_gezet` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 26 THEN UPDATE OrderregelStatusPlat SET `oud_handmatig_verwerkt` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 27 THEN UPDATE OrderregelStatusPlat SET `automatisch_geclassificeerd` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 28 THEN UPDATE OrderregelStatusPlat SET `handmatig_geclassificeerd` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 29 THEN UPDATE OrderregelStatusPlat SET `gecrediteerd` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 30 THEN UPDATE OrderregelStatusPlat SET `volledig_geleverd_backorder` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 31 THEN UPDATE OrderregelStatusPlat SET `samengevoegd_met_eerdere_order` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 32 THEN UPDATE OrderregelStatusPlat SET `niet_inpakken` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 33 THEN UPDATE OrderregelStatusPlat SET `afgesloten` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 34 THEN UPDATE OrderregelStatusPlat SET `factuur_per_mail_verzonden` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 35 THEN UPDATE OrderregelStatusPlat SET `pdf_factuur_gecontroleerd` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 36 THEN UPDATE OrderregelStatusPlat SET `voorgemeld_bij_postnl` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 37 THEN UPDATE OrderregelStatusPlat SET `pakket_afgeleverd_volgens_postnl` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 38 THEN UPDATE OrderregelStatusPlat SET `kan_gedownload_worden` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 39 THEN UPDATE OrderregelStatusPlat SET `pakbon_geprint` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 40 THEN UPDATE OrderregelStatusPlat SET `uit_backorder_gehaald` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 41 THEN UPDATE OrderregelStatusPlat SET `factuur_sturen_niet_nodig` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 42 THEN UPDATE OrderregelStatusPlat SET `hoeft_niet_betaald_te_worden` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 43 THEN UPDATE OrderregelStatusPlat SET `uitgevoerd_naar_exact_via_mari` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 44 THEN UPDATE OrderregelStatusPlat SET `wacht_op_compleet` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 45 THEN UPDATE OrderregelStatusPlat SET `inpakbevestiging_verzonden` = 0 WHERE Id = OLD.Id; END IF;
		IF OLD.StatusId = 46 THEN UPDATE OrderregelStatusPlat SET `niet_reserveren` = 0 WHERE Id = OLD.Id; END IF;		
		SET @skip_orderregelstatus_update = 0;
	END IF;
	
	
	IF OLD.StatusId = 32  THEN
		
		SELECT 
			B.Aantal,B.AantalBackorder,B.Bestellingid,BA.Klantid,B.Omschrijving,B.Ean,BA.Afgerond
			INTO myAantal,myAantalBackorder,myBestellingid,myKlantid,myOmschrijving,myEan,myAfgerond
		FROM Bestellingen B JOIN BestellingAll BA USING(Bestellingid) WHERE Id=OLD.Id;
		IF (myAantal+myAantalBackorder) > 0 AND myAfgerond = 1 THEN
			SELECT Voorraadbeheer.maakVoorraadreservering(get_administratie(),
									myEan,
									myAantal+myAantalBackorder,
									myBestellingid,
									OLD.Id,
									myKlantid,
									'gecorrigeerd',
									NULL,
									myOmschrijving) 
								INTO @myResevering;					
		END IF;
	END IF;
    END */;;
DELIMITER ;

--
-- Table structure for table `OrderregelStatusPlat`
--

CREATE TABLE `OrderregelStatusPlat` (
  `Id` int(11) NOT NULL,
  `aangemaakt` tinyint(4) NOT NULL DEFAULT '0',
  `bevestigd` tinyint(4) NOT NULL DEFAULT '0',
  `gefactureerd` tinyint(4) NOT NULL DEFAULT '0',
  `is_geparkeerd` tinyint(4) NOT NULL DEFAULT '0',
  `factuurnummer_toegewezen` tinyint(4) NOT NULL DEFAULT '0',
  `exact_export` tinyint(4) NOT NULL DEFAULT '0',
  `exact_controle` tinyint(4) NOT NULL DEFAULT '0',
  `exact_factuur_verwerkt` tinyint(4) NOT NULL DEFAULT '0',
  `etiket_geprint` tinyint(4) NOT NULL DEFAULT '0',
  `ingepakt` tinyint(4) NOT NULL DEFAULT '0',
  `geannuleerd` tinyint(4) NOT NULL DEFAULT '0',
  `factuur_geprint` tinyint(4) NOT NULL DEFAULT '0',
  `pakketlabel_geprint` tinyint(4) NOT NULL DEFAULT '0',
  `brieflabel_geprint` tinyint(4) NOT NULL DEFAULT '0',
  `betaald_via_ideal` tinyint(4) NOT NULL DEFAULT '0',
  `betaald` tinyint(4) NOT NULL DEFAULT '0',
  `openstaande_post_aangemaakt` tinyint(4) NOT NULL DEFAULT '0',
  `in_backorder_gezet` tinyint(4) NOT NULL DEFAULT '0',
  `oud_handmatig_verwerkt` tinyint(4) NOT NULL DEFAULT '0',
  `automatisch_geclassificeerd` tinyint(4) NOT NULL DEFAULT '0',
  `handmatig_geclassificeerd` tinyint(4) NOT NULL DEFAULT '0',
  `gecrediteerd` tinyint(4) NOT NULL DEFAULT '0',
  `volledig_geleverd_backorder` tinyint(4) NOT NULL DEFAULT '0',
  `samengevoegd_met_eerdere_order` tinyint(4) NOT NULL DEFAULT '0',
  `niet_inpakken` tinyint(4) NOT NULL DEFAULT '0',
  `afgesloten` tinyint(4) NOT NULL DEFAULT '0',
  `factuur_per_mail_verzonden` tinyint(4) NOT NULL DEFAULT '0',
  `pdf_factuur_gecontroleerd` tinyint(4) NOT NULL DEFAULT '0',
  `voorgemeld_bij_postnl` tinyint(4) NOT NULL DEFAULT '0',
  `pakket_afgeleverd_volgens_postnl` tinyint(4) NOT NULL DEFAULT '0',
  `kan_gedownload_worden` tinyint(4) NOT NULL DEFAULT '0',
  `pakbon_geprint` tinyint(4) NOT NULL DEFAULT '0',
  `uit_backorder_gehaald` tinyint(4) NOT NULL DEFAULT '0',
  `factuur_sturen_niet_nodig` tinyint(4) NOT NULL DEFAULT '0',
  `hoeft_niet_betaald_te_worden` tinyint(4) NOT NULL DEFAULT '0',
  `uitgevoerd_naar_exact_via_mari` tinyint(4) NOT NULL DEFAULT '0',
  `wacht_op_compleet` tinyint(4) NOT NULL DEFAULT '0',
  `inpakbevestiging_verzonden` tinyint(4) NOT NULL DEFAULT '0',
  `niet_reserveren` tinyint(4) NOT NULL,
  `vink_open` tinyint(4) NOT NULL DEFAULT '0',
  `vink_magazijn` tinyint(4) NOT NULL DEFAULT '0',
  `vink_klantenservice` tinyint(4) NOT NULL DEFAULT '0',
  `vink_geprint` tinyint(4) NOT NULL DEFAULT '0',
  `vink_nietgeprint` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`Id`),
  KEY `openbestelling` (`bevestigd`,`ingepakt`,`geannuleerd`,`gecrediteerd`,`niet_inpakken`,`afgesloten`,`uit_backorder_gehaald`,`niet_reserveren`),
  KEY `factuur_geprint` (`afgesloten`,`factuur_geprint`),
  KEY `klantenservice` (`bevestigd`,`afgesloten`,`exact_export`,`gefactureerd`),
  KEY `vink_open` (`vink_open`),
  KEY `vink_magazijn` (`vink_magazijn`),
  KEY `vink_klantenservice` (`vink_klantenservice`),
  KEY `afgesloten` (`afgesloten`,`gefactureerd`),
  KEY `vink_geprint` (`vink_geprint`),
  KEY `vink_nietgeprint` (`vink_nietgeprint`),
  KEY `vink_nietreserveren` (`niet_reserveren`),
  CONSTRAINT `OrderregelStatusPlat_ibfk_1` FOREIGN KEY (`Id`) REFERENCES `Bestellingen` (`Id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`sander`@`%`*/ /*!50003 TRIGGER `before_update_orderregelstatusplat` BEFORE UPDATE ON `OrderregelStatusPlat` 
    FOR EACH ROW BEGIN
	
	SET NEW.vink_open = (NEW.`bevestigd` = 1) AND (NEW.`ingepakt` = 0) AND (NEW.`geannuleerd` = 0) AND (NEW.`gecrediteerd` = 0)
	                    AND (NEW.`afgesloten` = 0) AND (NEW.`volledig_geleverd_backorder` = 0)
	                    AND ( NEW.gefactureerd = 0 OR NEW.niet_inpakken = 0 );
	                    
	SET NEW.vink_klantenservice = (NEW.`bevestigd` = 1) AND (NEW.`gefactureerd` = 0) AND (NEW.`geannuleerd` = 0) AND (NEW.`gecrediteerd` = 0) 
	                              AND (NEW.`afgesloten` = 0) AND (NEW.`volledig_geleverd_backorder` = 0);
	                              
	SET NEW.vink_magazijn       = (NEW.`bevestigd` = 1) AND (NEW.`factuur_geprint` = 1) AND (NEW.`ingepakt` = 0) AND (NEW.`geannuleerd` = 0) AND (NEW.`gecrediteerd` = 0) 
	                              AND (NEW.`afgesloten` = 0) AND (NEW.`niet_inpakken`=0) AND (NEW.`volledig_geleverd_backorder` = 0);
	
	SET NEW.vink_geprint =  (NEW.bevestigd = 1)
				AND (NEW.`geannuleerd` = 0) AND (NEW.`gecrediteerd` = 0)
				AND (NEW.`afgesloten` = 0) AND (NEW.`volledig_geleverd_backorder` = 0)
				AND ( NEW.exact_export = 1 OR NEW.factuur_geprint = 1 OR NEW.gefactureerd = 1 )
				AND ( NEW.niet_inpakken = 0 )
				AND ( NEW.ingepakt = 0 );
				
	SET NEW.vink_nietgeprint = ( NEW.bevestigd = 1)
				AND (NEW.`geannuleerd` = 0) AND (NEW.`gecrediteerd` = 0)
				AND (NEW.`afgesloten` = 0) AND (NEW.`volledig_geleverd_backorder` = 0)
				AND ( NEW.exact_export = 0 ) 
				AND ( NEW.factuur_geprint = 0 )
				AND ( NEW.gefactureerd = 0 )
				AND ( NEW.uit_backorder_gehaald = 0 );
	IF OLD.gefactureerd = 0 AND ( NEW.factuur_geprint = 1 OR NEW.`factuur_sturen_niet_nodig` = 1 ) AND NEW.exact_controle = 1 THEN
		SET NEW.gefactureerd = 1;
	END IF;
                             
    END */;;
DELIMITER ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`sander`@`%`*/ /*!50003 TRIGGER `after_update_OrderregelStatusPlat` AFTER UPDATE ON `OrderregelStatusPlat` 
    FOR EACH ROW BEGIN
	
	IF IFNULL( @skip_orderregelstatus_update, 0 ) = 0 THEN
		SET @skip_orderregelstatus_update = 1;
		IF NEW.`aangemaakt` = 1 AND OLD.`aangemaakt` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '1', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`bevestigd` = 1 AND OLD.`bevestigd` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '2', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`gefactureerd` = 1 AND OLD.`gefactureerd` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '5', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`is_geparkeerd` = 1 AND OLD.`is_geparkeerd` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '6', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`factuurnummer_toegewezen` = 1 AND OLD.`factuurnummer_toegewezen` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '7', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`exact_export` = 1 AND OLD.`exact_export` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '8', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`exact_controle` = 1 AND OLD.`exact_controle` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '9', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`exact_factuur_verwerkt` = 1 AND OLD.`exact_factuur_verwerkt` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '11', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`etiket_geprint` = 1 AND OLD.`etiket_geprint` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '14', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`ingepakt` = 1 AND OLD.`ingepakt` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '15', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`geannuleerd` = 1 AND OLD.`geannuleerd` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '16', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`factuur_geprint` = 1 AND OLD.`factuur_geprint` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '17', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`pakketlabel_geprint` = 1 AND OLD.`pakketlabel_geprint` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '18', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`brieflabel_geprint` = 1 AND OLD.`brieflabel_geprint` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '19', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`betaald_via_ideal` = 1 AND OLD.`betaald_via_ideal` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '20', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`betaald` = 1 AND OLD.`betaald` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '21', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`openstaande_post_aangemaakt` = 1 AND OLD.`openstaande_post_aangemaakt` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '23', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`in_backorder_gezet` = 1 AND OLD.`in_backorder_gezet` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '25', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`oud_handmatig_verwerkt` = 1 AND OLD.`oud_handmatig_verwerkt` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '26', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`automatisch_geclassificeerd` = 1 AND OLD.`automatisch_geclassificeerd` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '27', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`handmatig_geclassificeerd` = 1 AND OLD.`handmatig_geclassificeerd` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '28', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`gecrediteerd` = 1 AND OLD.`gecrediteerd` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '29', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`volledig_geleverd_backorder` = 1 AND OLD.`volledig_geleverd_backorder` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '30', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`samengevoegd_met_eerdere_order` = 1 AND OLD.`samengevoegd_met_eerdere_order` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '31', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`niet_inpakken` = 1 AND OLD.`niet_inpakken` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '32', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`afgesloten` = 1 AND OLD.`afgesloten` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '33', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`factuur_per_mail_verzonden` = 1 AND OLD.`factuur_per_mail_verzonden` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '34', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`pdf_factuur_gecontroleerd` = 1 AND OLD.`pdf_factuur_gecontroleerd` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '35', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`voorgemeld_bij_postnl` = 1 AND OLD.`voorgemeld_bij_postnl` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '36', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`pakket_afgeleverd_volgens_postnl` = 1 AND OLD.`pakket_afgeleverd_volgens_postnl` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '37', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`kan_gedownload_worden` = 1 AND OLD.`kan_gedownload_worden` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '38', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`pakbon_geprint` = 1 AND OLD.`pakbon_geprint` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '39', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`uit_backorder_gehaald` = 1 AND OLD.`uit_backorder_gehaald` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '40', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`factuur_sturen_niet_nodig` = 1 AND OLD.`factuur_sturen_niet_nodig` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '41', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`hoeft_niet_betaald_te_worden` = 1 AND OLD.`hoeft_niet_betaald_te_worden` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '42', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`uitgevoerd_naar_exact_via_mari` = 1 AND OLD.`uitgevoerd_naar_exact_via_mari` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '43', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`wacht_op_compleet` = 1 AND OLD.`wacht_op_compleet` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '44', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`inpakbevestiging_verzonden` = 1 AND OLD.`inpakbevestiging_verzonden` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '45', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;
		IF NEW.`niet_reserveren` = 1 AND OLD.`niet_reserveren` = 0 THEN INSERT INTO OrderregelStatus VALUES ( '46', OLD.Id, 'gelukt', @current_initials, NOW() ); END IF;		
		SET @skip_orderregelstatus_update = 0;
	END IF;
	
	IF IFNULL( @skip_orderregelstatus_update, 0 ) = 0 THEN
		SET @skip_orderregelstatus_update = 1;
		IF NEW.`aangemaakt` = 0 AND OLD.`aangemaakt` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '1'; END IF;
		IF NEW.`bevestigd` = 0 AND OLD.`bevestigd` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '2'; END IF;
		IF NEW.`gefactureerd` = 0 AND OLD.`gefactureerd` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '5'; END IF;
		IF NEW.`is_geparkeerd` = 0 AND OLD.`is_geparkeerd` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '6'; END IF;
		IF NEW.`factuurnummer_toegewezen` = 0 AND OLD.`factuurnummer_toegewezen` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '7'; END IF;
		IF NEW.`exact_export` = 0 AND OLD.`exact_export` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '8'; END IF;
		IF NEW.`exact_controle` = 0 AND OLD.`exact_controle` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '9'; END IF;
		IF NEW.`exact_factuur_verwerkt` = 0 AND OLD.`exact_factuur_verwerkt` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '11'; END IF;
		IF NEW.`etiket_geprint` = 0 AND OLD.`etiket_geprint` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '14'; END IF;
		IF NEW.`ingepakt` = 0 AND OLD.`ingepakt` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '15'; END IF;
		IF NEW.`geannuleerd` = 0 AND OLD.`geannuleerd` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '16'; END IF;
		IF NEW.`factuur_geprint` = 0 AND OLD.`factuur_geprint` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '17'; END IF;
		IF NEW.`pakketlabel_geprint` = 0 AND OLD.`pakketlabel_geprint` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '18'; END IF;
		IF NEW.`brieflabel_geprint` = 0 AND OLD.`brieflabel_geprint` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '19'; END IF;
		IF NEW.`betaald_via_ideal` = 0 AND OLD.`betaald_via_ideal` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '20'; END IF;
		IF NEW.`betaald` = 0 AND OLD.`betaald` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '21'; END IF;
		IF NEW.`openstaande_post_aangemaakt` = 0 AND OLD.`openstaande_post_aangemaakt` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '23'; END IF;
		IF NEW.`in_backorder_gezet` = 0 AND OLD.`in_backorder_gezet` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '25'; END IF;
		IF NEW.`oud_handmatig_verwerkt` = 0 AND OLD.`oud_handmatig_verwerkt` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '26'; END IF;
		IF NEW.`automatisch_geclassificeerd` = 0 AND OLD.`automatisch_geclassificeerd` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '27'; END IF;
		IF NEW.`handmatig_geclassificeerd` = 0 AND OLD.`handmatig_geclassificeerd` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '28'; END IF;
		IF NEW.`gecrediteerd` = 0 AND OLD.`gecrediteerd` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '29'; END IF;
		IF NEW.`volledig_geleverd_backorder` = 0 AND OLD.`volledig_geleverd_backorder` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '30'; END IF;
		IF NEW.`samengevoegd_met_eerdere_order` = 0 AND OLD.`samengevoegd_met_eerdere_order` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '31'; END IF;
		IF NEW.`niet_inpakken` = 0 AND OLD.`niet_inpakken` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '32'; END IF;
		IF NEW.`afgesloten` = 0 AND OLD.`afgesloten` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '33'; END IF;
		IF NEW.`factuur_per_mail_verzonden` = 0 AND OLD.`factuur_per_mail_verzonden` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '34'; END IF;
		IF NEW.`pdf_factuur_gecontroleerd` = 0 AND OLD.`pdf_factuur_gecontroleerd` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '35'; END IF;
		IF NEW.`voorgemeld_bij_postnl` = 0 AND OLD.`voorgemeld_bij_postnl` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '36'; END IF;
		IF NEW.`pakket_afgeleverd_volgens_postnl` = 0 AND OLD.`pakket_afgeleverd_volgens_postnl` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '37'; END IF;
		IF NEW.`kan_gedownload_worden` = 0 AND OLD.`kan_gedownload_worden` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '38'; END IF;
		IF NEW.`pakbon_geprint` = 0 AND OLD.`pakbon_geprint` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '39'; END IF;
		IF NEW.`uit_backorder_gehaald` = 0 AND OLD.`uit_backorder_gehaald` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '40'; END IF;
		IF NEW.`factuur_sturen_niet_nodig` = 0 AND OLD.`factuur_sturen_niet_nodig` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '41'; END IF;
		IF NEW.`hoeft_niet_betaald_te_worden` = 0 AND OLD.`hoeft_niet_betaald_te_worden` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '42'; END IF;
		IF NEW.`uitgevoerd_naar_exact_via_mari` = 0 AND OLD.`uitgevoerd_naar_exact_via_mari` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '43'; END IF;
		IF NEW.`wacht_op_compleet` = 0 AND OLD.`wacht_op_compleet` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '44'; END IF;
		IF NEW.`inpakbevestiging_verzonden` = 0 AND OLD.`inpakbevestiging_verzonden` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '45'; END IF;
		IF NEW.`niet_reserveren` = 0 AND OLD.`niet_reserveren` = 1 THEN DELETE FROM OrderregelStatus WHERE Id = OLD.Id AND StatusId = '46'; END IF;		
		SET @skip_orderregelstatus_update = 0;
	END IF;
	
	IF (NEW.bevestigd != OLD.bevestigd) OR (NEW.`ingepakt` != OLD.`ingepakt` ) OR ( NEW.geannuleerd != OLD.geannuleerd ) 
	   OR ( NEW.gecrediteerd != OLD.gecrediteerd ) OR ( NEW.niet_inpakken != OLD.niet_inpakken ) OR ( NEW.afgesloten != OLD.afgesloten ) 
	     OR ( NEW.volledig_geleverd_backorder != OLD.volledig_geleverd_backorder ) OR ( NEW.niet_reserveren != OLD.niet_reserveren ) 
	       OR ( NEW.vink_open != OLD.vink_open ) THEN
		CALL herbereken_reserveringen( OLD.Id );
	END IF;
    END */;;
DELIMITER ;

--
-- Table structure for table `OrderregelStatusPlat2`
--

CREATE TABLE `OrderregelStatusPlat2` (
  `Id` int(11) NOT NULL,
  `aangemaakt` tinyint(4) NOT NULL DEFAULT '0',
  `bevestigd` tinyint(4) NOT NULL DEFAULT '0',
  `gefactureerd` tinyint(4) NOT NULL DEFAULT '0',
  `is_geparkeerd` tinyint(4) NOT NULL DEFAULT '0',
  `factuurnummer_toegewezen` tinyint(4) NOT NULL DEFAULT '0',
  `exact_export` tinyint(4) NOT NULL DEFAULT '0',
  `exact_controle` tinyint(4) NOT NULL DEFAULT '0',
  `exact_factuur_verwerkt` tinyint(4) NOT NULL DEFAULT '0',
  `etiket_geprint` tinyint(4) NOT NULL DEFAULT '0',
  `ingepakt` tinyint(4) NOT NULL DEFAULT '0',
  `geannuleerd` tinyint(4) NOT NULL DEFAULT '0',
  `factuur_geprint` tinyint(4) NOT NULL DEFAULT '0',
  `pakketlabel_geprint` tinyint(4) NOT NULL DEFAULT '0',
  `brieflabel_geprint` tinyint(4) NOT NULL DEFAULT '0',
  `betaald_via_ideal` tinyint(4) NOT NULL DEFAULT '0',
  `betaald` tinyint(4) NOT NULL DEFAULT '0',
  `openstaande_post_aangemaakt` tinyint(4) NOT NULL DEFAULT '0',
  `in_backorder_gezet` tinyint(4) NOT NULL DEFAULT '0',
  `oud_handmatig_verwerkt` tinyint(4) NOT NULL DEFAULT '0',
  `automatisch_geclassificeerd` tinyint(4) NOT NULL DEFAULT '0',
  `handmatig_geclassificeerd` tinyint(4) NOT NULL DEFAULT '0',
  `gecrediteerd` tinyint(4) NOT NULL DEFAULT '0',
  `volledig_geleverd_backorder` tinyint(4) NOT NULL DEFAULT '0',
  `samengevoegd_met_eerdere_order` tinyint(4) NOT NULL DEFAULT '0',
  `niet_inpakken` tinyint(4) NOT NULL DEFAULT '0',
  `afgesloten` tinyint(4) NOT NULL DEFAULT '0',
  `factuur_per_mail_verzonden` tinyint(4) NOT NULL DEFAULT '0',
  `pdf_factuur_gecontroleerd` tinyint(4) NOT NULL DEFAULT '0',
  `voorgemeld_bij_postnl` tinyint(4) NOT NULL DEFAULT '0',
  `pakket_afgeleverd_volgens_postnl` tinyint(4) NOT NULL DEFAULT '0',
  `kan_gedownload_worden` tinyint(4) NOT NULL DEFAULT '0',
  `pakbon_geprint` tinyint(4) NOT NULL DEFAULT '0',
  `uit_backorder_gehaald` tinyint(4) NOT NULL DEFAULT '0',
  `factuur_sturen_niet_nodig` tinyint(4) NOT NULL DEFAULT '0',
  `hoeft_niet_betaald_te_worden` tinyint(4) NOT NULL DEFAULT '0',
  `uitgevoerd_naar_exact_via_mari` tinyint(4) NOT NULL DEFAULT '0',
  `wacht_op_compleet` tinyint(4) NOT NULL DEFAULT '0',
  `inpakbevestiging_verzonden` tinyint(4) NOT NULL DEFAULT '0',
  `niet_reserveren` tinyint(4) NOT NULL,
  `vink_open` tinyint(4) NOT NULL DEFAULT '0',
  `vink_magazijn` tinyint(4) NOT NULL DEFAULT '0',
  `vink_klantenservice` tinyint(4) DEFAULT '0',
  PRIMARY KEY (`Id`),
  KEY `openbestelling` (`bevestigd`,`ingepakt`,`geannuleerd`,`gecrediteerd`,`niet_inpakken`,`afgesloten`,`uit_backorder_gehaald`,`niet_reserveren`),
  KEY `factuur_geprint` (`afgesloten`,`factuur_geprint`),
  KEY `klantenservice` (`bevestigd`,`afgesloten`,`exact_export`,`gefactureerd`),
  KEY `vink_open` (`vink_open`),
  KEY `vink_magazijn` (`vink_magazijn`),
  KEY `vink_klantenservice` (`vink_klantenservice`),
  KEY `afgesloten` (`afgesloten`,`gefactureerd`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Temporary table structure for view `OrderregelsViaONE`
--

/*!50001 DROP VIEW IF EXISTS `OrderregelsViaONE`*/;
/*!50001 CREATE TABLE `OrderregelsViaONE` (
  `bestellingid` tinyint NOT NULL,
  `id` tinyint NOT NULL,
  `ean` tinyint NOT NULL,
  `cb_mag_one` tinyint NOT NULL,
  `manpo_mag_one` tinyint NOT NULL,
  `mag_one` tinyint NOT NULL,
  `leverbaar_via_cb` tinyint NOT NULL,
  `leverbaar_via_cb24` tinyint NOT NULL,
  `leverbaar_via_mgt` tinyint NOT NULL,
  `splitsbaar` tinyint NOT NULL
) ENGINE=MyISAM */;

--
-- Table structure for table `PageLog`
--

CREATE TABLE `PageLog` (
  `Datum` datetime DEFAULT NULL,
  `SiteID` int(11) DEFAULT NULL,
  `CountPage` int(11) DEFAULT NULL,
  `CountHomePage` int(11) DEFAULT NULL,
  `CountSession` int(11) DEFAULT NULL,
  UNIQUE KEY `Datum` (`Datum`,`SiteID`),
  KEY `SiteID` (`SiteID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `PodcastDetails`
--

CREATE TABLE `PodcastDetails` (
  `PodcastID` int(11) NOT NULL AUTO_INCREMENT,
  `Naam` varchar(255) DEFAULT NULL,
  `FullPath` mediumtext,
  `DT` date DEFAULT NULL,
  PRIMARY KEY (`PodcastID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `PodcastPlaylist`
--

CREATE TABLE `PodcastPlaylist` (
  `PodcastID` int(11) NOT NULL,
  `SortOrder` int(11) DEFAULT NULL,
  `FullPath` mediumtext,
  PRIMARY KEY (`PodcastID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Polls`
--

CREATE TABLE `Polls` (
  `Pollname` varchar(255) DEFAULT NULL,
  `Klantid` int(11) DEFAULT NULL,
  `Ean` varchar(13) DEFAULT NULL,
  `Datum` datetime DEFAULT NULL,
  KEY `i1` (`Pollname`),
  KEY `i2` (`Klantid`),
  KEY `i3` (`Ean`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `PortoLog`
--

CREATE TABLE `PortoLog` (
  `BestellingId` int(11) DEFAULT NULL,
  `Regel` mediumtext,
  `DTRegel` datetime DEFAULT NULL,
  KEY `BestellingId` (`BestellingId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `ProductPlanning`
--

CREATE TABLE `ProductPlanning` (
  `PlanningType` enum('speciaal-aanbevolen','home-player','home-reserveer','home-e-books','home-evenementen','landing-producten','landing-rubriek','landing-productgroep','landing-producten-banner','landing-productgroep-banner','landing-rubriek-banner','home-banner') NOT NULL,
  `PlanningDatum` date NOT NULL,
  `PlanningIndex` int(11) NOT NULL,
  `Rubriek` char(50) NOT NULL,
  `Productgroep` char(50) NOT NULL,
  `Ean` char(13) NOT NULL,
  `DT` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`PlanningType`,`PlanningDatum`,`PlanningIndex`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Profiel`
--

CREATE TABLE `Profiel` (
  `Klantid` int(11) DEFAULT NULL,
  `Auteurid` int(11) DEFAULT '0',
  `Recensentid` int(11) NOT NULL DEFAULT '0',
  `IsRecensent` tinyint(4) NOT NULL DEFAULT '0',
  `IsBoekcoverAuteur` tinyint(4) NOT NULL DEFAULT '0',
  `Geslacht` varchar(10) NOT NULL,
  `Voornaam` varchar(50) NOT NULL,
  `Initialen` varchar(10) NOT NULL,
  `Achternaam` varchar(50) NOT NULL,
  `ProfielPubliek` tinyint(4) NOT NULL DEFAULT '0',
  `AankopenPubliek` tinyint(4) NOT NULL DEFAULT '0',
  `BibliotheekPubliek` tinyint(4) NOT NULL DEFAULT '0',
  `TwitterNaam` varchar(255) NOT NULL,
  `FacebookURL` varchar(255) NOT NULL,
  `GooglePlusNaam` varchar(255) NOT NULL,
  `LinkedinURL` varchar(255) NOT NULL,
  `RollenTekst` varchar(50) NOT NULL,
  `Omschrijving` mediumtext NOT NULL,
  `URL` varchar(255) NOT NULL,
  `Top1` char(13) DEFAULT NULL,
  `Top2` char(13) DEFAULT NULL,
  `Top3` char(1) DEFAULT NULL,
  KEY `Top1` (`Top1`),
  KEY `Top2` (`Top2`),
  KEY `Top3` (`Top3`),
  KEY `Klantid` (`Klantid`),
  KEY `Auteurid` (`Auteurid`),
  CONSTRAINT `Profiel_ibfk_1` FOREIGN KEY (`Klantid`) REFERENCES `Klanten` (`Klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Promo`
--

CREATE TABLE `Promo` (
  `promoId` int(11) NOT NULL AUTO_INCREMENT,
  `promoTitel` varchar(50) NOT NULL,
  `dtstart` datetime NOT NULL,
  `dteind` datetime NOT NULL,
  `minimaal_aantal` int(2) NOT NULL,
  `gratis_boek` char(13) NOT NULL,
  `tekst_winkelkar` text NOT NULL,
  `halen` int(11) NOT NULL DEFAULT '0',
  `betalen` int(11) NOT NULL DEFAULT '0',
  `actieurl` varchar(75) NOT NULL,
  PRIMARY KEY (`promoId`),
  KEY `dtstart` (`dtstart`),
  KEY `dteind` (`dteind`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Promo_eans`
--

CREATE TABLE `Promo_eans` (
  `ean` char(13) NOT NULL,
  `promoId` int(11) NOT NULL,
  PRIMARY KEY (`ean`,`promoId`),
  KEY `ean` (`ean`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Promotieacties`
--

CREATE TABLE `Promotieacties` (
  `Promoid` int(11) NOT NULL AUTO_INCREMENT,
  `Siteid` int(11) DEFAULT NULL,
  `Bonusean` varchar(13) DEFAULT NULL,
  `Aantalboeken` int(11) DEFAULT NULL,
  `Vink` varchar(200) DEFAULT NULL,
  `Begindatum` date DEFAULT NULL,
  `Einddatum` date DEFAULT NULL,
  `Promotekst` mediumblob,
  PRIMARY KEY (`Promoid`),
  KEY `Siteid` (`Siteid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Prospects`
--

CREATE TABLE `Prospects` (
  `ProspectId` int(11) NOT NULL AUTO_INCREMENT,
  `DT` datetime NOT NULL,
  `KlantId` int(11) NOT NULL,
  `UserAgent` varchar(255) NOT NULL,
  `ClientId` varchar(255) NOT NULL,
  `ProspectHash` varchar(64) NOT NULL,
  PRIMARY KEY (`ProspectId`),
  KEY `ProspectHash` (`ProspectHash`),
  KEY `Klantid` (`KlantId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `RamsjLogging`
--

CREATE TABLE `RamsjLogging` (
  `DT` date NOT NULL,
  `ManRamsjWaarde` decimal(10,2) DEFAULT '0.00',
  `ManRamsjAantal` int(11) DEFAULT '0',
  `ManUitverkWaarde` decimal(10,2) DEFAULT '0.00',
  `ManUitverkAantal` int(11) DEFAULT '0',
  `ManEigenWaarde` decimal(10,2) DEFAULT '0.00',
  `ManEigenAantal` int(11) DEFAULT '0',
  `ComRamsjWaarde` decimal(10,2) DEFAULT '0.00',
  `ComRamsjAantal` int(11) DEFAULT '0',
  `ComUitverkWaarde` decimal(10,2) DEFAULT '0.00',
  `ComUitverkAantal` int(11) DEFAULT '0',
  `TotaalWaarde` decimal(10,2) DEFAULT '0.00',
  `TotaalAantal` int(11) DEFAULT '0',
  PRIMARY KEY (`DT`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `Ranking`
--

CREATE TABLE `Ranking` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Klantid` int(11) NOT NULL DEFAULT '0',
  `Saldo` int(11) DEFAULT NULL,
  `LastOrder` date DEFAULT NULL,
  PRIMARY KEY (`Id`),
  KEY `i1` (`Klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Ranking_Top`
--

CREATE TABLE `Ranking_Top` (
  `Ean` char(13) NOT NULL,
  `1d` int(11) NOT NULL,
  `5d` int(11) NOT NULL,
  `7d` int(11) NOT NULL,
  `30d` int(11) NOT NULL,
  `90d` int(11) NOT NULL,
  PRIMARY KEY (`Ean`),
  KEY `30d` (`30d`),
  KEY `90d` (`90d`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `RecentBekeken`
--

CREATE TABLE `RecentBekeken` (
  `KlantID` int(11) DEFAULT NULL,
  `SessionID` int(11) DEFAULT NULL,
  `EAN` char(13) NOT NULL,
  `DT` datetime NOT NULL,
  `tonen` int(1) NOT NULL DEFAULT '1',
  UNIQUE KEY `SECONDARY` (`SessionID`,`EAN`),
  UNIQUE KEY `TERTIARY` (`KlantID`,`EAN`),
  KEY `DT` (`DT`),
  KEY `EAN` (`EAN`,`DT`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `ReferrerPages`
--

CREATE TABLE `ReferrerPages` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Pagina` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `RegistrerenTracking`
--

CREATE TABLE `RegistrerenTracking` (
  `SessionId` int(10) unsigned NOT NULL,
  `Groep` enum('A','B') NOT NULL,
  `DTGestart` datetime DEFAULT NULL,
  `DTAfgerond` datetime DEFAULT NULL,
  `Klantid` int(11) DEFAULT NULL,
  `UserAgent` varchar(255) NOT NULL,
  PRIMARY KEY (`SessionId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `SapOrdersXml`
--

CREATE TABLE `SapOrdersXml` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `dt` datetime DEFAULT NULL,
  `xml` text,
  `status` char(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `SavedCarts`
--

CREATE TABLE `SavedCarts` (
  `Klantid` int(11) DEFAULT NULL,
  `Aantal` int(11) DEFAULT NULL,
  `DT` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `Herinnering` tinyint(4) DEFAULT '0',
  `Ean` varchar(13) DEFAULT NULL,
  KEY `Klantid` (`Klantid`),
  KEY `DT` (`DT`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `SessionAdwordsData`
--

CREATE TABLE `SessionAdwordsData` (
  `SessionId` int(11) NOT NULL,
  `URI` varchar(255) DEFAULT NULL,
  `UTMSource` varchar(255) DEFAULT NULL,
  `UTMMedium` varchar(255) DEFAULT NULL,
  `UTMTerm` varchar(255) DEFAULT NULL,
  `DT` datetime DEFAULT NULL,
  `KeywordId` bigint(20) DEFAULT NULL,
  KEY `NewIndex1` (`SessionId`),
  KEY `NewIndex2` (`DT`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `SessionDetails`
--

CREATE TABLE `SessionDetails` (
  `SessionId` int(11) NOT NULL,
  `DT` datetime DEFAULT NULL,
  `Action` enum('checkout','intzoek','order','page','view') NOT NULL,
  `Ean` varchar(13) DEFAULT NULL,
  `URI` mediumtext,
  `Query` mediumtext,
  `Aantal` int(11) DEFAULT NULL,
  KEY `DT` (`DT`),
  KEY `EanAction` (`Ean`,`Action`,`DT`),
  KEY `NewIndex1` (`Action`,`Query`(10)),
  KEY `NewIndex2` (`SessionId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `SessionGclid`
--

CREATE TABLE `SessionGclid` (
  `SessionId` int(11) NOT NULL,
  `Gclid` varchar(255) DEFAULT NULL,
  `Term` varchar(255) DEFAULT NULL,
  KEY `SessionId` (`SessionId`),
  KEY `Gclid` (`Gclid`),
  KEY `Term` (`Term`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `SessionLog`
--

CREATE TABLE `SessionLog` (
  `SessionId` int(11) NOT NULL AUTO_INCREMENT,
  `SessionKey` char(32) DEFAULT NULL,
  `IPAdres` char(16) DEFAULT NULL,
  `Klantid` int(11) DEFAULT NULL,
  `Referer` mediumtext,
  `OrganicTerm` mediumtext,
  `DT` datetime DEFAULT NULL,
  PRIMARY KEY (`SessionId`),
  KEY `IPAdres` (`IPAdres`),
  KEY `NewIndex1` (`DT`),
  KEY `NewIndex2` (`SessionKey`),
  KEY `Klantid` (`Klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `SessionLog_copy`
--

CREATE TABLE `SessionLog_copy` (
  `SessionId` int(11) NOT NULL AUTO_INCREMENT,
  `SessionKey` char(32) CHARACTER SET ascii COLLATE ascii_bin DEFAULT NULL,
  `IPAdres` char(16) CHARACTER SET ascii DEFAULT NULL,
  `Klantid` int(11) DEFAULT NULL,
  `Referer` mediumtext CHARACTER SET utf8,
  `OrganicTerm` mediumtext CHARACTER SET utf8,
  `DT` datetime DEFAULT NULL,
  PRIMARY KEY (`SessionId`),
  KEY `IPAdres` (`IPAdres`),
  KEY `NewIndex1` (`DT`),
  KEY `NewIndex2` (`SessionKey`),
  KEY `Klantid` (`Klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Tellingen`
--

CREATE TABLE `Tellingen` (
  `Ean` char(13) NOT NULL,
  `TellingtypeId` smallint(6) NOT NULL DEFAULT '0',
  `Aantal` smallint(6) NOT NULL DEFAULT '0',
  PRIMARY KEY (`Ean`,`TellingtypeId`),
  KEY `i2` (`TellingtypeId`),
  KEY `i4` (`Aantal`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Tellingen_Plat`
--

CREATE TABLE `Tellingen_Plat` (
  `Ean` char(13) NOT NULL,
  `Auteur1` int(11) NOT NULL DEFAULT '0',
  `Auteur2` int(11) NOT NULL DEFAULT '0',
  `Auteur3` int(11) NOT NULL DEFAULT '0',
  `Titel` char(255) NOT NULL,
  `Aanmaakdatum` date NOT NULL,
  `1d` int(10) NOT NULL DEFAULT '0',
  `5d` int(10) NOT NULL DEFAULT '0',
  `7d` int(10) NOT NULL DEFAULT '0',
  `10d` int(10) NOT NULL DEFAULT '0',
  `14d` int(10) NOT NULL DEFAULT '0',
  `30d` int(10) NOT NULL DEFAULT '0',
  `60d` int(10) NOT NULL DEFAULT '0',
  `90d` int(10) NOT NULL DEFAULT '0',
  `week` int(10) NOT NULL DEFAULT '0',
  `lastweek` int(10) NOT NULL DEFAULT '0',
  `month` int(10) NOT NULL DEFAULT '0',
  `lastmonth` int(10) NOT NULL DEFAULT '0',
  `year` int(10) NOT NULL DEFAULT '0',
  `lastyear` int(10) NOT NULL DEFAULT '0',
  `beforelastweek` int(10) NOT NULL DEFAULT '0',
  `ever` int(10) NOT NULL DEFAULT '0',
  PRIMARY KEY (`Ean`),
  KEY `Auteur1` (`Auteur1`),
  KEY `Auteur2` (`Auteur2`),
  KEY `Auteur3` (`Auteur3`),
  KEY `Titel` (`Titel`),
  KEY `Aanmaakdatum` (`Aanmaakdatum`),
  KEY `1d` (`1d`),
  KEY `5d` (`5d`),
  KEY `7d` (`7d`),
  KEY `10d` (`10d`),
  KEY `14d` (`14d`),
  KEY `30d` (`30d`),
  KEY `60d` (`60d`),
  KEY `90d` (`90d`),
  KEY `week` (`week`),
  KEY `lastweek` (`lastweek`),
  KEY `month` (`month`),
  KEY `lastmonth` (`lastmonth`),
  KEY `year` (`year`),
  KEY `lastyear` (`lastyear`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Tellingen_Plat_copy`
--

CREATE TABLE `Tellingen_Plat_copy` (
  `Ean` varchar(13) NOT NULL,
  `Auteur1` int(11) NOT NULL DEFAULT '0',
  `Auteur2` int(11) NOT NULL DEFAULT '0',
  `Auteur3` int(11) NOT NULL DEFAULT '0',
  `Titel` varchar(255) NOT NULL,
  `Aanmaakdatum` date NOT NULL,
  `1d` int(10) unsigned NOT NULL DEFAULT '0',
  `5d` int(10) unsigned NOT NULL DEFAULT '0',
  `7d` int(10) unsigned NOT NULL DEFAULT '0',
  `10d` int(10) unsigned NOT NULL DEFAULT '0',
  `14d` int(10) unsigned NOT NULL DEFAULT '0',
  `30d` int(10) unsigned NOT NULL DEFAULT '0',
  `60d` int(10) unsigned NOT NULL DEFAULT '0',
  `90d` int(10) unsigned NOT NULL DEFAULT '0',
  `week` int(10) unsigned NOT NULL DEFAULT '0',
  `lastweek` int(10) unsigned NOT NULL DEFAULT '0',
  `month` int(10) unsigned NOT NULL DEFAULT '0',
  `lastmonth` int(10) unsigned NOT NULL DEFAULT '0',
  `year` int(10) unsigned NOT NULL DEFAULT '0',
  `lastyear` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`Ean`),
  KEY `Auteur1` (`Auteur1`),
  KEY `Auteur2` (`Auteur2`),
  KEY `Auteur3` (`Auteur3`),
  KEY `Titel` (`Titel`),
  KEY `Aanmaakdatum` (`Aanmaakdatum`),
  KEY `1d` (`1d`),
  KEY `5d` (`5d`),
  KEY `7d` (`7d`),
  KEY `10d` (`10d`),
  KEY `14d` (`14d`),
  KEY `30d` (`30d`),
  KEY `60d` (`60d`),
  KEY `90d` (`90d`),
  KEY `week` (`week`),
  KEY `lastweek` (`lastweek`),
  KEY `month` (`month`),
  KEY `lastmonth` (`lastmonth`),
  KEY `year` (`year`),
  KEY `lastyear` (`lastyear`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Tellingen_Top`
--

CREATE TABLE `Tellingen_Top` (
  `Ean` char(13) NOT NULL,
  `1d` int(11) NOT NULL,
  `5d` int(11) NOT NULL,
  `7d` int(11) NOT NULL,
  `30d` int(11) NOT NULL,
  `90d` int(11) NOT NULL,
  PRIMARY KEY (`Ean`),
  KEY `NewIndex1` (`30d`),
  KEY `NewIndex2` (`90d`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Tellingtypen`
--

CREATE TABLE `Tellingtypen` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Omschrijving` varchar(150) DEFAULT NULL,
  `Startdt` varchar(255) DEFAULT NULL,
  `Einddt` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`Id`),
  KEY `i1` (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `TestKlanten`
--

CREATE TABLE `TestKlanten` (
  `Klantid` int(11) NOT NULL,
  PRIMARY KEY (`Klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `TmpBesteld`
--

CREATE TABLE `TmpBesteld` (
  `Ean` char(13) NOT NULL,
  PRIMARY KEY (`Ean`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `TmpRanking`
--

CREATE TABLE `TmpRanking` (
  `Klantid` int(11) NOT NULL DEFAULT '0',
  `Saldo` double DEFAULT NULL,
  `LastOrder` date DEFAULT NULL,
  PRIMARY KEY (`Klantid`),
  KEY `i1` (`Saldo`,`LastOrder`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Tracktrace`
--

CREATE TABLE `Tracktrace` (
  `FactuurID` int(11) DEFAULT NULL,
  `Trackingcode` char(15) NOT NULL,
  `Zip` char(6) DEFAULT NULL,
  `Trackstatus` char(3) DEFAULT NULL,
  `CreateDT` datetime DEFAULT NULL,
  PRIMARY KEY (`Trackingcode`),
  KEY `NewIndex1` (`FactuurID`),
  CONSTRAINT `FK_Tracktrace` FOREIGN KEY (`FactuurID`) REFERENCES `Facturen` (`FactuurID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Trefwoorden`
--

CREATE TABLE `Trefwoorden` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Trefwoord` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`Id`),
  KEY `Trefwoord` (`Trefwoord`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `UitgeverProfiel`
--

CREATE TABLE `UitgeverProfiel` (
  `uitgeverid` int(11) NOT NULL,
  `displaynaam` varchar(100) NOT NULL DEFAULT '',
  `video` varchar(100) NOT NULL DEFAULT '',
  `stapel_url` varchar(100) NOT NULL DEFAULT '',
  `tekst_lang` text,
  `tekst_kort` text,
  PRIMARY KEY (`uitgeverid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `UitgeverTopboeken`
--

CREATE TABLE `UitgeverTopboeken` (
  `uitgeverid` int(11) NOT NULL,
  `volgorde` int(11) unsigned NOT NULL,
  `ean` char(13) CHARACTER SET latin1 NOT NULL,
  PRIMARY KEY (`uitgeverid`,`volgorde`),
  UNIQUE KEY `Topboeken_uniek_ean` (`uitgeverid`,`ean`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `VBMIHAfwijkend`
--

CREATE TABLE `VBMIHAfwijkend` (
  `DT` date NOT NULL,
  `Voor` varchar(255) DEFAULT NULL,
  `Na` varchar(255) DEFAULT NULL,
  `Feestdag` tinyint(4) DEFAULT '0',
  PRIMARY KEY (`DT`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `VBMIHConfig`
--

CREATE TABLE `VBMIHConfig` (
  `Key` char(20) NOT NULL,
  `Val` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`Key`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `VKBanenKlanten`
--

CREATE TABLE `VKBanenKlanten` (
  `Klantid` int(11) NOT NULL,
  `VKBanenOptIn` tinyint(4) NOT NULL,
  `VKBanenOptInDT` datetime NOT NULL,
  PRIMARY KEY (`Klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Verlanglijst`
--

CREATE TABLE `Verlanglijst` (
  `Klantid` int(11) NOT NULL,
  `Ean` char(13) NOT NULL,
  `DT` datetime DEFAULT NULL,
  `Prospectid` int(11) DEFAULT NULL,
  PRIMARY KEY (`Klantid`,`Ean`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `ViewLog`
--

CREATE TABLE `ViewLog` (
  `mpt` int(11) NOT NULL,
  `klantid` int(11) DEFAULT NULL,
  `ean` char(13) NOT NULL,
  `DT` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  KEY `mpt` (`mpt`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `ViewLogRatio`
--

CREATE TABLE `ViewLogRatio` (
  `Tellingtype` int(1) NOT NULL DEFAULT '0',
  `Ean` char(13) NOT NULL,
  `HP_ext_view` decimal(30,0) NOT NULL,
  `HP_ext_info` decimal(30,0) NOT NULL,
  `HP_ext_buy` decimal(30,0) NOT NULL,
  `HP_int_view` decimal(30,0) NOT NULL,
  `HP_int_info` decimal(30,0) NOT NULL,
  `HP_int_buy` decimal(30,0) NOT NULL,
  `NHP_ext_view` decimal(30,0) NOT NULL,
  `NHP_ext_info` decimal(30,0) NOT NULL,
  `NHP_ext_buy` decimal(30,0) NOT NULL,
  `NHP_int_view` decimal(30,0) NOT NULL,
  `NHP_int_info` decimal(30,0) NOT NULL,
  `NHP_int_buy` decimal(30,0) NOT NULL,
  `BI_ext_view` decimal(30,0) NOT NULL,
  `BI_ext_buy` decimal(30,0) NOT NULL,
  `BI_int_view` decimal(30,0) NOT NULL,
  `BI_int_buy` decimal(30,0) NOT NULL,
  `HP_view` decimal(31,0) NOT NULL,
  `HP_info` decimal(31,0) NOT NULL,
  `HP_buy` decimal(31,0) NOT NULL,
  `NHP_view` decimal(31,0) NOT NULL,
  `NHP_info` decimal(31,0) NOT NULL,
  `NHP_buy` decimal(31,0) NOT NULL,
  `BI_view` decimal(31,0) NOT NULL,
  `BI_buy` decimal(31,0) NOT NULL,
  `HP_ext_info_ratio` decimal(34,4) NOT NULL,
  `HP_ext_buy_ratio` decimal(34,4) NOT NULL,
  `HP_int_info_ratio` decimal(34,4) NOT NULL,
  `HP_int_buy_ratio` decimal(34,4) NOT NULL,
  `HP_info_ratio` decimal(35,4) NOT NULL,
  `HP_buy_ratio` decimal(35,4) NOT NULL,
  `NHP_ext_info_ratio` decimal(34,4) NOT NULL,
  `NHP_ext_buy_ratio` decimal(34,4) NOT NULL,
  `NHP_int_info_ratio` decimal(34,4) NOT NULL,
  `NHP_int_buy_ratio` decimal(34,4) NOT NULL,
  `NHP_info_ratio` decimal(35,4) NOT NULL,
  `NHP_buy_ratio` decimal(35,4) NOT NULL,
  `BI_int_buy_ratio` decimal(34,4) NOT NULL,
  `BI_ext_buy_ratio` decimal(34,4) NOT NULL,
  `BI_buy_ratio` decimal(35,4) NOT NULL,
  PRIMARY KEY (`Tellingtype`,`Ean`),
  KEY `HP_info` (`HP_info`),
  KEY `HP_view` (`HP_view`),
  KEY `Tellingtype2` (`Tellingtype`,`HP_view`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `VogooAvg`
--

CREATE TABLE `VogooAvg` (
  `Ean` char(13) NOT NULL,
  `Stemmen` int(11) unsigned NOT NULL DEFAULT '0',
  `Gemiddeld` float NOT NULL DEFAULT '0',
  `Stemmen_rank` int(6) unsigned NOT NULL DEFAULT '0',
  `Gemiddeld_rank` int(6) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`Ean`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `VogooStemmen`
--

CREATE TABLE `VogooStemmen` (
  `Ean` char(13) NOT NULL,
  `Gemiddeld` decimal(4,2) DEFAULT NULL,
  `Waardering` decimal(4,1) DEFAULT NULL,
  `Ranking` int(11) DEFAULT NULL,
  `Aantal` int(11) DEFAULT NULL,
  PRIMARY KEY (`Ean`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `Voorraadmutaties`
--

CREATE TABLE `Voorraadmutaties` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Ean` varchar(13) DEFAULT NULL,
  `Mutatie` int(11) DEFAULT NULL,
  `DT` datetime DEFAULT NULL,
  `Orderregelid` int(11) DEFAULT NULL,
  `Type` enum('ingepakt','ingeklaard','gecorrigeerd') DEFAULT NULL,
  `Voorraad` int(11) DEFAULT NULL,
  `Gebruiker` char(5) DEFAULT NULL,
  `PlankVoorraad` int(11) DEFAULT NULL,
  `GereserveerdeVoorraad` int(11) DEFAULT NULL,
  `VoorraadOud` int(11) DEFAULT NULL,
  `BeschikbareVoorraad` int(11) DEFAULT NULL,
  `Bestellingid` int(11) DEFAULT NULL,
  PRIMARY KEY (`Id`),
  KEY `ean` (`Ean`),
  KEY `orderregelid` (`Orderregelid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`pieter`@`%`*/ /*!50003 TRIGGER `before_insert_voorraadmutaties` BEFORE INSERT ON `Voorraadmutaties` 
    FOR EACH ROW BEGIN
	
    END */;;
DELIMITER ;

--
-- Table structure for table `Voorraadreserveringen`
--

CREATE TABLE `Voorraadreserveringen` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Ean` varchar(13) DEFAULT NULL,
  `Mutatie` int(11) DEFAULT NULL,
  `DT` datetime DEFAULT NULL,
  `Orderregelid` int(11) DEFAULT NULL,
  `Gebruiker` char(5) DEFAULT NULL,
  `Voorraad` int(11) DEFAULT NULL,
  `Debug` varchar(255) DEFAULT NULL,
  `Klantid` int(11) DEFAULT NULL,
  `Type` enum('besteld','geannuleerd','gecorrigeerd','ingepakt','uit backorder','toegevoegd','gecrediteerd','verwijderd') DEFAULT NULL,
  `Bestellingid` int(11) DEFAULT NULL,
  `VoorraadOud` int(11) DEFAULT NULL,
  `FysiekeVoorraad` int(11) DEFAULT NULL,
  `BeschikbareVoorraad` int(11) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`pieter`@`%`*/ /*!50003 TRIGGER `before_insert_voorraadreserveringen` BEFORE INSERT ON `Voorraadreserveringen` 
    FOR EACH ROW BEGIN
	
    END */;;
DELIMITER ;

--
-- Table structure for table `Voucher2`
--

CREATE TABLE `Voucher2` (
  `VoucherCode` varchar(30) NOT NULL,
  `Gebruikt` int(11) NOT NULL,
  `VoucherType` int(11) NOT NULL,
  `VerstrektAan` int(11) DEFAULT NULL,
  `VerstrektKorting` decimal(6,2) NOT NULL,
  `DTAanmaak` timestamp NULL DEFAULT NULL,
  `DTVanaf` date NOT NULL DEFAULT '2010-01-01',
  `DTVerval` date NOT NULL DEFAULT '2020-01-01',
  `Gefactureerd` tinyint(4) NOT NULL DEFAULT '0',
  `VerzamelBestellingId` int(10) unsigned DEFAULT NULL,
  `Referentie` varchar(100) NOT NULL,
  PRIMARY KEY (`VoucherCode`),
  KEY `NewIndex1` (`VoucherType`),
  KEY `VerstrektAan` (`VerstrektAan`),
  CONSTRAINT `FK_Voucher2` FOREIGN KEY (`VoucherType`) REFERENCES `Voucher2Types` (`VoucherType`),
  CONSTRAINT `Voucher2_ibfk_1` FOREIGN KEY (`VerstrektAan`) REFERENCES `Klanten` (`Klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Voucher2Bestelregels`
--

CREATE TABLE `Voucher2Bestelregels` (
  `VoucherCode` varchar(40) NOT NULL,
  `Id` int(11) NOT NULL,
  PRIMARY KEY (`VoucherCode`,`Id`),
  KEY `FK_Voucher2Bestelregels` (`Id`),
  CONSTRAINT `FK_Voucher2Bestelregels` FOREIGN KEY (`Id`) REFERENCES `Bestellingen` (`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `FK_Voucher2Bestelregels3` FOREIGN KEY (`VoucherCode`) REFERENCES `Voucher2` (`VoucherCode`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Voucher2TypeEans`
--

CREATE TABLE `Voucher2TypeEans` (
  `VoucherType` int(11) NOT NULL,
  `Ean` char(13) NOT NULL,
  `OptioneelProduct` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`VoucherType`,`Ean`),
  CONSTRAINT `FK_Voucher2TypeEans` FOREIGN KEY (`VoucherType`) REFERENCES `Voucher2Types` (`VoucherType`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Voucher2Types`
--

CREATE TABLE `Voucher2Types` (
  `VoucherType` int(11) NOT NULL AUTO_INCREMENT,
  `VoucherNaam` varchar(255) NOT NULL,
  `BeginDatum` date NOT NULL,
  `VervalDatum` date NOT NULL,
  `AantalOptioneleProducten` int(11) NOT NULL,
  `CustomURL` varchar(100) DEFAULT NULL,
  `CustomHTML` mediumtext,
  `VerstrektAan` int(10) unsigned DEFAULT NULL COMMENT 'De klant aan wie de voucher gefactureerd word',
  `VoorafFactureren` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`VoucherType`),
  KEY `CustomURL` (`CustomURL`),
  KEY `VerstrektAan` (`VerstrektAan`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `VoucherTypeEans`
--

CREATE TABLE `VoucherTypeEans` (
  `VoucherType` int(11) NOT NULL,
  `Ean` char(13) NOT NULL,
  PRIMARY KEY (`VoucherType`,`Ean`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `VoucherTypes`
--

CREATE TABLE `VoucherTypes` (
  `VoucherType` int(11) NOT NULL AUTO_INCREMENT,
  `Omschrijving` varchar(255) NOT NULL,
  PRIMARY KEY (`VoucherType`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Vouchers`
--

CREATE TABLE `Vouchers` (
  `VoucherCode` char(8) NOT NULL,
  `VoucherType` int(11) NOT NULL,
  `VervalDatum` date NOT NULL DEFAULT '2011-01-01',
  `GebruiktInBestellingRegel` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`VoucherCode`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `WelkomstActieCSV`
--

CREATE TABLE `WelkomstActieCSV` (
  `ActieId` int(11) DEFAULT NULL,
  `DT` datetime DEFAULT NULL,
  `Filename` varchar(255) DEFAULT NULL,
  `CSV` longtext,
  KEY `DT` (`DT`,`Filename`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `WelkomstActieKlanten`
--

CREATE TABLE `WelkomstActieKlanten` (
  `Klantid` int(11) NOT NULL,
  `Actieid` int(11) NOT NULL,
  `DT` datetime DEFAULT NULL,
  PRIMARY KEY (`Klantid`,`Actieid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `WelkomstActieKlanten_backup_1502`
--

CREATE TABLE `WelkomstActieKlanten_backup_1502` (
  `Klantid` int(11) NOT NULL,
  `Actieid` int(11) NOT NULL,
  `DT` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `WelkomstActies`
--

CREATE TABLE `WelkomstActies` (
  `Actieid` int(11) NOT NULL AUTO_INCREMENT,
  `Actienaam` varchar(255) DEFAULT NULL,
  `SQLQuery` mediumtext,
  PRIMARY KEY (`Actieid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `WelkomstGroepen`
--

CREATE TABLE `WelkomstGroepen` (
  `Welkomstgroepid` int(11) NOT NULL,
  `Naam` varchar(255) NOT NULL,
  `SQLQuery` text NOT NULL,
  PRIMARY KEY (`Welkomstgroepid`,`Naam`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `WelkomstKlanten`
--

CREATE TABLE `WelkomstKlanten` (
  `Klantid` int(11) NOT NULL,
  `Welkomstgroepid` int(11) NOT NULL,
  PRIMARY KEY (`Klantid`,`Welkomstgroepid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `YearRanking`
--

CREATE TABLE `YearRanking` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Klantid` int(11) NOT NULL DEFAULT '0',
  `Saldo` int(11) DEFAULT NULL,
  `LastOrder` date DEFAULT NULL,
  PRIMARY KEY (`Id`),
  KEY `i1` (`Klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `ZoekLog`
--

CREATE TABLE `ZoekLog` (
  `DT` datetime DEFAULT NULL,
  `Query` varchar(255) DEFAULT NULL,
  `Results` int(11) DEFAULT NULL,
  `URI` mediumtext,
  KEY `DT` (`DT`),
  KEY `Results` (`Results`),
  KEY `Query` (`Query`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `ZoekSuggesties`
--

CREATE TABLE `ZoekSuggesties` (
  `Query` varchar(200) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `Resultaten` int(11) NOT NULL,
  `Gebruik` int(11) NOT NULL,
  PRIMARY KEY (`Query`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `ZoekTerms`
--

CREATE TABLE `ZoekTerms` (
  `Query` varchar(30) NOT NULL,
  `Results` int(11) DEFAULT NULL,
  `Len` int(11) DEFAULT NULL,
  PRIMARY KEY (`Query`),
  KEY `Results` (`Results`),
  KEY `Len` (`Len`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `Zoektermen`
--

CREATE TABLE `Zoektermen` (
  `Zoektermid` int(11) NOT NULL AUTO_INCREMENT,
  `Zoekterm` varchar(50) NOT NULL,
  PRIMARY KEY (`Zoektermid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `_ZoekwoordLog`
--

CREATE TABLE `_ZoekwoordLog` (
  `DT` datetime DEFAULT NULL,
  `Query` varchar(255) DEFAULT NULL,
  `URI` varchar(255) DEFAULT NULL,
  `Ean` char(13) DEFAULT NULL,
  `IP` varchar(16) DEFAULT NULL,
  KEY `DT2` (`DT`),
  KEY `Ean` (`Ean`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `abo_artikelen`
--

CREATE TABLE `abo_artikelen` (
  `naam` varchar(255) DEFAULT NULL,
  `artikelcode` char(15) NOT NULL,
  `verlengingsartikel` char(15) DEFAULT NULL,
  `kenmerken_uitsluiten` varchar(255) DEFAULT NULL,
  `mailcodes_uitsluiten` varchar(255) DEFAULT NULL,
  `laatst_gefactureerd` datetime DEFAULT NULL,
  `kenmerk_bij_opzeggen` char(20) DEFAULT NULL,
  `kenmerk_bij_direct_opzeggen` char(20) DEFAULT NULL,
  `verlengen_na` int(11) DEFAULT NULL,
  PRIMARY KEY (`artikelcode`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `abo_data`
--

CREATE TABLE `abo_data` (
  `exactid` int(11) DEFAULT NULL,
  `artikelcode` char(13) DEFAULT NULL,
  `aantal` int(11) DEFAULT NULL,
  `orig_datum` date DEFAULT NULL,
  `verlengingsdatum` date DEFAULT NULL,
  `opgezegd_per` date DEFAULT NULL,
  `opzegreden` text,
  `factuurnr` int(11) DEFAULT NULL,
  `is_actief` tinyint(4) DEFAULT NULL,
  `versturen_aan_derden` tinyint(4) DEFAULT '0',
  KEY `exactid` (`exactid`),
  KEY `NewIndex1` (`artikelcode`,`verlengingsdatum`),
  KEY `artikelcode` (`artikelcode`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `abo_factuurhistorie`
--

CREATE TABLE `abo_factuurhistorie` (
  `exactid` int(11) DEFAULT NULL,
  `factuurnr` int(11) NOT NULL,
  `dt` datetime DEFAULT NULL,
  `artikelcode` char(15) DEFAULT NULL,
  `aantal` int(11) DEFAULT NULL,
  `prijs` decimal(6,2) DEFAULT NULL,
  KEY `exactid` (`exactid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `lego_blok`
--

CREATE TABLE `lego_blok` (
  `lego_id` int(13) unsigned NOT NULL AUTO_INCREMENT,
  `naam` varchar(128) NOT NULL,
  `titel` varchar(128) NOT NULL,
  `template` varchar(128) NOT NULL,
  `min_items` int(13) unsigned NOT NULL DEFAULT '4',
  `max_items` int(13) unsigned NOT NULL DEFAULT '8',
  `nom_items` int(13) unsigned NOT NULL DEFAULT '5',
  `ttl` int(13) unsigned NOT NULL DEFAULT '0',
  `misc_parameters` text NOT NULL,
  PRIMARY KEY (`lego_id`),
  UNIQUE KEY `unieke_namen` (`naam`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `lego_blok_filters`
--

CREATE TABLE `lego_blok_filters` (
  `lego_id` int(13) unsigned NOT NULL,
  `filter` enum('producttype','rubriek') NOT NULL DEFAULT 'rubriek',
  PRIMARY KEY (`lego_id`,`filter`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `lego_fallback`
--

CREATE TABLE `lego_fallback` (
  `lego_id` int(13) unsigned NOT NULL,
  `volgorde` int(13) NOT NULL DEFAULT '0',
  `opslaan` tinyint(1) NOT NULL DEFAULT '0',
  `type` char(128) NOT NULL DEFAULT 'dontshow',
  `data` text,
  PRIMARY KEY (`lego_id`,`volgorde`),
  CONSTRAINT `FK_lego_fallback` FOREIGN KEY (`lego_id`) REFERENCES `lego_blok` (`lego_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `lego_item`
--

CREATE TABLE `lego_item` (
  `lego_id` int(13) unsigned NOT NULL,
  `datum` date NOT NULL,
  `index` int(13) unsigned NOT NULL,
  `type` enum('ean','image','auteur','spreker','html','boekblog','video','null') NOT NULL DEFAULT 'null',
  `fallback` tinyint(2) NOT NULL DEFAULT '3',
  `data` text NOT NULL,
  PRIMARY KEY (`lego_id`,`datum`,`index`),
  CONSTRAINT `FK_lego_item` FOREIGN KEY (`lego_id`) REFERENCES `lego_blok` (`lego_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `lego_item_tags`
--

CREATE TABLE `lego_item_tags` (
  `id` int(13) unsigned NOT NULL AUTO_INCREMENT,
  `lego_id` int(13) unsigned NOT NULL DEFAULT '0',
  `datum` date NOT NULL DEFAULT '0000-00-00',
  `index` int(13) unsigned NOT NULL DEFAULT '0',
  `key` varchar(35) NOT NULL,
  `value` varchar(64) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `tagindex` (`id`),
  UNIQUE KEY `NewIndex1` (`datum`,`lego_id`,`index`,`key`),
  KEY `FK_lego_item_tags` (`lego_id`,`datum`,`index`),
  CONSTRAINT `FK_lego_item_tags` FOREIGN KEY (`lego_id`, `datum`, `index`) REFERENCES `lego_item` (`lego_id`, `datum`, `index`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `sale_recommendation`
--

CREATE TABLE `sale_recommendation` (
  `product1` int(5) unsigned NOT NULL,
  `product2` int(5) unsigned NOT NULL,
  `overlap` smallint(5) unsigned NOT NULL,
  PRIMARY KEY (`product1`,`product2`),
  KEY `overlap` (`overlap`),
  KEY `product2` (`product2`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `sale_recommendation_eans`
--

CREATE TABLE `sale_recommendation_eans` (
  `Ean` char(13) NOT NULL DEFAULT '0',
  `RecommendedEan` char(13) NOT NULL DEFAULT '0',
  `Percentage` double DEFAULT NULL,
  `Positie` int(11) DEFAULT NULL,
  PRIMARY KEY (`Ean`,`RecommendedEan`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Temporary table structure for view `uit_backorder_regels`
--

/*!50001 DROP VIEW IF EXISTS `uit_backorder_regels`*/;
/*!50001 CREATE TABLE `uit_backorder_regels` (
  `BackorderOrigineel` tinyint NOT NULL,
  `Geleverd` tinyint NOT NULL
) ENGINE=MyISAM */;

--
-- Table structure for table `wachtwoord-backup`
--

CREATE TABLE `wachtwoord-backup` (
  `klantid` int(11) NOT NULL,
  `wachtwoord` varchar(255) DEFAULT NULL,
  `emailadres` varchar(255) DEFAULT NULL,
  `datuminvoer` datetime DEFAULT NULL,
  `initialen` char(5) DEFAULT NULL,
  PRIMARY KEY (`klantid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping routines for database 'Test_Klanten'
--
/*!50003 DROP FUNCTION IF EXISTS `aantal_geparkeerde_orderregels` */;
DELIMITER ;;
CREATE DEFINER=`pieter`@`%` FUNCTION `aantal_geparkeerde_orderregels`(myEan CHAR(13) CHARACTER SET latin1) RETURNS int(11)
    READS SQL DATA
BEGIN
		DECLARE aantal INT(11);
		
		SELECT COUNT(*) INTO aantal FROM open_orderregels WHERE Ean = myEan;
				
		return aantal;
	END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `aantal_stemmen` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `aantal_stemmen`( iEAN char(13) CHARACTER SET latin1 ) RETURNS int(11)
    READS SQL DATA
BEGIN
	DECLARE RV INT;
	
	SELECT SUM( Stemmen ) INTO RV
	FROM VogooAvg VA
		JOIN (
			SELECT V.Vervangtean AS Ean FROM Managementboek_Boeken.Boekanderebindwijzen A JOIN Managementboek_Boeken.Boekvervangtean V ON ( V.Ean = A.Eangekoppeld ) WHERE A.Ean = iEAN
			UNION
			SELECT V.Vervangtean AS Ean FROM Managementboek_Boeken.Boekvervangtean V WHERE V.Ean = iEAN
		) A USING ( Ean );
	RETURN IFNULL(RV,0);
	END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `alle_backorders_uitvoerbaar` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `alle_backorders_uitvoerbaar`( myId INT ) RETURNS int(11)
    READS SQL DATA
BEGIN
	DECLARE VerstuurCompleteOrder, RV INT;
	DECLARE aantalRegelsWaaropWeWachten, aantalBackorders INT;
	
	SET RV = 0;
	
	SELECT VerstuurCompleteOrder INTO VerstuurCompleteOrder FROM BestellingAll WHERE BestellingId = myId;
	
	SELECT COUNT(*) INTO aantalBackorders FROM Bestellingen WHERE AantalBackorder > 0 AND Geannuleerd = 0;
	
	IF VerstuurCompleteOrder = 1 THEN
		SELECT COUNT(*) INTO aantalRegelsWaaropWeWachten FROM Bestellingen WHERE BestellingId = myId AND orderregel_op_wachten( Id )=1 AND AantalBackorder>0;
		
		IF aantalRegelsWaaropWeWachten = 0 THEN
			SET RV = 1;
		END IF;
	ELSE
		-- Niet wachten op hele order, dus... uitvoerbaar.
		SET RV = 1;
	END IF;
	RETURN RV;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `alle_backorders_uitvoerbaar_backorderregels` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `alle_backorders_uitvoerbaar_backorderregels`( myId INT ) RETURNS int(11)
    READS SQL DATA
BEGIN
	DECLARE VerstuurCompleteOrder, RV INT;
	DECLARE aantalRegelsWaaropWeWachten, aantalBackorders INT;
	
	SET RV = 0;
	
	SELECT VerstuurCompleteOrder INTO VerstuurCompleteOrder FROM BestellingAll WHERE BestellingId = myId;
	
	SELECT COUNT(*) INTO aantalBackorders FROM tmp.BackorderRegels WHERE BestellingId = myId;
	
	IF VerstuurCompleteOrder = 1 THEN
		SELECT COUNT(*) INTO aantalRegelsWaaropWeWachten FROM tmp.BackorderRegels WHERE BestellingId = myId AND Wacht = 1 AND AantalBackorder>0 AND BeschikbareVoorraad > 0;
		
		IF aantalRegelsWaaropWeWachten = 0 THEN
			SET RV = 1;
		END IF;
	ELSE
		-- Niet wachten op hele order, dus... uitvoerbaar.
		SET RV = 1;
	END IF;
	RETURN RV;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `backorder_afgesloten` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `backorder_afgesloten`(OrigineelID INT) RETURNS int(11)
    READS SQL DATA
BEGIN
    DECLARE RV INT ;
    SELECT 
        IF(
            SUM(IF(Afgesloten, NietGeleverd, 1)) > 0,
            0,
            1
        ) AS Geleverd INTO RV 
    FROM
        (SELECT 
            BNO.BestellingId AS BNOID,
            BNO.AantalBackorder != IFNULL(SUM(BNGEL.Aantal), 0) AS NietGeleverd,
            IF(
                BNO.AantalBackorder = 0,
                1,
                IFNULL(BNGELS.StatusId, 0)
            ) != 0 AS Afgesloten 
        FROM
            Bestellingen BNO 
            LEFT JOIN Bestellingen BNGEL 
                ON (
                    BNGEL.BackorderOrigineel = BNO.Id
                ) 
            LEFT JOIN BestellingStatus BNGELS 
                ON (
                    BNGELS.StatusId = 33 
                    AND BNGEL.BestellingId = BNGELS.BestellingId
                ) 
            LEFT JOIN BestellingAll BGEL 
                ON (
                    BGEL.BestellingId = BNGEL.Bestellingid
                ) 
        WHERE BNO.BestellingId = OrigineelID 
            AND BNO.Ean NOT IN ('BONG', 'PORTO', 'IDEAL') 
            AND BGEL.IsCredit = 0 AND BGEL.Geannuleerd = 0
        GROUP BY BNO.Id) A 
    GROUP BY BNOId ;
    RETURN RV ;
END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `BestellingStatus` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `BestellingStatus`( Id INT ) RETURNS varchar(255) CHARSET latin1
    READS SQL DATA
BEGIN
	DECLARE	 RV varchar(255);
	DECLARE  S INT;
	
	SELECT Geannuleerd INTO S FROM BestellingAll BA WHERE BestellingId = Id;
	IF S > 0 THEN
		SET RV = CONCAT( 'Geannuleerd' );
	ELSE
		SELECT SamengevoegdMet INTO S FROM BestellingAll BA WHERE BestellingId = Id AND Geannuleerd = 0;
		if S > 0 THEN
			SET RV = CONCAT( 'Samengevoegd met bestelling ', S );
		ELSE
			SELECT Naam INTO RV
			FROM BestellingAll BA
				JOIN BestellingStatus USING ( BestellingId )
				JOIN BestellingStatussen BSS USING ( StatusId )
			WHERE BA.BestellingId = Id
			ORDER BY BSS.Volgorde DESC LIMIT 1;	
		END IF;
	END IF;
	
	RETURN RV;
	END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `BestellingStatusId` */;
DELIMITER ;;
CREATE DEFINER=`pieter`@`%` FUNCTION `BestellingStatusId`( Id INT ) RETURNS varchar(255) CHARSET latin1
    READS SQL DATA
BEGIN
	DECLARE	RV INT(11);
	
	SELECT
	   StatusId INTO RV
	FROM BestellingAll BA
	  JOIN BestellingStatus
	    USING ( BestellingId )
	  JOIN BestellingStatussen BSS
	    USING ( StatusId )
	WHERE BA.BestellingId = Id
	ORDER BY BSS.Volgorde DESC LIMIT 1;	
	RETURN RV;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `BestellingStatusOpen` */;
DELIMITER ;;
CREATE DEFINER=`pieter`@`%` FUNCTION `BestellingStatusOpen`( Id INT ) RETURNS int(1)
    READS SQL DATA
BEGIN
	DECLARE	RV INT(1);
	
	SELECT
	   BSS.ToonAlsOpenOrder INTO RV
	FROM BestellingAll BA
	  JOIN BestellingStatus
	    USING ( BestellingId )
	  JOIN BestellingStatussen BSS
	    USING ( StatusId )
	WHERE BA.BestellingId = Id
	ORDER BY BSS.Volgorde DESC LIMIT 1;	
	RETURN RV;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `bestelling_aantal` */;
DELIMITER ;;
CREATE DEFINER=`rutger`@`%` FUNCTION `bestelling_aantal`( bid INT ) RETURNS int(11)
    DETERMINISTIC
BEGIN                                                                                                               
        DECLARE rv INT;                             
	SELECT SUM( Aantal ) INTO rv FROM Bestellingen WHERE Ean <> 'porto' AND Bestellingid = bid;                                                                                                                                                 
        RETURN rv;        
END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `bestelling_bijdrage` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `bestelling_bijdrage`( id INT ) RETURNS double
    READS SQL DATA
    DETERMINISTIC
BEGIN
	DECLARE rv DOUBLE;
	SELECT IFNULL( ROUND( SUM( ( Prijs / ( ( 100 + BTWTarief ) / 100 ) ) * ( 100 - KortingPercentage ) * ( Aantal + AantalBackorder ) / ( 100 * 100 ) ) - SUM( ( Aantal + AantalBackorder ) * ( Prijs / ( ( 100 + BTWTarief ) / 100 ) ) * ( 100 - KortingMP ) / ( 100 * 100 ) ) - SUM( KostenMP ), 2 ), 0 ) INTO rv 
	FROM Bestellingen WHERE Bestellingid = id AND Geannuleerd = 0 AND ( BackorderOrigineel = 0 OR BackorderOrigineel IS NULL );
	
	RETURN rv;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `bestelling_hulp` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `bestelling_hulp`( ean NUMERIC(13), begin DATETIME, eind DATETIME ) RETURNS int(11)
    READS SQL DATA
BEGIN
	DECLARE cutoff INT;
	DECLARE rv INT;
	SELECT CEIL( AVG( Aantal ) ) INTO cutoff FROM Bestelling B LEFT JOIN Bestellingen Bn ON ( Bn.Bestellingid = B.Id ) WHERE Bn.Ean = ean AND DT BETWEEN begin AND eind;
	SET cutoff = cutoff * 2;
	SELECT CEIL( AVG( Aantal ) * COUNT( Aantal ) ) INTO rv FROM Bestelling B LEFT JOIN Bestellingen Bn ON ( Bn.Bestellingid = B.Id ) WHERE Aantal <= cutoff AND Bn.Ean = ean AND DT BETWEEN begin AND eind;
	
	RETURN rv;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `bestelling_ingepakt` */;
DELIMITER ;;
CREATE DEFINER=`pieter`@`%` FUNCTION `bestelling_ingepakt`( bid INT ) RETURNS tinyint(1)
    READS SQL DATA
BEGIN
	DECLARE ingepaktStatussen INT(4);
	
	SELECT
	   COUNT(*) INTO ingepaktStatussen 
	FROM BestellingStatus 
	WHERE 
	   BestellingId=bid AND
	   (StatusId = 18 OR StatusId = 19);
	IF ingepaktStatussen = 0 THEN
		RETURN false;
	else
		RETURN TRUE;
	END IF;
END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `bestelling_kop_opnieuw` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `bestelling_kop_opnieuw`( OrigBestelling INT, Gebruiker CHAR(2)) RETURNS int(11)
    MODIFIES SQL DATA
    DETERMINISTIC
BEGIN
 DECLARE NewBestellingid INT; 
 
 /* Maak een nieuwe order aan van de originele order */
 INSERT INTO BestellingAll SELECT NULL /*Bestellingid*/,`Klantid` /*Klantid*/,`Siteid` /*Siteid*/,NULL /*Opmerkingen*/,`Achternaam` /*Achternaam*/,`Bedrijfsnaam` /*Bedrijfsnaam*/,NOW() /*DT*/,NULL /*Afleverid*/,NULL /*IP*/,
 'nieuw'/*ProcessStatus*/,0 /*BatchID*/,AffiliateId /*AffiliateId*/,NULL /*ReferrerDomain*/,0 /*IsClubOrder*/,`Betaalmethode` /*Betaalmethode*/,
 0 /*Rekeningnummer*/,`Uwreferentie` /*Uwreferentie*/,0 /*Afgerond*/,0 /*Herinnering*/,NULL /*HASH*/,0 /*MailedTracktrace*/,
 NULL /*SessionId*/,0 /*EersteBestelling*/,0 /*StemMailVerzonden*/,NULL /*DTStemMail*/,0 /*SamengevoegdMet*/,
 0 /*Factuurid*/,Gebruiker /*Gebruiker*/,0 /*OpmerkingNegeren*/,'nieuw'/*AutoClassificatie*/,'' /*ClassificatieRedenKort*/,
 '' /*ClassificatieReden*/,0 /*Geexporteerd*/,OrigBestelling/*OrigineelBestellingId*/,0 /*ProspectId*/,
 0 /*GeenPortoBerekenen*/,0 /*IdealOpen*/, NULL /*IdealTimeout*/,
 BetalingsTermijn /*BetalingsTermijn*/,0 /*Geannuleerd*/, 0/*UitBackorder*/, 0/*SiteBestelling*/,0/*DeelLevering*/, NULL /*DTFactuur*/, NULL /*DTVerval*/, TeltAls, IsOmzet, IsCorrectie, 0 /*IsCredit*/, 1 /*IsOpnieuw */,
 0 /* ToonBestelling */, Herkomst,VerstuurCompleteOrder FROM BestellingAll WHERE BestellingId = OrigBestelling;
 
 SELECT LAST_INSERT_ID() INTO NewBestellingid;
 
 INSERT INTO BestellingAdressen SELECT NewBestellingid /*BestellingId*/,`Klantid` /*Klantid*/,`AfwijkendFactuurAdres` /*AfwijkendFactuurAdres*/,`FactuurKlantId` /*FactuurKlantId*/,`FactuurBedrijfsnaam` /*FactuurBedrijfsnaam*/,`FactuurBedrijfsnaam2` /*FactuurBedrijfsnaam2*/,`FactuurAfdeling` /*FactuurAfdeling*/,`FactuurGeslacht` /*FactuurGeslacht*/,`FactuurInitialen` /*FactuurInitialen*/,`FactuurAchternaam` /*FactuurAchternaam*/,`FactuurStraatnaam` /*FactuurStraatnaam*/,`FactuurHuisnummer` /*FactuurHuisnummer*/,`FactuurHuisnummerToevoeging` /*FactuurHuisnummerToevoeging*/,`FactuurPostcode` /*FactuurPostcode*/,`FactuurPlaatsnaam` /*FactuurPlaatsnaam*/,`AfwijkendVerzendAdres` /*AfwijkendVerzendAdres*/,`VerzendKlantId` /*VerzendKlantId*/,`VerzendBedrijfsnaam` /*VerzendBedrijfsnaam*/,`VerzendBedrijfsnaam2` /*VerzendBedrijfsnaam2*/,`VerzendAfdeling` /*VerzendAfdeling*/,`VerzendGeslacht` /*VerzendGeslacht*/,`VerzendInitialen` /*VerzendInitialen*/,`VerzendAchternaam` /*VerzendAchternaam*/,`VerzendStraatnaam` /*VerzendStraatnaam*/,`VerzendHuisnummer` /*VerzendHuisnummer*/,`VerzendHuisnummerToevoeging` /*VerzendHuisnummerToevoeging*/,`VerzendPostcode` /*VerzendPostcode*/,`VerzendPlaatsnaam` /*VerzendPlaatsnaam*/ FROM BestellingAdressen WHERE BestellingId = OrigBestelling; 
 
 RETURN NewBestellingid;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `bestelling_opnieuw` */;
DELIMITER ;;
CREATE DEFINER=`pieter`@`%` FUNCTION `bestelling_opnieuw`( OrigBestelling INT, Gebruiker CHAR(2)) RETURNS int(11)
    MODIFIES SQL DATA
    DETERMINISTIC
BEGIN
 DECLARE NewBestellingid INT; 
 
 /* Maak een nieuwe order aan van de originele order */
 INSERT INTO BestellingAll SELECT NULL /*Bestellingid*/,`Klantid` /*Klantid*/,`Siteid` /*Siteid*/,NULL /*Opmerkingen*/,`Achternaam` /*Achternaam*/,`Bedrijfsnaam` /*Bedrijfsnaam*/,NOW() /*DT*/,NULL /*Afleverid*/,NULL /*IP*/,
 'nieuw'/*ProcessStatus*/,0 /*BatchID*/,AffiliateId /*AffiliateId*/,NULL /*ReferrerDomain*/,0 /*IsClubOrder*/,`Betaalmethode` /*Betaalmethode*/,
 0 /*Rekeningnummer*/,`Uwreferentie` /*Uwreferentie*/,0 /*Afgerond*/,0 /*Herinnering*/,NULL /*HASH*/,0 /*MailedTracktrace*/,
 NULL /*SessionId*/,0 /*EersteBestelling*/,0 /*StemMailVerzonden*/,NULL /*DTStemMail*/,0 /*SamengevoegdMet*/,
 0 /*Factuurid*/,Gebruiker /*Gebruiker*/,0 /*OpmerkingNegeren*/,'nieuw'/*AutoClassificatie*/,'' /*ClassificatieRedenKort*/,
 '' /*ClassificatieReden*/,0 /*Geexporteerd*/,OrigBestelling/*OrigineelBestellingId*/,0 /*ProspectId*/,
 0 /*GeenPortoBerekenen*/,0 /*IdealOpen*/, NULL /*IdealTimeout*/,
 BetalingsTermijn /*BetalingsTermijn*/,0 /*Geannuleerd*/, 0/*UitBackorder*/, 0/*SiteBestelling*/,0/*DeelLevering*/, NULL /*DTFactuur*/, NULL /*DTVerval*/, TeltAls, IsOmzet, IsCorrectie, 0 /*IsCredit*/, 1 /*IsOpnieuw */,
 0 /* ToonBestelling */, Herkomst,VerstuurCompleteOrder  FROM BestellingAll WHERE BestellingId = OrigBestelling;
 
 SELECT LAST_INSERT_ID() INTO NewBestellingid;
 
 INSERT INTO Bestellingen SELECT NULL /*Id*/,`Auteurnaam` /*Auteurnaam*/,`Aantal` /*Aantal*/,`Prijs` /*Prijs*/,NewBestellingid /*Bestellingid*/,`Ean` /*Ean*/,`Omschrijving` /*Omschrijving*/,0 /*Geexporteerd*/,`KortingPercentage` /*KortingPercentage*/,`IsPromo` /*IsPromo*/,`KortingReden` /*KortingReden*/,`KortingMP` /*KortingMP*/,`KostenMP` /*KostenMP*/,NOW() /*DTOrderregel*/,`VastePrijs` /*VastePrijs*/,`ActiePrijs` /*ActiePrijs*/,`BTWTarief` /*BTWTarief*/,`BTWCode` /*BTWCode*/,`AantalBackorder` /*AantalBackorder*/,`BackorderOrigineel` /*BackorderOrigineel*/,`BackorderReden` /*BackorderReden*/,`BriefCode` /*BriefCode*/,NULL /*DTExactExport*/,`KortingBedrag` /*KortingBedrag*/,`KortingBedragExBtw` /*KortingBedragExBtw*/,`PrijsExBtwExKorting` /*PrijsExBtwExKorting*/,`PrijsExBtwIncKorting` /*PrijsExBtwIncKorting*/,`BedragExBtwExKorting` /*BedragExBtwExKorting*/,`BedragIncBtwExKorting` /*BedragIncBtwExKorting*/,`BedragIncBtwIncKorting` /*BedragIncBtwIncKorting*/,`BedragExBtwIncKorting` /*BedragExBtwIncKorting*/,`BedragBTW` /*BedragBTW*/,`LineNr` /*LineNr*/,0 /*Geannuleerd*/,0 /* bijdrage */, 0,0,0,0 /* Omzet */, 0 /* Statusid */, 0 /* FactuurId */, '', 0 /* BoekStatus */ FROM Bestellingen WHERE BestellingId = OrigBestelling AND Geannuleerd = 0;
 INSERT INTO BestellingAdressen SELECT NewBestellingid /*BestellingId*/,`Klantid` /*Klantid*/,`AfwijkendFactuurAdres` /*AfwijkendFactuurAdres*/,`FactuurKlantId` /*FactuurKlantId*/,`FactuurBedrijfsnaam` /*FactuurBedrijfsnaam*/,`FactuurBedrijfsnaam2` /*FactuurBedrijfsnaam2*/,`FactuurAfdeling` /*FactuurAfdeling*/,`FactuurGeslacht` /*FactuurGeslacht*/,`FactuurInitialen` /*FactuurInitialen*/,`FactuurAchternaam` /*FactuurAchternaam*/,`FactuurStraatnaam` /*FactuurStraatnaam*/,`FactuurHuisnummer` /*FactuurHuisnummer*/,`FactuurHuisnummerToevoeging` /*FactuurHuisnummerToevoeging*/,`FactuurPostcode` /*FactuurPostcode*/,`FactuurPlaatsnaam` /*FactuurPlaatsnaam*/,`AfwijkendVerzendAdres` /*AfwijkendVerzendAdres*/,`VerzendKlantId` /*VerzendKlantId*/,`VerzendBedrijfsnaam` /*VerzendBedrijfsnaam*/,`VerzendBedrijfsnaam2` /*VerzendBedrijfsnaam2*/,`VerzendAfdeling` /*VerzendAfdeling*/,`VerzendGeslacht` /*VerzendGeslacht*/,`VerzendInitialen` /*VerzendInitialen*/,`VerzendAchternaam` /*VerzendAchternaam*/,`VerzendStraatnaam` /*VerzendStraatnaam*/,`VerzendHuisnummer` /*VerzendHuisnummer*/,`VerzendHuisnummerToevoeging` /*VerzendHuisnummerToevoeging*/,`VerzendPostcode` /*VerzendPostcode*/,`VerzendPlaatsnaam` /*VerzendPlaatsnaam*/ FROM BestellingAdressen WHERE BestellingId = OrigBestelling; 
 
 /**
  * Annuleer de backorderregels op de oorspronkelijke order
  * want die zijn in de opnieuw, niet aangemaakt
  */
  UPDATE Bestellingen SET Geannuleerd = 1 WHERE Bestellingid=OrigBestelling AND AantalBackorder > 0;
 
 RETURN NewBestellingid;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `bestelling_totaal` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `bestelling_totaal`( bid INT ) RETURNS int(11)
    DETERMINISTIC
BEGIN                                                                                                               
        DECLARE rv INT;       
        -- INSERT INTO tmp.`TotaalCounter` VALUES ( NULL, @context );                      
	SELECT SUM( BedragIncBtwIncKorting ) * 100 INTO rv FROM Bestellingen WHERE Ean NOT IN ( 'porto', 'IDEAL' ) AND Geannuleerd = 0 AND Bestellingid = bid;                                                                                                                                                 
        RETURN rv;        
END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `bestelling_totaal_met_porto` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `bestelling_totaal_met_porto`( bid INT ) RETURNS int(11)
    DETERMINISTIC
BEGIN                                                                                                               
        DECLARE rv INT;                             
	SELECT IFNULL( SUM( BedragIncBtwIncKorting ), 0 ) * 100 INTO rv FROM Bestellingen_zonder_backorders WHERE Bestellingid = bid;                                                                                                                                                 
        RETURN rv;        
END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `bestelling_totaal_met_porto_bevestigd` */;
DELIMITER ;;
CREATE DEFINER=`pieter`@`%` FUNCTION `bestelling_totaal_met_porto_bevestigd`( bid INT ) RETURNS int(11)
    DETERMINISTIC
BEGIN                                                                                                               
        DECLARE rv INT;                             
	SELECT SUM( BedragIncBtwIncKorting ) * 100 INTO rv FROM BestellingenLog WHERE Bestellingid = bid AND Bevestigd=1;
        RETURN rv;        
END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `bestelling_totaal_met_porto_origineel` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `bestelling_totaal_met_porto_origineel`( bid INT ) RETURNS int(11)
    DETERMINISTIC
BEGIN                                                                                                               
        DECLARE rv INT;                             
        SELECT SUM( BL.BedragIncBtwIncKorting ) * 100 INTO rv FROM BestellingenLog BL RIGHT JOIN Bestellingen B USING (Id) WHERE B.Bestellingid = bid AND Eerste = 1;	
        RETURN rv;        
END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `bestelling_totaal_op_factuur` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `bestelling_totaal_op_factuur`( bid INT ) RETURNS int(11)
    DETERMINISTIC
BEGIN                                                                                                               
        DECLARE rv INT;                             
	SELECT IFNULL( SUM( BedragIncBtwIncKorting ), 0 ) * 100 INTO rv FROM Bestellingen WHERE Bestellingid = bid;                                                                                                                                                 
        RETURN rv;        
END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `bestelling_vbmih_backorders` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `bestelling_vbmih_backorders`( _bestellingId INT ) RETURNS int(11)
    DETERMINISTIC
BEGIN
	DECLARE _herkomst CHAR(10);
	
	SELECT Herkomst INTO _herkomst FROM BestellingAll WHERE BestellingId = _bestellingId;
	
	IF _herkomst NOT IN ( 'MARI' ) THEN
		/* Bestelling komt niet uit MARI */
		UPDATE Bestellingen_met_voorraad SET AantalBackorder = AantalBackorder;
	END IF;
	RETURN 0;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `bestelling_verschillendetitels` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `bestelling_verschillendetitels`( bid INT ) RETURNS int(11)
    DETERMINISTIC
BEGIN                                                                                                               
        DECLARE rv INT;                             
	SELECT COUNT( 1 ) INTO rv FROM Bestellingen WHERE Ean <> 'porto' AND Bestellingid = bid;                                                                                                                                                 
        RETURN rv;        
END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `boek_besteld_door` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `boek_besteld_door`( iEan CHAR(13) CHARACTER SET latin1 ) RETURNS int(11)
    READS SQL DATA
    DETERMINISTIC
BEGIN
	DECLARE rv INT;
	SELECT COUNT( DISTINCT Klantid ) INTO rv
	FROM Bestellingen Bn
		JOIN Bestelling USING ( BestellingId )
	WHERE Bn.Ean = iEan;
	RETURN rv;
	END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `boek_dagen_in_top` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `boek_dagen_in_top`( IEan char( 13 ) CHARACTER SET latin1, ITop INT ) RETURNS int(11)
    READS SQL DATA
    DETERMINISTIC
BEGIN
	DECLARE rv INT;
	DECLARE h INT;
	
	DROP TEMPORARY TABLE IF EXISTS Temp;
	CREATE TEMPORARY TABLE Temp SELECT IEan AS OrigineelEan, IEan AS Ean;
	SELECT COUNT(*) INTO h FROM Manpo.Boeken WHERE Ean = IEan AND Historieovernemen = 1;
	IF h = 1 THEN
		REPLACE INTO Temp SELECT 
			B.`L1` AS OrigineelEan, IEan AS Ean
			FROM Manpo.`BoekVervangtEAN` A JOIN Manpo.`Mapped_EAN` B ON (B.`U8` = A.`Vervangt`)
			WHERE Ean = IEan;
	END IF;	
	
	
	SELECT COUNT(DISTINCT DT) INTO rv FROM Boekranking_Datum D 
	WHERE Ranking <= ITop AND D.`Ean` IN ( SELECT M.`L1` FROM Temp T JOIN Manpo.`Mapped_EAN` M ON ( T.OrigineelEan = M.U8 ) );
	
/*	SELECT COUNT(*) INTO rv
	FROM Boekranking_Datum
	WHERE Ean IN ( IEan )
		AND Ranking <= ITop; */
	RETURN rv;
	END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `boek_in_top_sinds` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `boek_in_top_sinds`( IEAN CHAR( 13 ) CHARACTER SET latin1, ITOP INT ) RETURNS date
    READS SQL DATA
    DETERMINISTIC
BEGIN
	DECLARE h INT;
	DROP TEMPORARY TABLE IF EXISTS Temp;
	CREATE TEMPORARY TABLE Temp SELECT IEan AS OrigineelEan, IEan AS Ean;
	SELECT COUNT(*) INTO h FROM Manpo.Boeken WHERE Ean = IEan AND Historieovernemen = 1;
	IF h = 1 THEN
		REPLACE INTO Temp SELECT 
			B.`L1` AS OrigineelEan, IEan AS Ean
			FROM Manpo.`BoekVervangtEAN` A JOIN Manpo.`Mapped_EAN` B ON (B.`U8` = A.`Vervangt`)
			WHERE Ean = IEan;
	END IF;	
	BEGIN
		DECLARE cdt,rdt DATE;
		DECLARE crank, rrank,lp INT DEFAULT 0;
		DECLARE done INT DEFAULT 0;
		DECLARE cur CURSOR FOR SELECT DT, MIN(Ranking) AS Ranking FROM Managementboek_Klanten.Boekranking_Datum WHERE Ean IN ( SELECT M.`L1` FROM Temp T JOIN Manpo.`Mapped_EAN` M ON ( T.OrigineelEan = M.U8 ) ) GROUP BY DT ORDER BY DT DESC;
		DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
		
		OPEN cur;
		
		REPEAT 
			FETCH cur INTO cdt, crank;
			IF NOT done THEN
				IF crank > 0 AND crank <= ITOP THEN
					SET rdt = cdt;
				ELSE
					SET done = 2;
				END IF;
			END IF;
			SET lp = lp + 1;
		UNTIL done END REPEAT;
		CLOSE cur;
		
		RETURN rdt;
	END;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `create_credit` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `create_credit`( OrigBestelling INT ) RETURNS int(11)
    MODIFIES SQL DATA
    DETERMINISTIC
BEGIN
	DECLARE NewBestelling INT;
	DECLARE GebruikerInitialen CHAR(5);
	
	/* Alleen bestellingen met een factuurid kunnen gecrediteerd worden */
	SET @factuurid := (SELECT Factuurid FROM `BestellingAll` WHERE `Bestellingid` = OrigBestelling);
	IF @factuurid = 0 THEN
		RETURN 0;
	ELSE
		IF @initials <> '' THEN
			SET GebruikerInitialen = @initials;
		ELSE
			SET GebruikerInitialen = 'CR';
		END IF;
		
		INSERT INTO BestellingAll SELECT NULL /*Bestellingid*/,`Klantid` /*Klantid*/,`Siteid` /*Siteid*/,'' /*Opmerkingen*/,`Achternaam` /*Achternaam*/,`Bedrijfsnaam` /*Bedrijfsnaam*/,NOW() /*DT*/,`Afleverid` /*Afleverid*/,`IP` /*IP*/,
		'nieuw' /*ProcessStatus*/,0 /*BatchID*/,`AffiliateId` /*AffiliateId*/,'' /*ReferrerDomain*/,0 /*IsClubOrder*/,'A' /*Betaalmethode*/,
		`Rekeningnummer` /*Rekeningnummer*/,CONCAT( 'credit ', IFNULL( Factuurid, '' ) ) /*Uwreferentie*/,1 /*Afgerond*/,`Herinnering` /*Herinnering*/,'' /*HASH*/,0 /*MailedTracktrace*/,
		`SessionId` /*SessionId*/,`EersteBestelling` /*EersteBestelling*/,`StemMailVerzonden` /*StemMailVerzonden*/,`DTStemMail` /*DTStemMail*/,`SamengevoegdMet` /*SamengevoegdMet*/,
		0 /*Factuurid*/,'' /*Gebruiker*/,`OpmerkingNegeren` /*OpmerkingNegeren*/,'nieuw' /*AutoClassificatie*/,'' /*ClassificatieRedenKort*/,
		'' /*ClassificatieReden*/,0 /*Geexporteerd*/,OrigBestelling /*OrigineelBestellingId*/,`ProspectId` /*ProspectId*/,
		`GeenPortoBerekenen` /*GeenPortoBerekenen*/,0 /*IdealOpen*/,0 /*IdealTimeout*/,
		`BetalingsTermijn` /*BetalingsTermijn*/,0 /*Geannuleerd*/, 0 /*UitBackorder*/, SiteBestelling, 0/*DeelLevering*/, NULL/*DTFactuur*/, NULL/*DTVerval*/, 0 /*TeltAls*/, IsOmzet /*Omzet*/, 0 /*Corr*/, 1 /*Credit*/, 0 /*Opnieuw*/, 0 /*Toon*/, Herkomst, 0/*VerstuurCompleteOrder*/
		FROM BestellingAll WHERE BestellingId = OrigBestelling;
		SELECT LAST_INSERT_ID() INTO NewBestelling;
		/* 
		 * Insert orderregels & Adressen 
		 * sluit orderregels die in backorder staan uit
		 * die worden namelijk geannuleerd
		 */
		INSERT INTO Bestellingen SELECT NULL /*Id*/,`Auteurnaam` /*Auteurnaam*/,-1 * `Aantal` /*Aantal*/,`Prijs` /*Prijs*/,NewBestelling /*Bestellingid*/,`Ean` /*Ean*/,`Omschrijving` /*Omschrijving*/,0 /*Geexporteerd*/,`KortingPercentage` /*KortingPercentage*/,`IsPromo` /*IsPromo*/,`KortingReden` /*KortingReden*/,`KortingMP` /*KortingMP*/,`KostenMP` /*KostenMP*/,NOW() /*DTOrderregel*/,`VastePrijs` /*VastePrijs*/,`ActiePrijs` /*ActiePrijs*/,`BTWTarief` /*BTWTarief*/,`BTWCode` /*BTWCode*/,0 /*AantalBackorder*/,NULL /*BackorderOrigineel*/,NULL /*BackorderReden*/,NULL /*BriefCode*/,NULL /*DTExactExport*/,`KortingBedrag` /*KortingBedrag*/,`KortingBedragExBtw` /*KortingBedragExBtw*/,`PrijsExBtwExKorting` /*PrijsExBtwExKorting*/,`PrijsExBtwIncKorting` /*PrijsExBtwIncKorting*/,`BedragExBtwExKorting` /*BedragExBtwExKorting*/,`BedragIncBtwExKorting` /*BedragIncBtwExKorting*/,`BedragIncBtwIncKorting` /*BedragIncBtwIncKorting*/,`BedragExBtwIncKorting` /*BedragExBtwIncKorting*/,`BedragBTW` /*BedragBTW*/,`LineNr` /*LineNr*/,0 /*Geannuleerd*/,0 /* Bijdrage*/,0,0,0,0 /*Omzet*/, 0 /* Statusid */, 0 /* FactuurId */, '', 0 /* BoekStatus */ FROM Bestellingen WHERE BestellingId = OrigBestelling AND Geannuleerd = 0 AND Geexporteerd = 1 AND Aantal <> 0;
		INSERT INTO BestellingAdressen SELECT NewBestelling /*BestellingId*/,`Klantid` /*Klantid*/,`AfwijkendFactuurAdres` /*AfwijkendFactuurAdres*/,`FactuurKlantId` /*FactuurKlantId*/,`FactuurBedrijfsnaam` /*FactuurBedrijfsnaam*/,`FactuurBedrijfsnaam2` /*FactuurBedrijfsnaam2*/,`FactuurAfdeling` /*FactuurAfdeling*/,`FactuurGeslacht` /*FactuurGeslacht*/,`FactuurInitialen` /*FactuurInitialen*/,`FactuurAchternaam` /*FactuurAchternaam*/,`FactuurStraatnaam` /*FactuurStraatnaam*/,`FactuurHuisnummer` /*FactuurHuisnummer*/,`FactuurHuisnummerToevoeging` /*FactuurHuisnummerToevoeging*/,`FactuurPostcode` /*FactuurPostcode*/,`FactuurPlaatsnaam` /*FactuurPlaatsnaam*/,`AfwijkendVerzendAdres` /*AfwijkendVerzendAdres*/,`VerzendKlantId` /*VerzendKlantId*/,`VerzendBedrijfsnaam` /*VerzendBedrijfsnaam*/,`VerzendBedrijfsnaam2` /*VerzendBedrijfsnaam2*/,`VerzendAfdeling` /*VerzendAfdeling*/,`VerzendGeslacht` /*VerzendGeslacht*/,`VerzendInitialen` /*VerzendInitialen*/,`VerzendAchternaam` /*VerzendAchternaam*/,`VerzendStraatnaam` /*VerzendStraatnaam*/,`VerzendHuisnummer` /*VerzendHuisnummer*/,`VerzendHuisnummerToevoeging` /*VerzendHuisnummerToevoeging*/,`VerzendPostcode` /*VerzendPostcode*/,`VerzendPlaatsnaam` /*VerzendPlaatsnaam*/ FROM BestellingAdressen WHERE BestellingId = OrigBestelling;
		
		/*
		 * Annuleer orderregels van de oorspronkelijke order
		 * die in backorder staan of in backorder gestaan hebben.
		 * Als een deel van de backorderregel eventueel al 
		 * geleverd is dan hoort daar een andere factuur bij.
		 */
		/**
		 * @deprecated
		 * UPDATE Bestellingen SET Geannuleerd=1 WHERE BestellingId=OrigBestelling AND AantalBackorder > 0;
		 */
		
		/* Rond nieuwe credit af */
		UPDATE BestellingAll SET DT = NOW(), Gebruiker = GebruikerInitialen, Afgerond=1, Geannuleerd=0 WHERE BestellingId = NewBestelling;
		
		/* Werk datum bij 
		SPN - Waarom!?!?
		UPDATE Bestellingen  SET DTOrderregel = NOW() WHERE BestellingId = OrigBestelling;
		*/
		
		/* Werk status bij: Gecrediteerd */
		INSERT IGNORE INTO BestellingStatus SET StatusId = 29, BestellingId = OrigBestelling, Resultaat = 'gelukt', Gebruiker = @initials, DT = NOW();
		CALL orderregel_status_op_orderid_zonder_backorders( 29, OrigBestelling, 'gelukt' );
		
		/* Status 'Afgerond' op nieuwe order */
		INSERT IGNORE INTO BestellingStatus SET StatusId = 2, BestellingId = NewBestelling, Resultaat = 'gelukt', Gebruiker = @initials, DT = NOW();				
		CALL orderregel_status_op_orderid( 2, NewBestelling, 'gelukt' );		
		/* Status 'Niet inpakken' op nieuwe order */
		INSERT IGNORE INTO BestellingStatus SET StatusId = 32, BestellingId = NewBestelling, Resultaat = 'gelukt', Gebruiker = @initials, DT = NOW();				
		CALL orderregel_status_op_orderid( 32, NewBestelling, 'gelukt' );
		
		RETURN NewBestelling;
	END IF;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `credit_en_opnieuw` */;
DELIMITER ;;
CREATE DEFINER=`pieter`@`%` FUNCTION `credit_en_opnieuw`( OrigBestelling INT, Gebruiker CHAR(2)) RETURNS int(11)
    MODIFIES SQL DATA
    DETERMINISTIC
BEGIN
	/* Roep create_credit aan om de credit te maken*/
	DECLARE NewBestelling INT;	
	DECLARE CreditBestelling INT;
	
	/* Zet globale variabele @initials voor de functie credit_direct */
	SET @initials = Gebruiker;
	SELECT create_credit(OrigBestelling) INTO CreditBestelling;
	
	/* Zet 'Opnieuw' Vlag bij deze credit */
	UPDATE BestellingAll SET IsOpnieuw = 1 WHERE BestellingId = CreditBestelling;
	
	/* Doe de bestelling opnieuw */
	SELECT bestelling_opnieuw(OrigBestelling, Gebruiker) INTO NewBestelling;
		
	RETURN NewBestelling;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `domain_of_url` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `domain_of_url`(url TEXT) RETURNS varchar(255) CHARSET latin1
    NO SQL
    DETERMINISTIC
RETURN SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(TRIM(LEADING "https://" FROM TRIM(LEADING "http://" FROM TRIM(url))), "/", 1), ":", 1), ".", if(url LIKE "%.org.__%" OR url LIKE "%.net.__%" OR url LIKE "%.com.__%" OR url LIKE "%.__.us%" OR url LIKE "%.co.__%" OR url LIKE "%.__.uk%", -3, -2) ) ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `factuur_totaal` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `factuur_totaal`( bid INT ) RETURNS decimal(11,2)
    DETERMINISTIC
BEGIN                                                                                                               
        DECLARE rv DECIMAL( 11, 2 );                             
	SELECT IFNULL( SUM( BedragIncBtwIncKorting ), 0 ) INTO rv FROM Bestellingen WHERE Factuurid = bid AND Aantal <> 0;                                                                                                                                                 
        RETURN rv;        
END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `geen_voorraad_artikelen` */;
DELIMITER ;;
CREATE DEFINER=`pieter`@`%` FUNCTION `geen_voorraad_artikelen`() RETURNS varchar(255) CHARSET latin1
    DETERMINISTIC
BEGIN
	SET @r = 'bong,porto,ideal';
	RETURN @r;
END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `gemiddeld_stemmen` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `gemiddeld_stemmen`( iEAN char(13) CHARACTER SET latin1 ) RETURNS float
    READS SQL DATA
BEGIN
	DECLARE RV FLOAT;
	
	SELECT SUM( Stemmen * Gemiddeld ) / SUM( Stemmen )  INTO RV
	FROM 
	Managementboek_Klanten.VogooAvg VA JOIN  
	(
	SELECT V.Vervangtean AS Ean FROM Managementboek_Boeken.Boekanderebindwijzen A JOIN Managementboek_Boeken.Boekvervangtean V ON ( V.Ean = A.Eangekoppeld ) WHERE A.Ean = iEAN
	UNION
	SELECT V.Vervangtean AS Ean FROM Managementboek_Boeken.Boekvervangtean V WHERE V.Ean = iEAN
	) A
	USING ( Ean );
	RETURN IFNULL(RV,0);
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `gereserveerdeVoorraad` */;
DELIMITER ;;
CREATE DEFINER=`pieter`@`%` FUNCTION `gereserveerdeVoorraad`(EanInput VARCHAR(13) CHARACTER SET latin1) RETURNS int(11)
    READS SQL DATA
BEGIN
	DECLARE huidigeGereserveerdeVoorraad INT(11) DEFAULT 0;	
	SELECT IFNULL(Voorraad,0) INTO huidigeGereserveerdeVoorraad FROM Voorraadreserveringen WHERE `Ean`=EanInput ORDER BY DT DESC LIMIT 0,1;
	RETURN huidigeGereserveerdeVoorraad;
END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `get_administratie` */;
DELIMITER ;;
CREATE DEFINER=`pieter`@`%` FUNCTION `get_administratie`() RETURNS varchar(20) CHARSET latin1
    READS SQL DATA
    DETERMINISTIC
BEGIN
	SET @db = REPLACE(DATABASE(),'_Klanten','');
	RETURN @db;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `gmt_now` */;
DELIMITER ;;
CREATE DEFINER=`pieter`@`%` FUNCTION `gmt_now`() RETURNS datetime
    NO SQL
BEGIN
	DECLARE GMT DATETIME;
	SET @OLD_TZ = @@TIME_ZONE;
	SET @@TIME_ZONE = "+00:00";
	SELECT NOW() INTO GMT;
	SET @@TIME_ZONE = "SYSTEM";
	RETURN GMT; 
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `heeft_orderregelStatus` */;
DELIMITER ;;
CREATE DEFINER=`pieter`@`%` FUNCTION `heeft_orderregelStatus`(myId INT,myStatusId INT) RETURNS tinyint(1)
    READS SQL DATA
BEGIN
		DECLARE returnValue TINYINT(1);
		SELECT IF (count(*) = 0,0,1) into returnValue FROM OrderregelStatus 
			WHERE Id=myId AND StatusId=myStatusId;			
		return returnValue;
	END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `klant_aantal_bestellingen` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `klant_aantal_bestellingen`( id INT ) RETURNS int(11)
    DETERMINISTIC
BEGIN
	DECLARE rv INT;	
	SELECT IFNULL( SUM(TeltAls), 0 ) INTO rv FROM BestellingAll WHERE Afgerond = 1 AND Klantid = id;
	RETURN rv;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `klant_aantal_openfacturen` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `klant_aantal_openfacturen`( klantid INT ) RETURNS int(11)
    DETERMINISTIC
BEGIN
	DECLARE rv INT;
	DECLARE eid INT;
		
		SELECT COUNT(*) INTO rv FROM BestellingAll B 
		JOIN `BestellingAdressen` BA USING ( BestellingId )
		JOIN Facturen FF ON ( FF.`OrderID` = B.BestellingId )
		WHERE ( BA.KlantId = klantid OR BA.`FactuurKlantId` = klantid )
		AND B.Factuurid > 0
		AND B.`Afgerond` = 1
		AND FF.`Status` IN ( 'open', 'nieuw' );
	RETURN rv;
END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `klant_bedrag_open` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `klant_bedrag_open`( klantid INT ) RETURNS decimal(10,2)
    DETERMINISTIC
BEGIN
	DECLARE rv DECIMAL( 10,2 );
			
		SELECT SUM( FF.OpenBedrag ) INTO rv FROM BestellingAll B 
		JOIN `BestellingAdressen` BA USING ( BestellingId )
		JOIN Facturen FF ON ( FF.`OrderID` = B.BestellingId )
		WHERE ( BA.KlantId = klantid OR BA.`FactuurKlantId` = klantid )
		AND B.Factuurid > 0
		AND B.`Afgerond` = 1
		AND FF.`Status` IN ( 'open', 'nieuw' );
	RETURN rv;
END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `klant_bedrag_openfacturen` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `klant_bedrag_openfacturen`( id INT ) RETURNS decimal(10,2)
    DETERMINISTIC
BEGIN
	DECLARE rv DECIMAL(10,2);
	DECLARE eid INT;
		
	SELECT `ExactId` INTO eid FROM Managementboek_Klanten.Klanten WHERE Klantid = 2127265;
	
	SELECT SUM(Bedrag) INTO rv FROM ExactKoppeling.Facturen WHERE Admnr = 709 AND `Status` IN ( 'open', 'nieuw' ) AND Debtor = eid;
	
	/* SELECT COUNT(*) INTO rv FROM ExactKoppeling.Facturen LEFT JOIN Bestelling ON ( OrderID = Bestellingid ) WHERE Afgerond = 1 AND KlantID = id AND `Status` = 'open' AND OpenBedrag > 0; */
	RETURN IFNULL(rv,0);
END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `klant_laatste_ipadres` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `klant_laatste_ipadres`( id INT ) RETURNS char(16) CHARSET latin1
    DETERMINISTIC
BEGIN
	DECLARE rv CHAR(16);
	SELECT IPAdres INTO rv FROM IPHistorie WHERE Klantid = id ORDER BY DTLaatsteBezoek DESC LIMIT 1;
	IF rv IS NULL THEN
		SELECT IPlaatstebezoek INTO rv FROM Klanten WHERE Klantid = id;
	END IF;
	IF rv IS NULL THEN
		SELECT IP INTO rv FROM Klanten WHERE Klantid = id;
	END IF;
	IF rv IS NULL THEN
		SET rv = '0.0.0.0';
	END IF;
	RETURN rv;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `klant_oudsteopenfactuur_datum` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `klant_oudsteopenfactuur_datum`( id INT ) RETURNS date
    DETERMINISTIC
BEGIN
	DECLARE rv DATE;
	
	SELECT IFNULL( MIN( Facturen.DT ), '0000-00-00' ) INTO rv FROM ExactKoppeling.Facturen LEFT JOIN Bestelling ON ( OrderID = Bestellingid ) WHERE Facturen.Admnr = 709 AND Afgerond = 1 AND KlantID = id AND `Status` = 'open' AND OpenBedrag > 0;
	RETURN rv;
END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `klant_oudste_factuur` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `klant_oudste_factuur`( klantid INT ) RETURNS int(11)
    DETERMINISTIC
BEGIN
	DECLARE rv DATE;
			
		SELECT TO_DAYS( NOW() ) - TO_DAYS( MIN( FF.`DT` ) ) INTO rv FROM BestellingAll B 
		JOIN `BestellingAdressen` BA USING ( BestellingId )
		JOIN Facturen FF ON ( FF.`OrderID` = B.BestellingId )
		WHERE ( BA.KlantId = klantid OR BA.`FactuurKlantId` = klantid )
		AND B.Factuurid > 0
		AND B.`Afgerond` = 1
		AND FF.`Status` IN ( 'open', 'nieuw' );
	RETURN rv;
END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `korting_voor_ean` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `korting_voor_ean`( _klantid INT, _ean CHAR(13) CHARACTER SET latin1, _aantal INT ) RETURNS decimal(4,2)
    READS SQL DATA
BEGIN
	DECLARE _Percentage DECIMAL(4,2);
	DECLARE _AangepastPercentage DECIMAL(4,2);
	DECLARE _inCB int;
	DECLARE _inMB int;
	
	IF _ean IN ( 'BONG', 'PORTO', 'VOUCHER' ) THEN
		SET _Percentage = 0;
	ELSE
		SELECT Percentage INTO _Percentage FROM Managementboek_Klanten.`Korting_Klanten_Ean` WHERE Ean = _ean AND Klantid = _klantid;
	
		IF _Percentage IS NULL THEN
			SELECT MAX(Percentage) INTO _Percentage FROM Managementboek_Klanten.`Korting_Klanten_Uitgever` JOIN Managementboek_Boeken.Boeken ON ( UitgeverId = Uitgever ) WHERE Ean = _ean AND Klantid = _klantid;
		END IF; 
		
		IF _Percentage IS NULL THEN
			SELECT MAX(Percentage) INTO _Percentage FROM Managementboek_Klanten.`Korting_Klanten` WHERE Klantid = _klantid;
		END IF; 
		
		IF _Percentage IS NULL THEN 
			-- 10-29 > 5
			-- 30-99 > 10
			-- 100+ > 15
			SELECT COUNT(*) INTO _inCB FROM CbBoeken.`Boeken_gefilterd` WHERE Ean = _ean;			
			SELECT COUNT(*) INTO _inMB FROM Managementboek_Boeken.`Boeken` WHERE Ean = _ean AND Uitgever > 0;			
			
			IF _inCB = 1 AND _inMB = 0 THEN
				-- CB-tak
				IF _aantal >= 10 AND _aantal <= 29 THEN
					SET _Percentage = 5;
				ELSEIF _aantal >= 30 AND _aantal <= 99 THEN
					SET _Percentage = 10;
				ELSEIF _aantal >= 100 THEN
					SET _Percentage = 15;
				END IF;
			ELSE
				-- Managementboek-assortiment-tak
				IF _aantal <= 9 AND _aantal >= 0 THEN
					SELECT Korting_0_9, Aangepastekorting_0_9 INTO _Percentage, _AangepastPercentage FROM Managementboek_Boeken.Boeken WHERE Ean = _ean LIMIT 1;
				ELSEIF _aantal <= 29 THEN
					SELECT Korting_10_29, Aangepastekorting_10_29 INTO _Percentage, _AangepastPercentage FROM Managementboek_Boeken.Boeken WHERE Ean = _ean  LIMIT 1;
				ELSEIF _aantal <= 99 THEN
					SELECT Korting_30_99, Aangepastekorting_30_99 INTO _Percentage, _AangepastPercentage FROM Managementboek_Boeken.Boeken WHERE Ean = _ean  LIMIT 1;
				ELSEIF _aantal <= 249 THEN
					SELECT Korting_100_249, Aangepastekorting_100_249 INTO _Percentage, _AangepastPercentage FROM Managementboek_Boeken.Boeken WHERE Ean = _ean  LIMIT 1;
				ELSEIF _aantal <= 449 THEN
					SELECT Korting_250_499, Aangepastekorting_250_499 INTO _Percentage, _AangepastPercentage FROM Managementboek_Boeken.Boeken WHERE Ean = _ean LIMIT 1;
				ELSEIF _aantal >= 500 THEN
					SELECT Korting_500_999, Aangepastekorting_500_999 INTO _Percentage, _AangepastPercentage FROM Managementboek_Boeken.Boeken WHERE Ean = _ean LIMIT 1;
				ELSE
					SET _Percentage = 0;
					SET _AangepastPercentage = 0;
				END IF;
			END IF;
		END IF;
		
		IF IFNULL( _AangepastPercentage, 0 ) > 0 THEN
			SET _Percentage = _AangepastPercentage;
		END IF;
	END IF;
	
	RETURN IFNULL(_Percentage,0);
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `kosten_per_regel` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `kosten_per_regel`( id INT ) RETURNS decimal(10,2)
    READS SQL DATA
BEGIN
	DECLARE Porto DECIMAL( 10, 2 );
	DECLARE VKosten DECIMAL( 10, 2 );
	DECLARE Bong DECIMAL( 10, 2 );
	DECLARE Aantal INT;
	
	SET Aantal = 0;
	SET VKosten = ROUND( 5.50, 2 );
	SELECT ROUND( IFNULL( SUM( Prijs / 100 ), 0 ), 2 ) INTO Bong
		FROM Bestellingen
		WHERE Bestellingid = id
			AND EAN = 'BONG' LIMIT 1;
	
	SET VKosten = ROUND( VKosten - Bong, 2 );
	
	SELECT ROUND( IFNULL( Prijs/100, 0 ), 2 ) INTO Porto
		FROM Bestellingen
		WHERE Bestellingid = id
			AND EAN = 'porto' LIMIT 1;
	
	
	SELECT ROUND( IFNULL( COUNT(*), 0 ), 2 ) INTO Aantal
		FROM Bestellingen
		WHERE Bestellingid = id
			AND EAN NOT IN ('porto', 'BONG', 'IDEAL');
	
	IF Aantal > 0 THEN
		SET VKosten = Round( ( VKosten - Porto ) / Aantal, 2 );
	END IF;
	RETURN IFNULL( VKosten, 0 );
	END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `maximum` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `maximum`( a int, b int ) RETURNS int(11)
    NO SQL
    DETERMINISTIC
BEGIN
	RETURN IF( a > b, a, b );
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `moet_factuur_geprint_worden` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `moet_factuur_geprint_worden`( id INT) RETURNS int(11)
    READS SQL DATA
BEGIN
  DECLARE RV INT;
  DECLARE CR INT;
	
	/* Geen credit */
	SELECT SUM( Bindwijze_download = 0 ) INTO RV FROM 
	Bestellingen JOIN ExactArtikelen ON ( Ean = `Code` ) 
	JOIN Managementboek_Boeken.`Bindwijze` USING ( Bindwijze )
	WHERE BestellingId = id
	AND Ean NOT IN ( 'BONG', 'VOUCHER', 'PORTO', 'P' )
	AND Geannuleerd = 0;  
	    
    RETURN RV;
  END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `moet_ingepakt_worden` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `moet_ingepakt_worden`( id INT) RETURNS int(11)
    READS SQL DATA
BEGIN
  DECLARE RV INT;
  DECLARE CR INT;
  DECLARE CB INT;
  
	
	-- SELECT O.leveren_via_cb INTO CB FROM OrderkopStatusPlat O WHERE O.BestellingId = id;
	SELECT IsCredit INTO CR FROM BestellingAll WHERE BestellingId = id;
	
	/* 	IF CB = 1 THEN
			SET RV = 0;	
		ELSE */
	
	IF CR = 0 THEN
		/* Geen credit */
		SELECT SUM( Bindwijze_inpakken ) > 0 INTO RV
		FROM Bestellingen
			JOIN ExactArtikelen ON ( Ean = `Code` ) 
			JOIN Managementboek_Boeken.Bindwijze USING ( Bindwijze )
		WHERE BestellingId = id
		AND Ean NOT IN ( 'BONG', 'VOUCHER', 'PORTO', 'P' )
		AND Geannuleerd = 0;  
	ELSE
		/* Wel een credit */
		SET RV = 0;
	END IF;
    
    RETURN RV;
  END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `omzet_op_datum_hele_dag` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `omzet_op_datum_hele_dag`( _dt DATETIME ) RETURNS decimal(10,2)
    READS SQL DATA
BEGIN
	RETURN omzet_tussen( DATE(_dt), DATE_ADD(DATE(_dt),INTERVAL 1 DAY) );
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `omzet_op_datum_tot_tijdstip` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `omzet_op_datum_tot_tijdstip`( _dt DATETIME ) RETURNS decimal(10,2)
    READS SQL DATA
BEGIN
	RETURN omzet_tussen( DATE(_dt), _dt );
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `omzet_tussen` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `omzet_tussen`( _dts DATETIME, _dte DATETIME ) RETURNS decimal(10,2)
    READS SQL DATA
BEGIN
	DECLARE _rv DECIMAL(10,2);
	
	SELECT 
	SUM(OmzetExBtwIncKorting) INTO _rv
	FROM Bestellingen_voor_omzet
	WHERE Kanaal IN ( 'Website', 'Mobile', 'ios App', 'android app' )
	AND DT BETWEEN _dts AND _dte;
	
	RETURN _rv;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `OrderregelTekst` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `OrderregelTekst`( _id INT ) RETURNS varchar(255) CHARSET utf8
    READS SQL DATA
BEGIN
	DECLARE _rv VARCHAR(255) DEFAULT '';
	DECLARE _kan_gedownload_worden INT;
	DECLARE _ingepakt INT;
	DECLARE _afgesloten INT;
	DECLARE _gefactureerd INT;
	DECLARE _DTIngepakt DATETIME;
	DECLARE _Boekstatus INT;
	DECLARE _geannuleerd INT;
	DECLARE _geparkeerd INT;
	DECLARE _genoeg INT;
	DECLARE _DTHerdruk DATE;
	DECLARE _DTVerschijning DATE;
	DECLARE _DTBelofte DATE;
	DECLARE _DTBevestigd DATE;
	DECLARE _BackorderReden INT;
	DECLARE _in_backorder INT;
	DECLARE _niet_inpakken INT;
	DECLARE _gecrediteerd INT;
	DECLARE _afgerond INT;
	DECLARE _leveren_via_cb INT;
	DECLARE _bestellingid INT;
	--
	
	SELECT 
		kan_gedownload_worden, 
		niet_inpakken,
		afgesloten,
		gecrediteerd,
		ingepakt,
		gefactureerd,
		is_geparkeerd,
		DTingepakt,
		BK.Boekstatus,
		BN.Geannuleerd OR OSP.geannuleerd,
		VoorraadBijBevestiging >= ( Aantal + AantalBackorder ),
		Herdrukdatum, 
		Verschijningsdatum,
		DTBelofte,
		BackorderReden,
		in_backorder_gezet=1 AND uit_backorder_gehaald=0,
		BA.Afgerond,
		BA.DT,
		BA.BestellingId
		
	INTO 	_kan_gedownload_worden,
		_niet_inpakken,
		_afgesloten,
		_gecrediteerd,
		_ingepakt,
		_gefactureerd,
		_geparkeerd,
		_DTIngepakt,
		_Boekstatus,
		_geannuleerd,
		_genoeg,
		_DTHerdruk,
		_DTVerschijning,
		_DTBelofte,
		_BackorderReden,
		_in_backorder,
		_afgerond,
		_DTBevestigd,
		_bestellingid
	
	FROM Bestellingen BN JOIN BestellingenBelofte BB USING ( Id ) 
	JOIN OrderregelStatusPlat OSP USING ( Id )
	JOIN BestellingAll BA USING ( BestellingId )
	LEFT JOIN Zendingen.`Zendingen` Z ON ( BA.BestellingId = Z.`BestellingId` AND Z.`Database` = 'Managementboek_Klanten' )
	JOIN Managementboek_Boeken.Boeken BK USING ( Ean )
	WHERE BN.Id = _id
	GROUP BY BN.Id;
	
	-- CB
	SELECT COUNT(*) INTO _leveren_via_cb FROM OrderkopStatusPlat WHERE BestellingId = _bestellingid AND leveren_via_cb=1;	
	
	IF _geannuleerd = 1 OR _BackorderReden = 8 THEN
		SET _rv = "Geannuleerd";
	ELSEIF _afgerond = 0 THEN
		SET _rv = "Bestelling nog niet bevestigd";
		
	ELSEIF _gecrediteerd = 1 THEN
		SET _rv = "Gecrediteerd";
	
	ELSEIF _kan_gedownload_worden THEN
		SET _rv = "Kan gedownload worden";
		
	ELSEIF _ingepakt = 1 THEN
		IF _DTIngepakt IS NULL THEN
			SELECT MAX(DT) INTO _DTIngepakt FROM OrderregelStatus WHERE Id = _id AND StatusId = 15;
		END IF;
		SET _rv = CONCAT( 'Verzonden op ', DATE_FORMAT( _DTIngepakt, '%e-%c-%Y' ));
		
	ELSEIF _afgesloten > 0 THEN
		SET _rv = "Afgesloten";	
		
	ELSEIF ( _Boekstatus = 2 AND _genoeg = 0 ) OR ( _in_backorder = 1 AND _BackorderReden = 7 ) THEN
		-- Herdruk
		IF _DTHerdruk > '0000-00-00' THEN 
			SET _rv = CONCAT( "In herdruk, verwacht op ", DATE_FORMAT( _DTHerdruk, '%e-%c-%Y' ));
		ELSE
			SET _rv = "In herduk, verschijningsdatum onbekend";
		END IF;
	ELSEIF ( _Boekstatus = 5 AND _genoeg = 0 ) OR ( _in_backorder = 1 AND _BackorderReden = 6 ) THEN
		-- Nog niet verschenen
		IF _DTVerschijning > '0000-00-00' THEN 
			SET _rv = CONCAT( "Nog niet verschenen, verwacht op ", DATE_FORMAT( _DTVerschijning, '%e-%c-%Y' ));
		ELSE
			SET _rv = "Nog niet verschenen, verschijningsdatum onbekend";
		END IF;
				
	ELSEIF _geparkeerd = 1 THEN
		SET _rv = "In behandeling, neem contact met ons op voor meer informatie";
	
	ELSEIF _leveren_via_cb=1 THEN
		SET _rv = "Levering door extern magazijn";
		
	ELSEIF ( _in_backorder = 1 or _genoeg = 0 ) THEN
			SET _rv = "Besteld bij uitgever";		
	
	ELSEIF _genoeg = 0 AND _DTBelofte > '0000-00-00' THEN
		SET _rv = CONCAT( "Verwachte leverdatum ", DATE_FORMAT( _DTBelofte, '%e-%c-%Y' ));
		
	ELSEIF _genoeg = 0 AND _DTBelofte IS NULL THEN
		SET _rv = CONCAT( "Besteld bij uitgever" );
	
	ELSEIF _BackorderReden = 9 THEN
			SET _rv = "Besteld bij uitgever";	
		
	ELSEIF _gefactureerd = 0 THEN
		SET _rv = CONCAT( "Bestelling bevestigd op ", DATE_FORMAT( _DTBevestigd, '%e-%c-%Y' ));
	
	ELSEIF _gefactureerd = 0 THEN
		SET _rv = "Bestelling bevestigd";
	
	ELSEIF _niet_inpakken > 0 THEN
		SET _rv = "Wordt niet uitgeleverd";	
	
	ELSEIF _gefactureerd = 1 THEN
		SET _rv = "Klaar om ingepakt te worden";
		
	ELSE 
		SET _rv = "Status onbekend";
		
	END IF;
	
	RETURN _rv;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `orderregel_geleverd` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `orderregel_geleverd`( myId INT ) RETURNS int(11)
    READS SQL DATA
    DETERMINISTIC
BEGIN
	DECLARE RV INT;
	SELECT IFNULL( SUM( Aantal ), 0 ) INTO RV FROM Bestellingen WHERE BackorderOrigineel = myId AND Geannuleerd = 0 AND Aantal > 0;
	RETURN RV;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `orderregel_op_wachten` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `orderregel_op_wachten`( myId INT ) RETURNS int(11)
    READS SQL DATA
    DETERMINISTIC
BEGIN
	DECLARE Aantal, AantalBackorder, Boekstatus, BeschikbareVoorraad, VoorraadBijBevestiging, VoorraadArtikel INT;
	DECLARE RV INT;
	
	SET RV = 0;
	
	SELECT IFNULL( C.Boekstatus, 98 ), Aantal, AantalBackorder, IFNULL( Bindwijze_voorraadartikel, 0 ) INTO Boekstatus,  Aantal, AantalBackorder, VoorraadArtikel
	   FROM Managementboek_Klanten.Bestellingen B 
	   LEFT JOIN Managementboek_Boeken.`Boeken` C USING ( Ean ) 
	   LEFT JOIN Managementboek_Boeken.`Bindwijze` W USING ( Bindwijze )
	   WHERE B.Id = myId;
	
	IF VoorraadArtikel = 1 AND AantalBackorder > 0 AND BoekStatus IN ( 99,1,2,5 ) THEN
		-- Niet wachten op nog niet verschenen boeken
		SET RV = 0;
	ELSEIF VoorraadArtikel = 0 THEN
		SET RV = 0;
	ELSEIF AantalBackorder <= 0 THEN
		-- Niet wachten op negatieve backorders (?wtf)
		SET RV = 0;	
	ELSE
		SET RV = 1;
	END IF;
	
	RETURN RV;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `orderregel_voorafgaand` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `orderregel_voorafgaand`( _id INT ) RETURNS int(11)
    READS SQL DATA
BEGIN
	DECLARE _Ean CHAR(13) CHARACTER SET latin1;
	DECLARE _DT DATETIME;
	DECLARE RV INT;
	
	SELECT Ean, A.DT INTO _Ean, _DT FROM Bestellingen JOIN BestellingAll A USING( BestellingId ) WHERE Id = _id;
	
	SELECT SUM( Aantal + AantalBackorder ) INTO RV FROM Bestellingen JOIN OrderregelStatusPlat USING ( Id ) JOIN BestellingAll A USING ( BestellingId )
	   WHERE vink_open = 1 
	   AND A.DT <= _DT 
	   AND Ean = _Ean
	   AND Id != _id;
	   
	RETURN IFNULL( RV, 0 );
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `OrderTekst` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `OrderTekst`( _id INT ) RETURNS varchar(255) CHARSET utf8
    READS SQL DATA
BEGIN
	DECLARE _rv VARCHAR(255);
	DECLARE _geannuleerd INT;
	DECLARE _gecrediteerd INT;
	DECLARE _kopgeannuleerd INT;
	DECLARE _backorders INT;
	DECLARE _geleverd INT;
	DECLARE _ingepakt INT;
	DECLARE _totaal INT;
	DECLARE _gefactureerd INT;
	DECLARE _geparkeerd INT;
	DECLARE _downloads INT;
	DECLARE _DTIngepakt DATE;
	DECLARE _bevestigd INT;
	DECLARE _regel INT;
	DECLARE _nietinpakken INT;
	DECLARE _afgesloten INT;
	DECLARE _totaal_nietgeannuleerd INT;
	DECLARE _levering_via_cb INT;
	DECLARE _DTlevering_via_cb DATE;
	
	SELECT COUNT(*) INTO _totaal FROM Bestellingen WHERE BestellingId = _id AND Ean NOT IN('bong','porto','ideal');
	SELECT COUNT(*) INTO _totaal_nietgeannuleerd FROM Bestellingen WHERE BestellingId = _id AND Geannuleerd=0;
	SELECT Geannuleerd, Afgerond INTO _kopgeannuleerd, _bevestigd FROM BestellingAll WHERE BestellingId = _id;
	SELECT COUNT(*) INTO _geannuleerd FROM Bestellingen A JOIN OrderregelStatusPlat B USING ( Id ) WHERE BestellingId = _id AND ( A.Geannuleerd = 1 OR B.geannuleerd = 1 );	
	SELECT COUNT(*) INTO _downloads FROM Bestellingen B JOIN OrderregelStatusPlat USING ( Id ) WHERE BestellingId = _id AND B.Geannuleerd = 0 AND kan_gedownload_worden = 1;
	SELECT COUNT(*) INTO _ingepakt  FROM Bestellingen B JOIN OrderregelStatusPlat USING ( Id ) WHERE BestellingId = _id AND B.Geannuleerd = 0 AND ingepakt = 1;
	SELECT COUNT(*) INTO _gefactureerd  FROM Bestellingen B JOIN OrderregelStatusPlat USING ( Id ) WHERE BestellingId = _id AND B.Geannuleerd = 0 AND gefactureerd = 1;
	SELECT COUNT(*) INTO _backorders FROM Bestellingen B JOIN OrderregelStatusPlat USING ( Id ) WHERE BestellingId = _id AND B.Geannuleerd = 0 AND ( ( in_backorder_gezet=1 AND uit_backorder_gehaald=0) OR AantalBackorder>0 ) AND _ingepakt = 0;
	SELECT MAX(DT)  INTO _DTIngepakt FROM BestellingStatus WHERE StatusId IN ( 15, 30 ) AND BestellingId = _id GROUP BY BestellingId;
	SELECT COUNT(*) INTO _gecrediteerd FROM BestellingStatus WHERE StatusId IN ( 29 ) AND BestellingId = _id GROUP BY BestellingId;
	SELECT COUNT(*) INTO _geparkeerd FROM BestellingStatus WHERE StatusId = 6 AND BestellingId = _id GROUP BY BestellingId;
	SELECT COUNT(*) INTO _nietinpakken FROM BestellingStatus WHERE StatusId = 32 AND BestellingId = _id GROUP BY BestellingId;
	SELECT COUNT(*) INTO _afgesloten FROM BestellingStatus WHERE StatusId = 33 AND BestellingId = _id GROUP BY BestellingId;
	SELECT COUNT(*) INTO _levering_via_cb FROM OrderkopStatusPlat WHERE BestellingId = _id AND leveren_via_cb=1;
		
	IF _bevestigd = 0 THEN
		SET _rv = "Order nog niet bevestigd";
	ELSEIF ( _totaal > 0 AND _geannuleerd = _totaal ) OR _kopgeannuleerd = 1 THEN
		SET _rv = "Geannuleerd";
	ELSEIF _gecrediteerd > 0 THEN
		SET _rv = "Gecrediteerd";		
	ELSEIF _ingepakt >= _totaal_nietgeannuleerd THEN
		SET _rv = CONCAT( "Volledig verzonden op ", IFNULL( DATE_FORMAT( _DTIngepakt, '%e-%c-%Y' ), 'onbekende datum' ) );
	ELSEIF _levering_via_cb = 1 THEN
		SELECT IF( CC.`VerzondenDoorCb`, CONCAT( 'Verzonden op ', DATE_FORMAT(DTVerzonden,'%d-%m-%Y') ), 
			CONCAT( 'Verwachte uitlevering op ', DATE_FORMAT( DATE_ADD( `DTPoging1`, INTERVAL 1 DAY ), '%d-%m-%Y') )
			) INTO _rv FROM CbOne.`Bestellingen` CC WHERE BestellingId = _id;		
	ELSEIF _geparkeerd = 1	THEN
		SET _rv = "In behandeling, neem contact met ons op voor meer informatie.";
	ELSEIF _downloads = _totaal THEN
		SET _rv = "Kan gedownload worden";
	ELSEIF _backorders = 0 AND _ingepakt = _totaal THEN
		SET _rv = CONCAT( "Volledig verzonden op ", DATE_FORMAT( _DTIngepakt, '%e-%c-%Y' ) );
	ELSEIF ( _backorders > 0 AND _ingepakt > 0 ) OR ( _ingepakt < _totaal AND _ingepakt > 0 ) THEN
		SET _rv = CONCAT( "Gedeeltelijk verzonden op ", DATE_FORMAT( _DTIngepakt, '%e-%c-%Y' ) );
	ELSEIF _afgesloten > 0 THEN
		SET _rv = "Afgesloten";
	ELSEIF _gefactureerd = 0 THEN
		SET _rv = "Bestelling bevestigd";		
	ELSEIF _nietinpakken > 0 THEN
		SET _rv = "Wordt niet uitgeleverd";
	ELSEIF _gefactureerd = _totaal THEN
		SET _rv = "Gereed om ingepakt te worden";		
	ELSEIF _totaal = 1 THEN
		SELECT Id INTO _regel FROM Bestellingen WHERE BestellingId = _id AND Geannuleerd = 0 AND Ean NOT IN('bong','porto','ideal');
		SET _rv = OrderregelTekst( _regel );
	ELSE
		SET _rv = "Status onbekend";
		
	END IF;
	RETURN _rv;
   END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `origineel_bestellingid` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `origineel_bestellingid`( iBestelling INT ) RETURNS int(11)
    READS SQL DATA
BEGIN
	DECLARE orig INT;
	DECLARE pre INT;
	SELECT OrigineelBestellingid INTO orig FROM BestellingAll WHERE BestellingId = iBestelling;
	
	IF orig > 0 THEN
		-- We hebben een gevuld bestellingId
		WHILE orig > 0 DO
			SET pre = orig;
			SELECT OrigineelBestellingid INTO orig FROM BestellingAll WHERE BestellingId = orig;
		END WHILE;
	
		SET orig = pre;	
	ELSE
		SET orig = iBestelling;
	END IF;
	
	RETURN orig;
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `verkochtsinds` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `verkochtsinds`( iEan char(13) CHARACTER SET latin1, iDT datetime ) RETURNS int(11)
    READS SQL DATA
BEGIN
	DECLARE rv INT;
	SELECT SUM( Aantal ) INTO rv FROM Bestellingen_zonder_backorders JOIN Bestelling USING ( BestellingId ) WHERE DT > iDT AND Ean = iEan;
	RETURN IFNULL( rv, 0 );
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `verkochtsinds_kk` */;
DELIMITER ;;
CREATE DEFINER=`sander`@`%` FUNCTION `verkochtsinds_kk`( iEan char(13) CHARACTER SET latin1, iDT datetime ) RETURNS int(11)
    READS SQL DATA
BEGIN
	DECLARE rv INT;
	SELECT SUM( Aantal ) INTO rv FROM Bestellingen_zonder_backorders JOIN Bestelling USING ( BestellingId ) JOIN BestellingenExtra USING ( Id ) WHERE DT > iDT AND Tag = 'kk' AND Ean = iEan;
	RETURN IFNULL( rv, 0 );
    END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `voorraad` */;
DELIMITER ;;
CREATE DEFINER=`pieter`@`%` FUNCTION `voorraad`(EanInput VARCHAR(13) CHARACTER SET latin1) RETURNS int(11)
    READS SQL DATA
BEGIN
	DECLARE huidigeVoorraad INT(11) DEFAULT 0;
	DECLARE aantalVoorraadRegels INT(11) DEFAULT 0;
    
	/* ophalen van de voorraad in laatste geregistreerde voorraadmutatie */	
	SELECT COUNT(*) INTO aantalVoorraadRegels FROM Voorraadmutaties WHERE `Ean`=EanInput;
	IF aantalVoorraadRegels > 0 THEN	 
		SELECT Voorraad INTO huidigeVoorraad FROM Voorraadmutaties WHERE `Ean`=EanInput ORDER BY DT DESC LIMIT 0,1;
	ELSE
		SET huidigeVoorraad = 0;
	END IF;
	
	RETURN huidigeVoorraad;	
    END ;;
DELIMITER ;
/*!50003 DROP PROCEDURE IF EXISTS `backorderregels` */;
DELIMITER ;;
CREATE DEFINER=`thijs`@`%` PROCEDURE `backorderregels`()
    READS SQL DATA
BEGIN
	-- READ COMMITTED heeft iets minder deadlock problematiek, maar leest ook iets minder consistent gedurende een transactie. Dit is in ons geval niet heel erg.
	SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
	START TRANSACTIOn;
	
	DROP TEMPORARY TABLE IF EXISTS tmp.Backorders;
	CREATE TEMPORARY TABLE tmp.Backorders ( BackorderOrigineel INT PRIMARY KEY, Geleverd INT ) ENGINE=MEMORY;
	INSERT INTO tmp.Backorders
		SELECT BackorderOrigineel, SUM( Aantal ) AS Geleverd
		FROM Bestellingen
		WHERE BackorderOrigineel > 0
			AND Aantal > 0
			AND Geannuleerd = 0
		GROUP BY BackorderOrigineel;
	
