clieop03.php
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;
}
}
// Een spatie 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;
}
}
// Een spatie 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);
}
?>