Created
February 9, 2015 11:12
-
-
Save sheershoff/66a8e5ce58ae7e043d4b to your computer and use it in GitHub Desktop.
kl_to_1c format reader, with exporter to elba kontur format
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$i = 0; | |
$in = []; | |
$state['inDocSection'] = false; | |
function cmpget($l,$key){ | |
if(strncmp($l,$key,strlen($key))!==false){ | |
$v = substr($l,strlen($key)); | |
return ($v[0]=='=')?substr($v,1):$v; | |
}else{ | |
return false; | |
} | |
} | |
function get($line){ | |
$t = explode('=',$line); | |
$r['key'] = $t[0]; | |
unset($t[0]); | |
$r['value'] = implode('=',$t); | |
return $r; | |
} | |
$f=fopen('bank24_total_kl_to_1c.txt','r'); | |
while(($l = fgets($f))!==FALSE){ | |
$l = trim($l); | |
if($state['inDocSection']){ | |
if($l=='КонецДокумента'){ | |
$state['inDocSection'] = false; | |
if(@$in[$i]['ДатаПоступило']){ | |
// постобработка для простоты вывода | |
$in[$i]['Поступило'] = $in[$i]['Сумма']; | |
$in[$i]['РеквизитыКонтрагента'] = $in[$i]['ПлательщикСчет'].' в '.$in[$i]['ПлательщикБанк1']; | |
$in[$i]['РеквизитыНаши'] = $in[$i]['ПолучательСчет'].' в '.$in[$i]['ПолучательБанк1']; | |
$in[$i]['Контрагент'] = $in[$i]['Плательщик1']; | |
}else{ | |
$in[$i]['Списано'] = $in[$i]['Сумма']; | |
$in[$i]['РеквизитыКонтрагента'] = $in[$i]['ПолучательСчет'].' в '.$in[$i]['ПолучательБанк1']; | |
$in[$i]['РеквизитыНаши'] = $in[$i]['ПлательщикСчет'].' в '.$in[$i]['ПлательщикБанк1']; | |
$in[$i]['Контрагент'] = $in[$i]['Получатель1']; | |
} | |
if(($in[$i]['СекцияДокумент']=='Расчеты по банковским картам')){ | |
$in[$i]['СекцияДокумент'] = 'Платежное поручение'; | |
} | |
//print_r($in[$i]); | |
}else{ | |
$t = get($l); | |
$in[$i][$t['key']] = $t['value']; | |
} | |
}else{ | |
if($v = cmpget($l,'СекцияДокумент')){ | |
$state['inDocSection'] = true; | |
$i++; | |
$in[$i]['СекцияДокумент'] = $v; | |
} | |
} | |
} | |
fclose($f); | |
$columns = [ // kontur elba mode | |
['key' => 'Дата', 'q'=>true, 'suffix' => ''], | |
['key' => 'n/a', 'q'=>true, 'suffix' => 'Без группы'], | |
['key' => 'Контрагент', 'q'=>true, 'suffix' => ''], | |
['key' => 'n/a', 'q'=>true, 'suffix' => 'Банк'], | |
['key' => 'СекцияДокумент', 'q'=>true, 'suffix' => ''], | |
['key' => 'Номер', 'q'=>true, 'prefix' => '№ '], | |
['key' => 'Поступило', 'q'=>false, 'suffix' => 'р'], // поступило | |
['key' => 'Списано', 'q'=>false, 'suffix' => 'р'], // списано | |
['key' => 'n/a', 'q'=>false, 'prefix' => ''], // учитывается | |
['key' => 'НазначениеПлатежа', 'q'=>true, 'prefix' => ''], | |
['key' => 'РеквизитыКонтрагента', 'q'=>true, 'prefix' => ''], | |
['key' => 'РеквизитыНаши', 'q'=>true, 'prefix' => ''], | |
]; | |
echo "\n"; | |
for(;$i>=0;$i--){ | |
$r = $in[$i]; | |
$s = []; | |
$ss = ''; | |
foreach($columns as $k=>$v){ | |
$ss = @$v['prefix'].str_replace('"','""',@$r[$v['key']]).@$v['suffix']; | |
if($v['q']) $ss = '"'.$ss.'"'; | |
$s[]=$ss; | |
} | |
echo implode(',',$s)."\n"; | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment