<?php
# Met dit script kun je een clieop03 bestand genereren, lees de comments goed en dan moet je er wel uit kunnen komen!
# Het script is om mee te testen, ik heb hem voorbereid om dynamisch records uit een database te lezen, aangegeven met:
# //--- Loop start en eind
#
# Gemaakt door: Remco Borst
# E-mail adres:
[email protected]
#
# Gemaakt aan de hand van deze handleiding:
http://www.equens.com/Images/CLIEOP%20NL.pdf
# Dit werk alleen voor nederlandse bankrekening nummers:
http://nl.wikipedia.org/wiki/Rekeningnummer
# Als de rekening nummers niet aan de "elfproef" voldoen zul je een error krijgen.
#
# De output is getest door de volgende validator:
http://www.banktools.nl/index.php?option=com_wrapper&view=wrapper&Itemid=54
# Ik of dit script is niet verantwoordelijk voor eventuele fouten en of problemen, gebruiken op eigen risico!
// Output instellingen
$clieop_file = true;
$browser_output = true;
// Bank + Script instellingen
$verwerkdatum = "040311"; // Datum wanneer het bestand moet worden verwerkt: ddmmjj
$transactiegroep = "00"; // 00 = Zakelijke betaling, 10 is incasso-opdrachten
$transactiesoort = "0008"; // Zie mogelijke instellingen hieronder:
#-----------------------------------------------------------------------------------------------------------------------------------------#
# TRANSACTIE SOORT
#
# 0000 = onzuivere crediteurenbetaling naar een rekeningnummer met maximaal 7 cijfers
# 0003 = onzuivere salarisbetaling naar een rekeningnummer met maximaal 7 cijfers
# 0005 = crediteurenbetaling naar een gewone rekening, of: zuivere crediteurenbetaling naar een rekeningnummer met maximaal 7 cijfers
# 0008 = salarisbetaling naar een gewone rekening, of: zuivere salarisbetaling naar een rekeningnummer met maximaal 7 cijfers
# 1001 = incasso ten laste van een gewone rekening, of: zuivere incasso ten laste van een rekeningnummer met maximaal 7 cijfers
# 1002 = onzuivere incasso ten laste van een rekeningnummer met maximaal 7 cijfers
# ( Deze instelling kan ook in een loop geplaatst worden als de transactie soort niet altijd hetzelfde is.. maar in mijn geval is deze voor iedereen hetzelfde. )
#
#-----------------------------------------------------------------------------------------------------------------------------------------#
$opdrachtgever_rekeningnummer = "195247035"; // Rekening nummer van de opdrachtgever ( het bedrijf waarvoor je werkt. )
$opdrachtgever_naam = "Gert Jan"; // Naam v.d. opdrachtgever
$naw_code = "1"; // 1 = Naam niet gewenst, 2 = Naam gewenst
$duplicaatcode = "1"; // 1 = unicaat, 2 is duplicaat .. gaat om of het een uniek bestand is of een kopie ervan ofzo..
$testcode = "T"; // T = test, P = productie
// Wegschrijf folder: ( zelf ff aanmaken met chmod 0777 )
$pad_naar_folder = $_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."clieop/";
//---------------------------------------------------Hieronder hoeven alleen de instellingen per transactie worden aangepast.-----------------------------------------------------//
// Even wat variabelen declareren.
$aantaltransacties = 0;
$totaalrekeningnummers = 0;
$totaalbedrag = 0.00;
if(strlen($opdrachtgever_naam)<35){ // opdrachtgever naam moet 35 tekens bevatten.
for($i=strlen($opdrachtgever_naam);$i<35;$i++){
$opdrachtgever_naam = $opdrachtgever_naam." ";
}
}
$opdrachtgever_rekeningnummer2 = str_replace('.','',$opdrachtgever_rekeningnummer);
$opdrachtgever_rekeningnummer = $opdrachtgever_rekeningnummer2;
if(strlen($opdrachtgever_rekeningnummer2)<10){ // rekeningnummer moet 10 nummers bevatten.
for($i=strlen($opdrachtgever_rekeningnummer2);$i<10;$i++){
$opdrachtgever_rekeningnummer2 = "0".$opdrachtgever_rekeningnummer2;
}
}
// XXXX is een opvulling, elke regel moet 50 karakters bevatten.
$clieopcode = "0001A".date('dmy')."CLIEOP03 ".$duplicatiecode."
0010B".$transactiegroep.$opdrachtgever_rekeningnummer2."0001EUR
0030B".$naw_code.$verwerkdatum.$opdrachtgever_naam.$testcode."
";
// Instellingen per transactie ( dit kan in een loop geplaatst worden )
// --- Loop start
$bedrag = 154.56; // Bedrag van de transactie ( een enkele transactie ) - Dit bedrag normaal weergeven, het script zal zorgen dat het het goede formaat is + omvormen naar centen.
$omschrijving = "Uitbetaling salaris"; // Toelichting op de post. Zet niet uw naam in de omschrijving - die ontvangt uw relatie automatisch van zijn bank
$begunstigde_rekeningnummer = "195247035"; // Rekening nummer van de persoon wie het bedrag moet ontvangen.
$begunstigde_naam = "Remco Borst"; // Naam van de persoon waar het geld heen gaat.
$begunstigde_woonplaats = "Vinkeveen"; // Woonplaats van de persoon waar het geld heen gaat.
$bedrag = (number_format($bedrag, 2, '.', '')*100); // Bedrag in centen
if(strlen($bedrag)<12){ // Bedrag moet 12 nummers bevatten.
for($i=strlen($bedrag);$i<12;$i++){
$bedrag = "0".$bedrag;
}
}
$begunstigde_rekeningnummer2 = str_replace('.','',$begunstigde_rekeningnummer);
$begunstigde_rekeningnummer = $begunstigde_rekeningnummer2;
if(strlen($begunstigde_rekeningnummer2)<10){ // rekeningnummer moet 10 nummers bevatten.
for($i=strlen($begunstigde_rekeningnummer2);$i<10;$i++){
$begunstigde_rekeningnummer2 = "0".$begunstigde_rekeningnummer2;
}
}
if(strlen($omschrijving)<32){ // omschrijving moet 32 karakters bevatten bevatten.
for($i=strlen($omschrijving);$i<32;$i++){
$omschrijving = $omschrijving." ";
}
}
if(strlen($begunstigde_naam)<35){ // naam begunstigde moet 35 karakters bevatten bevatten.
for($i=strlen($begunstigde_naam);$i<35;$i++){
$begunstigde_naam = $begunstigde_naam." ";
}
}
if(strlen($begunstigde_woonplaats)<45){ // woonplaats moet 45 karakters bevatten bevatten.
for($i=strlen($begunstigde_woonplaats);$i<45;$i++){
$begunstigde_woonplaats = $begunstigde_woonplaats." ";
}
}
// Achter sommige regels bevinden zich spaties, deze mogen niet verwijderd worden!
$clieopcode .= "0100A".$transactiesoort.$bedrag.$opdrachtgever_rekeningnummer2.$begunstigde_rekeningnummer2."
0160A".$omschrijving."
0170B".$begunstigde_naam."
0173B".$begunstigde_woonplaats."
";
$aantaltransacties++; // Tel het aantal transacties ( $aantaltransacties++; in de loop )
$totaalbedrag = $totaalbedrag + 154.56; // Bereken totaal bedrag in de loop.
$totaalrekeningnummers = $totaalrekeningnummers + ($opdrachtgever_rekeningnummer+$begunstigde_rekeningnummer); // Bereken totaal aantal rekening nummers in het clieop bestand.
// --- Loop eind
$totaalbedrag = (number_format($totaalbedrag, 2, '.', '')*100); // Totaal bedrag in centen.
if(strlen($totaalbedrag)<18){ // Totaal bedrag moet 18 nummers bevatten.
for($i=strlen($totaalbedrag);$i<18;$i++){
$totaalbedrag = "0".$totaalbedrag;
}
}
if(strlen($totaalrekeningnummers)<10){ // Totaal aantal rekeningnummers moet 10 nummers bevatten.
for($i=strlen($totaalrekeningnummers);$i<10;$i++){
$totaalrekeningnummers = "0".$totaalrekeningnummers;
}
}
else{
if(strlen($totaalrekeningnummers) !== 10){
$eind = strlen($totaalrekeningnummers);
$start = $eind - 10;
$totaalrekeningnummers = substr($totaalrekeningnummers,$start,$eind);
}
}
if(strlen($aantaltransacties)<7){ // Totaal aantal transacties moet 7 nummers bevatten.
for($i=strlen($aantaltransacties);$i<7;$i++){
$aantaltransacties = "0".$aantaltransacties;
}
}
$clieopcode .= "9990A".$totaalbedrag.$totaalrekeningnummers.$aantaltransacties."
9999A ";
$browsercode = nl2br(str_replace(' ',' ',$clieopcode));
// Output.
if($browser_output == true){
echo $browsercode;
}
if($clieop_file == true){
$filename = $pad_naar_folder.date('d-m-Y')."_".date('H:i:s')."_clieop03.cli";
if (!$handle = fopen($filename, 'w+')) {
echo "<br /><hr /><br />Er is iets fout gegeaan bij het openen van het bestand!"; exit;
}
if (fwrite($handle, $clieopcode) === FALSE) {
echo "<br /><hr /><br />Er is iets fout gegaan tijdens het wegschrijven in het bestand!";exit;
}
echo "<br /><hr /><br />Het bestand is succesvol weggeschreven in: ".$pad_naar_folder.date('d-m-Y')."_".date('His')."_clieop03.cli";
fclose($handle);
}
?>