Files
thetool/scripts/fibu-check/test-bmd-sepafile-sepa-data.php
2024-07-10 10:06:06 +02:00

117 lines
2.6 KiB
PHP

#!/usr/bin/php
<?php
//require 'vendor/autoload.php';
require("../../config/config.php");
define('FRONKDB_SQLDEBUG',false);
error_reporting(E_ALL & ~(E_NOTICE | E_STRICT | E_DEPRECATED));
require_once(LIBDIR."/mvcfronk/mfRouter/mfRouter.php");
require_once(LIBDIR."/mvcfronk/mfBase/mfBaseModel.php");
require_once(LIBDIR."/mvcfronk/mfBase/mfBaseController.php");
$me = new User(1);
$folder = __DIR__."/files/";
$csvname = "NTCS_Bankeinzug DT.xml";
$filename = $folder.$csvname;
$db = FronkDB::singleton();
$log = mfLoghandler::singleton();
$input = file_get_contents($filename);
$i = 0;
$l = 0;
$in_tx = false;
$rechnum = false;
$iban = false;
$bic = false;
$data = [];
foreach(explode("\n", $input) as $line) {
$line = trim($line);
if(preg_match('@</DrctDbtTxInf>@i', $line, $m)) {
$in_tx = false;
$rechnum = false;
$iban = false;
$bic = false;
$i++;
continue;
}
$m = [];
if(preg_match('@<DrctDbtTxInf>@i', $line, $m)) {
$in_tx = true;
continue;
}
if($in_tx) {
$m = [];
if(preg_match('@<EndToEndId>([a-z0-9-]+)</EndToEndId>@i', $line, $m)) {
$rechnum = $m[1];
}
if(preg_match('@<BIC>([a-z0-9-]+)</BIC>@i', $line, $m)) {
$bic = $m[1];
}
if(preg_match('@<IBAN>([a-z0-9-]+)</IBAN>@i', $line, $m)) {
$iban = $m[1];
}
if($rechnum && $bic && $iban) {
if(!array_key_exists($rechnum, $data)) {
$data[$rechnum] = [
"iban" => $iban,
"bic" => $bic
];
}
}
}
}
echo "$i input datensätze\n";
exit;
$i = 0;
foreach($data as $r => $d) {
//echo "$r ".$d["iban"]." ".$d["bic"]."\n";
$m = [];
if(!preg_match('/(RN2024-.+)/', $r, $m)) {
die("error");
}
$rechnum = $m[1];
$sepa_iban = strtoupper(str_replace(" ","", $d["iban"]));
$sepa_bic = strtoupper(str_replace(" ","", $d["bic"]));
$invoice = InvoiceModel::getFirst(["invoice_number" => $rechnum]);
if(!$invoice) {
die("$rechnum not found\n");
}
$address = new Address($invoice->billingaddress_id);
if(!$address) {
die("not billingaddress\n");
}
$tiban = strtoupper(str_replace(" ","", $address->bank_account_iban));
$tbic = strtoupper(str_replace(" ","", $address->bank_account_bic));
if($sepa_iban != $tiban) {
echo "$rechnum | tool iban: $tiban <> $sepa_iban\n";
}
if($sepa_bic != $tbic) {
echo "$rechnum | tool bic: $tbic <> $sepa_bic\n";
}
$i++;
}
echo "$i sepa daten verglichen\n";