Clieop03 bestanden genereren
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
http://www.pfz.nl/archief/1245473-clieop3-genereren/
http://www.twing.nl/dagtip/clieop03-class-voor-php
http://www.webhostingtalk.nl/billing-administratie-en-monitoring-systemen/63081-automation-software-clieop-3-ondersteuning.html
http://www.twing.nl/dagtip/clieop03-class-voor-php
http://www.webhostingtalk.nl/billing-administratie-en-monitoring-systemen/63081-automation-software-clieop-3-ondersteuning.html
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.
http://www.templatebuilding.com/support-files/clieop03.pdf
Makkelijker is het niet te maken denk ik.....
;-)
Deze al gelezen: Makkelijker is het niet te maken denk ik.....
;-)
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!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<?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);
}
?>
# 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);
}
?>
Gewijzigd op 04/03/2011 18:16:45 door Remco Borst