Hey,

Heeft iemand ervaring met het genereren van Clieop03 bestanden?
Dit is een bestand waarmee je een bulk betalingen kunt uitvoeren bij de bank.

Ik heb de handleiding gelezen maar ik kom er niet uit, ik kan nergens voorbeeld scripts vinden, alleen maar csv -> clieop03 converters online etc..

Hopelijk kan iemand mij hier antwoord op geven.. ik heb nu al 4 uur zitten zoeken op google en heb niets bruikbaars gevonden dat mij goed uitlegd hoe ik een bestand kan maken.

Groeten Remco
Bedankt voor je snelle reactie, maar helaas was ik zelf ook al zover gekomen.
Ik heb het script van PEAR gebruikt, hier werd wel een code mee gegenereerd, alleen ik snap helemaal niets van de codes, dat moet helaas wel als ik zelf een groot bestand wil genereren.

Voorbeeld van een Clieop03 file:

0001A030311CLIEOP03 68908
0010B0001234567890001EUR
0030B1030311Remco Borst P
0100A000500000000015001234567890359052347
0150A1234567812345678
0160ADonatie met betalingskenmerk 1,5
0160A0 EUR
0170BBanktools.nl
0173BGroningen
0100A000500000000025001234567890359052347
0150A1234567812345678
0160ADonatie 2,50 EUR
0170BBanktools.nl
0173BGroningen
0100A000500000000010001234567890000000555
0150A1234567812345678
0160ADonatie met betalingskenmerk naa
0160Ar giro 1,00 EUR
0170BBanktools.nl
0173BGroningen
0100A000800000000050001234567890000001232
0150A1234567812345678
0160ASalarisbetaling 5,00 EUR
0170BBanktools.nl
0173BGroningen
9990A00000000000000100012119336370000004
9999A


Al die vage codes staan voor iets.. en de handleiding legt dit niet duidelijk uit :(

Wat ik dus nodig zou hebben is een script zoals op www.banktools.nl waar ik mijn eigen csv kan genereren van mijn info in de db en dit kan omzetten, maar dat kan ik dus niet voor elkaar krijgen.
Hey, ik heb de manual al een keer doorgekeken inderdaad.

Ik ga denk ik wel even alle gegevens handmatig 1 voor 1 doornemen, ik denk niet dat iemand verder komt met onderzoeken dan dat ik al gevonden heb haha.

Mocht ik het makkelijker kunnen maken voor mensen zal ik hier wel ff een berichtje plaatsen! maar tips zijn nog altijd welkom.

Thnx!
<?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(' ','&nbsp;',$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);
}

?>

Reageren